diff options
2874 files changed, 41062 insertions, 23486 deletions
diff --git a/.appveyor.yml b/.appveyor.yml index aeee15e652..708961fd92 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -28,4 +28,4 @@ before_build: - SET "SCONS_CACHE=%SCONS_CACHE_ROOT%\master" build_script: -- scons platform=%GD_PLATFORM% target=%TARGET% tools=%TOOLS% verbose=yes progress=no +- scons platform=%GD_PLATFORM% target=%TARGET% tools=%TOOLS% verbose=yes progress=no gdnative_wrapper=yes diff --git a/.gitignore b/.gitignore index cbb0b5b133..f8296ef51e 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,10 @@ gmon.out .cproject .settings/ +# Geany/geany-plugins files +*.geany +.geanyprj + # Misc .DS_Store logs/ diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000000..aa2e0911ec --- /dev/null +++ b/.mailmap @@ -0,0 +1,29 @@ +Andrea Catania <info@andreacatania.com> +Andreas Haas <liu.gam3@gmail.com> +Andreas Haas <Hinsbart@users.noreply.github.com> +Andreas Haas <entenflugstuhl@gmail.com> +Ariel Manzur <ariel@godotengine.org> +Ariel Manzur <ariel@okamstudio.com> +Bastiaan Olij <mux213@gmail.com> +Bernhard Liebl <poke1024@gmx.de> +Bernhard Liebl <poke1024@gmx.org> +Geequlim <geequlim@gmail.com> +Hugo Locurcio <hugo.locurcio@hugo.pro> +Hugo Locurcio <hugo.locurcio@hugo.pro> <hugo.l@openmailbox.org> +Hugo Locurcio <hugo.locurcio@hugo.pro> <Calinou@users.noreply.github.com> +Ignacio Etcheverry <ignalfonsore@gmail.com> +Indah Sylvia <ISylvox@yahoo.com> +Jakub Grzesik <kubecz3k@gmail.com> +Juan Linietsky <reduzio@gmail.com> +Juan Linietsky <juan@okamstudio.com> +Juan Linietsky <reduz@Juans-MBP.fibertel.com.ar> +Julian Murgia <the.straton@gmail.com> +Leon Krause <eska@eska.me> +Leon Krause <eska@eska.me> <eska014@users.noreply.github.com> +Marcelo Fernandez <marcelofg55@gmail.com> +Mariano Javier Suligoy <marianognu.easyrpg@gmail.com> +Paul Batty <p_batty@hotmail.co.uk> +Poommetee Ketson <poommetee@protonmail.com> +Saracen <SaracenOne@gmail.com> +Thomas Herzog <therzog@mail.de> +Zher Huei Lee <lee.zh.92@gmail.com> diff --git a/.travis.yml b/.travis.yml index 0dfeaf16e1..9df2388b8e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -90,5 +90,5 @@ script: - if [ "$STATIC_CHECKS" = "yes" ]; then sh ./misc/travis/clang-format.sh; else - scons -j2 CC=$CC CXX=$CXX platform=$GODOT_TARGET TOOLS=$TOOLS verbose=yes progress=no openmp=no; + scons -j2 CC=$CC CXX=$CXX platform=$GODOT_TARGET TOOLS=$TOOLS verbose=yes progress=no openmp=no gdnative_wrapper=yes; fi diff --git a/AUTHORS.md b/AUTHORS.md index 9a373896f8..752300cb5b 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -60,11 +60,12 @@ name is available. Hiroshi Ogawa (hi-ogawa) Hubert Jarosz (Marqin) Hugo Locurcio (Calinou) - Ian (ianb96) + Ian Bishop (ianb96) Ignacio Etcheverry (neikeq) Indah Sylvia (ISylvox) J08nY Jakub Grzesik (kubecz3k) + Jérôme GULLY (Nutriz) Johan Manuel (29jm) Joshua Grams (JoshuaGrams) Juan Linietsky (reduz) @@ -100,6 +101,7 @@ name is available. Timo (toger5) V. Vamsi Krishna (vkbsb) Vinzenz Feenstra (vinzenz) + Wilhem Barbier (nounoursheureux) Will Nations (willnationsdev) Wilson E. Alvarez (Rubonnek) Yuri Roubinski (Chaosus) diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt index cea485a67b..bcfaf61664 100644 --- a/COPYRIGHT.txt +++ b/COPYRIGHT.txt @@ -122,13 +122,18 @@ License: Expat and Zlib Files: ./thirdparty/b2d_convexdecomp/ Comment: Box2D (ConvexDecomp) Copyright: 2007, Eric Jordan -Copyright: 2006-2009, Erin Catto + 2006-2009, Erin Catto +License: Zlib + +Files: ./thirdparty/bullet/ +Comment: Bullet Continuous Collision Detection and Physics Library +Copyright: 2003-2008, Erwin Coumans License: Zlib Files: ./thirdparty/certs/ca-certificates.crt -Comment: FIXME -Copyright: FIXME -License: FIXME +Comment: CA certificates +Copyright: Mozilla Contributors +License: MPL-2.0 Files: ./thirdparty/enet/ Comment: ENet @@ -152,8 +157,9 @@ License: OFL-1.1 Files: ./thirdparty/fonts/Hack_Regular.ttf Comment: Hack font -Copyright: 2015-2017, Christopher Simpkins (with Reserved Font Name Hack). -License: Hack Open Font License v2.0 +Copyright: 2017, Source Foundry Authors + 2003, Bitstream Inc. +License: Expat and Bitstream Vera Fonts Copyright Files: ./thirdparty/freetype/ Comment: The FreeType Project @@ -292,9 +298,14 @@ Comment: YUV2RGB Copyright: 2008-2011, Robin Watts License: BSD-2-clause +Files: ./thirdparty/nanosvg/ +Comment: NanoSVG +Copyright: 2013-2014, Mikko Mononen +License: Zlib + Files: ./thirdparty/openssl/ Comment: The OpenSSL Project -Copyright: 1998-2016, The OpenSSL Project. +Copyright: 1998-2017, The OpenSSL Project. License: OpenSSL Files: ./thirdparty/opus/ @@ -305,10 +316,11 @@ Copyright: 2001-2011, Xiph.Org, Skype Limited, Octasic, Erik de Castro Lopo License: BSD-3-clause -Files: ./thirdparty/nanosvg/ -Comment: NanoSVG -Copyright: 2013-2014, Mikko Mononen -License: Zlib +Files: ./thirdparty/pcre2/ +Comment: PCRE2 +Copyright: 1997-2017, University of Cambridge, + 2009-2017, Zoltan Herczeg +License: BSD-3-clause Files: ./thirdparty/pvrtccompressor/ Comment: PvrTcCompressor @@ -330,6 +342,11 @@ Comment: libSquish Copyright: 2006, Simon Brown License: Expat +Files: ./thirdparty/thekla_atlas/ +Comment: Thekla Atlas +Copyright: 2013, Thekla, Inc +License: Expat + Files: ./thirdparty/tinyexr/ Comment: TinyEXR Copyright: 2014-2017, Syoyo Fujita @@ -343,7 +360,7 @@ License: Zlib Files: ./thirdparty/zstd/ Comment: Zstandard -Copyright: 2016-2017, Facebook, Inc. +Copyright: 2016-2018, Facebook, Inc. License: BSD-3-Clause @@ -385,6 +402,48 @@ License: BSD-2-clause OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +License: Bitstream Vera Fonts Copyright + Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a + trademark of Bitstream, Inc. + . + Permission is hereby granted, free of charge, to any person obtaining a copy of + the fonts accompanying this license ("Fonts") and associated documentation + files (the "Font Software"), to reproduce and distribute the Font Software, + including without limitation the rights to use, copy, merge, publish, + distribute, and/or sell copies of the Font Software, and to permit persons to + whom the Font Software is furnished to do so, subject to the following + conditions: + . + The above copyright and trademark notices and this permission notice shall be + included in all copies of one or more of the Font Software typefaces. + . + The Font Software may be modified, altered, or added to, and in particular the + designs of glyphs or characters in the Fonts may be modified and additional + glyphs or characters may be added to the Fonts, only if the fonts are renamed + to names not containing either the words "Bitstream" or the word "Vera". + . + This License becomes null and void to the extent applicable to Fonts or Font + Software that has been modified and is distributed under the "Bitstream Vera" + names. + . + The Font Software may be sold as part of a larger software package but no copy + of one or more of the Font Software typefaces may be sold by itself. + . + THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, + TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, + SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO + USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + . + Except as contained in this notice, the names of GNOME, the GNOME Foundation, + and Bitstream Inc., shall not be used in advertising or otherwise to promote + the sale, use or other dealings in this Font Software without prior written + authorization from the GNOME Foundation or Bitstream Inc., respectively. For + further information, contact: fonts at gnome dot org. + License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -963,6 +1022,381 @@ License: ISC ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +License: MPL-2.0 + Mozilla Public License Version 2.0 + ================================== + . + 1. Definitions + -------------- + . + 1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + . + 1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + . + 1.3. "Contribution" + means Covered Software of a particular Contributor. + . + 1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + . + 1.5. "Incompatible With Secondary Licenses" + means + . + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + . + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + . + 1.6. "Executable Form" + means any form of the work other than Source Code Form. + . + 1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + . + 1.8. "License" + means this document. + . + 1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + . + 1.10. "Modifications" + means any of the following: + . + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + . + (b) any new file in Source Code Form that contains any Covered + Software. + . + 1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + . + 1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + . + 1.13. "Source Code Form" + means the form of the work preferred for making modifications. + . + 1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + . + 2. License Grants and Conditions + -------------------------------- + . + 2.1. Grants + . + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + . + (a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + . + (b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + . + 2.2. Effective Date + . + The licenses granted in Section 2.1 with respect to any Contribution + become effective for each Contribution on the date the Contributor first + distributes such Contribution. + . + 2.3. Limitations on Grant Scope + . + The licenses granted in this Section 2 are the only rights granted under + this License. No additional rights or licenses will be implied from the + distribution or licensing of Covered Software under this License. + Notwithstanding Section 2.1(b) above, no patent license is granted by a + Contributor: + . + (a) for any code that a Contributor has removed from Covered Software; + or + . + (b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + . + (c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + . + This License does not grant any rights in the trademarks, service marks, + or logos of any Contributor (except as may be necessary to comply with + the notice requirements in Section 3.4). + . + 2.4. Subsequent Licenses + . + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this + License (see Section 10.2) or under the terms of a Secondary License (if + permitted under the terms of Section 3.3). + . + 2.5. Representation + . + Each Contributor represents that the Contributor believes its + Contributions are its original creation(s) or it has sufficient rights + to grant the rights to its Contributions conveyed by this License. + . + 2.6. Fair Use + . + This License is not intended to limit any rights You have under + applicable copyright doctrines of fair use, fair dealing, or other + equivalents. + . + 2.7. Conditions + . + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted + in Section 2.1. + . + 3. Responsibilities + ------------------- + . + 3.1. Distribution of Source Form + . + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under + the terms of this License. You must inform recipients that the Source + Code Form of the Covered Software is governed by the terms of this + License, and how they can obtain a copy of this License. You may not + attempt to alter or restrict the recipients' rights in the Source Code + Form. + . + 3.2. Distribution of Executable Form + . + If You distribute Covered Software in Executable Form then: + . + (a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + . + (b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + . + 3.3. Distribution of a Larger Work + . + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for + the Covered Software. If the Larger Work is a combination of Covered + Software with a work governed by one or more Secondary Licenses, and the + Covered Software is not Incompatible With Secondary Licenses, this + License permits You to additionally distribute such Covered Software + under the terms of such Secondary License(s), so that the recipient of + the Larger Work may, at their option, further distribute the Covered + Software under the terms of either this License or such Secondary + License(s). + . + 3.4. Notices + . + You may not remove or alter the substance of any license notices + (including copyright notices, patent notices, disclaimers of warranty, + or limitations of liability) contained within the Source Code Form of + the Covered Software, except that You may alter any license notices to + the extent required to remedy known factual inaccuracies. + . + 3.5. Application of Additional Terms + . + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on + behalf of any Contributor. You must make it absolutely clear that any + such warranty, support, indemnity, or liability obligation is offered by + You alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + . + 4. Inability to Comply Due to Statute or Regulation + --------------------------------------------------- + . + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Software due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description must + be placed in a text file included with all distributions of the Covered + Software under this License. Except to the extent prohibited by statute + or regulation, such description must be sufficiently detailed for a + recipient of ordinary skill to be able to understand it. + . + 5. Termination + -------------- + . + 5.1. The rights granted under this License will terminate automatically + if You fail to comply with any of its terms. However, if You become + compliant, then the rights granted under this License from a particular + Contributor are reinstated (a) provisionally, unless and until such + Contributor explicitly and finally terminates Your grants, and (b) on an + ongoing basis, if such Contributor fails to notify You of the + non-compliance by some reasonable means prior to 60 days after You have + come back into compliance. Moreover, Your grants from a particular + Contributor are reinstated on an ongoing basis if such Contributor + notifies You of the non-compliance by some reasonable means, this is the + first time You have received notice of non-compliance with this License + from such Contributor, and You become compliant prior to 30 days after + Your receipt of the notice. + . + 5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, + counter-claims, and cross-claims) alleging that a Contributor Version + directly or indirectly infringes any patent, then the rights granted to + You by any and all Contributors for the Covered Software under Section + 2.1 of this License shall terminate. + . + 5.3. In the event of termination under Sections 5.1 or 5.2 above, all + end user license agreements (excluding distributors and resellers) which + have been validly granted by You or Your distributors under this License + prior to termination shall survive termination. + . + ************************************************************************ + * * + * 6. Disclaimer of Warranty * + * ------------------------- * + * * + * Covered Software is provided under this License on an "as is" * + * basis, without warranty of any kind, either expressed, implied, or * + * statutory, including, without limitation, warranties that the * + * Covered Software is free of defects, merchantable, fit for a * + * particular purpose or non-infringing. The entire risk as to the * + * quality and performance of the Covered Software is with You. * + * Should any Covered Software prove defective in any respect, You * + * (not any Contributor) assume the cost of any necessary servicing, * + * repair, or correction. This disclaimer of warranty constitutes an * + * essential part of this License. No use of any Covered Software is * + * authorized under this License except under this disclaimer. * + * * + ************************************************************************ + . + ************************************************************************ + * * + * 7. Limitation of Liability * + * -------------------------- * + * * + * Under no circumstances and under no legal theory, whether tort * + * (including negligence), contract, or otherwise, shall any * + * Contributor, or anyone who distributes Covered Software as * + * permitted above, be liable to You for any direct, indirect, * + * special, incidental, or consequential damages of any character * + * including, without limitation, damages for lost profits, loss of * + * goodwill, work stoppage, computer failure or malfunction, or any * + * and all other commercial damages or losses, even if such party * + * shall have been informed of the possibility of such damages. This * + * limitation of liability shall not apply to liability for death or * + * personal injury resulting from such party's negligence to the * + * extent applicable law prohibits such limitation. Some * + * jurisdictions do not allow the exclusion or limitation of * + * incidental or consequential damages, so this exclusion and * + * limitation may not apply to You. * + * * + ************************************************************************ + . + 8. Litigation + ------------- + . + Any litigation relating to this License may be brought only in the + courts of a jurisdiction where the defendant maintains its principal + place of business and such litigation shall be governed by laws of that + jurisdiction, without reference to its conflict-of-law provisions. + Nothing in this Section shall prevent a party's ability to bring + cross-claims or counter-claims. + . + 9. Miscellaneous + ---------------- + . + This License represents the complete agreement concerning the subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. Any law or regulation which provides + that the language of a contract shall be construed against the drafter + shall not be used to construe this License against a Contributor. + . + 10. Versions of the License + --------------------------- + . + 10.1. New Versions + . + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + . + 10.2. Effect of New Versions + . + You may distribute the Covered Software under the terms of the version + of the License under which You originally received the Covered Software, + or under the terms of any subsequent version published by the license + steward. + . + 10.3. Modified Versions + . + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a + modified version of this License if you rename the license and remove + any references to the name of the license steward (except to note that + such modified license differs from this License). + . + 10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses + . + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + . + Exhibit A - Source Code Form License Notice + ------------------------------------------- + . + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + . + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to look + for such a notice. + . + You may add additional accurate notices of copyright ownership. + . + Exhibit B - "Incompatible With Secondary Licenses" Notice + --------------------------------------------------------- + . + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. + License: OFL-1.1 PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide @@ -35,24 +35,24 @@ generous deed immortalized in the next stable release of Godot Engine. Pascal Julien Ruslan Mustakov Slobodan Milnovic + Stephan Lanfermann + Thomas Mathews ## Gold donors 3Dexplorer Alexander Otto - Andy Meier Asdf cheese65536 Jake Bo - Javier Manuele Finocchiaro Officine Pixel S.n.c. Rémi Verschelde - Stephan Lanfermann Zaven Muradyan Andreas Schüle Austen McRae + Benjamin Botwin Bernhard Liebl Cody Brocious Gerald E Butler @@ -72,7 +72,6 @@ generous deed immortalized in the next stable release of Godot Engine. Guilherme Felipe de C. G. da Silva Henrique Alves Laurence Bannister - Leo PrzemysÅ‚aw Gołąb (n-pigeon) Robert Willes Robin Arys @@ -97,11 +96,13 @@ generous deed immortalized in the next stable release of Godot Engine. François Cantin Giovanni Solimeno Jeppe Zapp + joe513 Justin Arnold Justo Delgado Baudà Leandro Voltolino Lucien Boudy - Noah + Markus Wiesner + Pablo Cholaky Patrick Schnorbus Pete Goodwin Ryan Estes @@ -112,16 +113,17 @@ generous deed immortalized in the next stable release of Godot Engine. ## Silver donors 1D_Inc - Abe Pazos Alder Stefano Alessandro Senese Alex Barsukov + Ãlvaro DomÃnguez López Andres Cuevas Anthony Bongiovanni Avencherus Bastian Böhm Ben Vercammen Blair Allen + Bryanna M Bryan Stevenson Casey Foote Christian Baune @@ -129,6 +131,7 @@ generous deed immortalized in the next stable release of Godot Engine. Collin Shooltz Daniel Egger Daniel Kaplan + Daniel Mircea David Cravens David May Diego Moreira Guimarães @@ -137,14 +140,13 @@ generous deed immortalized in the next stable release of Godot Engine. Fabian Becker fengjiongmax Francesco Lisi - Frank C. Simmons Fredy Romero Sam G3Dev sà rl Geequlim Gerrit Großkopf + Gilberto K. Otubo Guldoman HardRound - hatniX HeartBeast Heribert Hirth Hunter Jones @@ -152,13 +154,13 @@ generous deed immortalized in the next stable release of Godot Engine. Jeff Hungerford Jerry Chen Jesse Liles - joe513 Jonathon Josh 'Cheeseness' Bush Juan Negrier JuDelCo Julian Murgia Juraj Móza + Karonis KC Chan Kevin Boyer Kevin Kamper Meejach Petersen @@ -166,7 +168,6 @@ generous deed immortalized in the next stable release of Godot Engine. Linus Lind Lundgren Lisandro Lorea magodev - Markus Wiesner Martin Novák Matthew Fitzpatrick Matthias Hölzl @@ -174,9 +175,9 @@ generous deed immortalized in the next stable release of Godot Engine. memoryruins mhilbrunner Michael Gringauz - Michael Tintiuc Mikael Olsson MoM + monokrome Moritz Laass nee Neil Blakey-Milner @@ -191,16 +192,15 @@ generous deed immortalized in the next stable release of Godot Engine. PaweÅ‚ Kowal Pierre-Igor Berthet Pietro Vertechi - rayos Richman Stewart Rodolfo Baeza Roger Burgess Roger Smith Roman Tinkov - Sam Van Campenhout Sasori Olkof Scott D. Yelich Sootstone + Stephen Traskal Theo Cranmore Thomas Norman Tom Larrow diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index ddddc3a1a9..1ca0b3694c 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,9 +1,13 @@ +<!-- Please search existing issues for potential duplicates before filing yours: +https://github.com/godotengine/godot/issues?q=is%3Aissue +--> + **Godot version:** -<!-- If thirdparty or self-compiled, specify the build date or commit hash. --> +<!-- Specify commit hash if non-official. --> **OS/device including version:** -<!-- If graphics related, specify also GPU model and drivers. --> +<!-- Specify GPU model and drivers if graphics-related. --> **Issue description:** @@ -14,7 +18,4 @@ **Minimal reproduction project:** -<!-- Optional but greatly speeds up debugging. You can drag and drop a zip archive to upload it. --> - - -- [ ] I searched the existing [GitHub issues](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aissue+) for potential duplicates. +<!-- Recommended as it greatly speeds up debugging. Drag and drop a zip archive to upload it. --> diff --git a/SConstruct b/SConstruct index 88b29695cb..f71c6a397c 100644 --- a/SConstruct +++ b/SConstruct @@ -90,6 +90,7 @@ env_base.android_appattributes_chunk = "" env_base.disabled_modules = [] env_base.use_ptrcall = False env_base.split_drivers = False +env_base.split_modules = False env_base.module_version_string = "" # To decide whether to rebuild a file, use the MD5 sum only if the timestamp has changed. @@ -171,6 +172,7 @@ opts.Add(BoolVariable('dev', "If yes, alias for verbose=yes warnings=all", False opts.Add(EnumVariable('macports_clang', "Build using clang from MacPorts", 'no', ('no', '5.0', 'devel'))) # Thirdparty libraries +opts.Add(BoolVariable('builtin_bullet', "Use the builtin bullet library", True)) opts.Add(BoolVariable('builtin_enet', "Use the builtin enet library", True)) opts.Add(BoolVariable('builtin_freetype', "Use the builtin freetype library", True)) opts.Add(BoolVariable('builtin_libogg', "Use the builtin libogg library", True)) @@ -189,10 +191,12 @@ opts.Add(BoolVariable('builtin_zlib', "Use the builtin zlib library", True)) opts.Add(BoolVariable('builtin_zstd', "Use the builtin zstd library", True)) opts.Add(BoolVariable('no_editor_splash', "Don't use the custom splash screen for the editor", False)) -# Environment setup +# Compilation environment setup opts.Add("CXX", "C++ compiler") opts.Add("CC", "C compiler") -opts.Add("CCFLAGS", "Custom flags for the C and C++ compilers") +opts.Add("LINK", "Linker") +opts.Add("CCFLAGS", "Custom flags for both the C and C++ compilers") +opts.Add("CXXFLAGS", "Custom flags for the C++ compiler") opts.Add("CFLAGS", "Custom flags for the C compiler") opts.Add("LINKFLAGS", "Custom flags for the linker") @@ -286,6 +290,8 @@ if selected_platform in platform_list: basename = basename.replace('\\\\', '/') if os.path.isfile(basename + ".h"): env.vs_incs = env.vs_incs + [basename + ".h"] + elif os.path.isfile(basename + ".hpp"): + env.vs_incs = env.vs_incs + [basename + ".hpp"] if os.path.isfile(basename + ".c"): env.vs_srcs = env.vs_srcs + [basename + ".c"] elif os.path.isfile(basename + ".cpp"): @@ -495,7 +501,12 @@ node_count_interval = 1 node_pruning = 8 # Number of nodes to process before prunning the cache if ('env' in locals()): node_count_fname = str(env.Dir('#')) + '/.scons_node_count' -show_progress = env['progress'] +# Progress reporting is not available in non-TTY environments since it +# messes with the output (for example, when writing to a file) +if sys.stdout.isatty(): + show_progress = env['progress'] +else: + show_progress = False import time, math diff --git a/core/allocators.h b/core/allocators.h index 0d5989b4ab..e17ab298d6 100644 --- a/core/allocators.h +++ b/core/allocators.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ALLOCATORS_H #define ALLOCATORS_H diff --git a/core/array.cpp b/core/array.cpp index a333830d3a..c53fea1f28 100644 --- a/core/array.cpp +++ b/core/array.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "array.h" #include "hashfuncs.h" diff --git a/core/array.h b/core/array.h index 4aef4f49c5..7c6fc59048 100644 --- a/core/array.h +++ b/core/array.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ARRAY_H #define ARRAY_H diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index c1e33c1493..32b94b9b02 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "core_bind.h" #include "core/project_settings.h" @@ -70,7 +71,13 @@ Ref<ResourceInteractiveLoader> _ResourceLoader::load_interactive(const String &p RES _ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p_no_cache) { - RES ret = ResourceLoader::load(p_path, p_type_hint, p_no_cache); + Error err = OK; + RES ret = ResourceLoader::load(p_path, p_type_hint, p_no_cache, &err); + + if (err != OK) { + ERR_EXPLAIN("Error loading resource: '" + p_path + "'"); + ERR_FAIL_COND_V(err != OK, ret); + } return ret; } @@ -1122,6 +1129,22 @@ void _OS::_bind_methods() { ClassDB::bind_method(D_METHOD("get_power_seconds_left"), &_OS::get_power_seconds_left); ClassDB::bind_method(D_METHOD("get_power_percent_left"), &_OS::get_power_percent_left); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "clipboard"), "set_clipboard", "get_clipboard"); + 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, "low_processor_usage_mode"), "set_low_processor_usage_mode", "is_in_low_processor_usage_mode"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_screen_on"), "set_keep_screen_on", "is_keep_screen_on"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "screen_orientation", PROPERTY_HINT_ENUM, "Landscape,Portrait,Reverse Landscape,Reverse Portrait,Sensor Landscape,Sensor Portrait,Sensor"), "set_screen_orientation", "get_screen_orientation"); + ADD_GROUP("Window", "window_"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_borderless"), "set_borderless_window", "get_borderless_window"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_fullscreen"), "set_window_fullscreen", "is_window_fullscreen"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_maximized"), "set_window_maximized", "is_window_maximized"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_minimized"), "set_window_minimized", "is_window_minimized"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_resizable"), "set_window_resizable", "is_window_resizable"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "window_position"), "set_window_position", "get_window_position"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "window_size"), "set_window_size", "get_window_size"); + BIND_ENUM_CONSTANT(DAY_SUNDAY); BIND_ENUM_CONSTANT(DAY_MONDAY); BIND_ENUM_CONSTANT(DAY_TUESDAY); @@ -1801,6 +1824,8 @@ void _File::_bind_methods() { ClassDB::bind_method(D_METHOD("file_exists", "path"), &_File::file_exists); ClassDB::bind_method(D_METHOD("get_modified_time", "file"), &_File::get_modified_time); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "endian_swap"), "set_endian_swap", "get_endian_swap"); + BIND_ENUM_CONSTANT(READ); BIND_ENUM_CONSTANT(WRITE); BIND_ENUM_CONSTANT(READ_WRITE); @@ -2459,7 +2484,13 @@ Array _ClassDB::get_method_list(StringName p_class, bool p_no_inheritance) const Array ret; for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) { +#ifdef DEBUG_METHODS_ENABLED ret.push_back(E->get().operator Dictionary()); +#else + Dictionary dict; + dict["name"] = E->get().name; + ret.push_back(dict); +#endif } return ret; @@ -2554,7 +2585,7 @@ void _Engine::set_target_fps(int p_fps) { Engine::get_singleton()->set_target_fps(p_fps); } -float _Engine::get_target_fps() const { +int _Engine::get_target_fps() const { return Engine::get_singleton()->get_target_fps(); } @@ -2636,6 +2667,11 @@ void _Engine::_bind_methods() { ClassDB::bind_method(D_METHOD("set_editor_hint", "enabled"), &_Engine::set_editor_hint); ClassDB::bind_method(D_METHOD("is_editor_hint"), &_Engine::is_editor_hint); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_hint"), "set_editor_hint", "is_editor_hint"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "iterations_per_second"), "set_iterations_per_second", "get_iterations_per_second"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "target_fps"), "set_target_fps", "get_target_fps"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "time_scale"), "set_time_scale", "get_time_scale"); } _Engine *_Engine::singleton = NULL; diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index ed4111fea4..2353b6d09f 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CORE_BIND_H #define CORE_BIND_H @@ -655,7 +656,7 @@ public: int get_iterations_per_second() const; void set_target_fps(int p_fps); - float get_target_fps() const; + int get_target_fps() const; float get_frames_per_second() const; diff --git a/core/class_db.cpp b/core/class_db.cpp index 141bc1c5e2..d2cd362792 100644 --- a/core/class_db.cpp +++ b/core/class_db.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "class_db.h" #include "os/mutex.h" diff --git a/core/class_db.h b/core/class_db.h index c977068be1..14e36e459b 100644 --- a/core/class_db.h +++ b/core/class_db.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CLASS_DB_H #define CLASS_DB_H diff --git a/core/color.cpp b/core/color.cpp index 00a31dfdd8..a0568d26ed 100644 --- a/core/color.cpp +++ b/core/color.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "color.h" #include "color_names.inc" @@ -412,96 +413,95 @@ Color::operator String() const { Color Color::operator+(const Color &p_color) const { return Color( - CLAMP(r + p_color.r, 0.0, 1.0), - CLAMP(g + p_color.g, 0.0, 1.0), - CLAMP(b + p_color.b, 0.0, 1.0), - CLAMP(a + p_color.a, 0.0, 1.0)); + r + p_color.r, + g + p_color.g, + b + p_color.b, + a + p_color.a); } void Color::operator+=(const Color &p_color) { - r = CLAMP(r + p_color.r, 0.0, 1.0); - g = CLAMP(g + p_color.g, 0.0, 1.0); - b = CLAMP(b + p_color.b, 0.0, 1.0); - a = CLAMP(a + p_color.a, 0.0, 1.0); + r = r + p_color.r; + g = g + p_color.g; + b = b + p_color.b; + a = a + p_color.a; } Color Color::operator-(const Color &p_color) const { return Color( - CLAMP(r - p_color.r, 0.0, 1.0), - CLAMP(g - p_color.g, 0.0, 1.0), - CLAMP(b - p_color.b, 0.0, 1.0), - CLAMP(a - p_color.a, 0.0, 1.0)); + r - p_color.r, + g - p_color.g, + b - p_color.b, + a - p_color.a); } void Color::operator-=(const Color &p_color) { - r = CLAMP(r - p_color.r, 0.0, 1.0); - g = CLAMP(g - p_color.g, 0.0, 1.0); - b = CLAMP(b - p_color.b, 0.0, 1.0); - a = CLAMP(a - p_color.a, 0.0, 1.0); + r = r - p_color.r; + g = g - p_color.g; + b = b - p_color.b; + a = a - p_color.a; } Color Color::operator*(const Color &p_color) const { return Color( - CLAMP(r * p_color.r, 0.0, 1.0), - CLAMP(g * p_color.g, 0.0, 1.0), - CLAMP(b * p_color.b, 0.0, 1.0), - CLAMP(a * p_color.a, 0.0, 1.0)); + r * p_color.r, + g * p_color.g, + b * p_color.b, + a * p_color.a); } Color Color::operator*(const real_t &rvalue) const { return Color( - CLAMP(r * rvalue, 0.0, 1.0), - CLAMP(g * rvalue, 0.0, 1.0), - CLAMP(b * rvalue, 0.0, 1.0), - CLAMP(a * rvalue, 0.0, 1.0)); + r * rvalue, + g * rvalue, + b * rvalue, + a * rvalue); } void Color::operator*=(const Color &p_color) { - r = CLAMP(r * p_color.r, 0.0, 1.0); - g = CLAMP(g * p_color.g, 0.0, 1.0); - b = CLAMP(b * p_color.b, 0.0, 1.0); - a = CLAMP(a * p_color.a, 0.0, 1.0); + r = r * p_color.r; + g = g * p_color.g; + b = b * p_color.b; + a = a * p_color.a; } void Color::operator*=(const real_t &rvalue) { - r = CLAMP(r * rvalue, 0.0, 1.0); - g = CLAMP(g * rvalue, 0.0, 1.0); - b = CLAMP(b * rvalue, 0.0, 1.0); - a = CLAMP(a * rvalue, 0.0, 1.0); -}; + r = r * rvalue; + g = g * rvalue; + b = b * rvalue; + a = a * rvalue; +} Color Color::operator/(const Color &p_color) const { return Color( - p_color.r == 0 ? 1 : CLAMP(r / p_color.r, 0.0, 1.0), - p_color.g == 0 ? 1 : CLAMP(g / p_color.g, 0.0, 1.0), - p_color.b == 0 ? 1 : CLAMP(b / p_color.b, 0.0, 1.0), - p_color.a == 0 ? 1 : CLAMP(a / p_color.a, 0.0, 1.0)); + r / p_color.r, + g / p_color.g, + b / p_color.b, + a / p_color.a); } Color Color::operator/(const real_t &rvalue) const { - if (rvalue == 0) return Color(1.0, 1.0, 1.0, 1.0); return Color( - CLAMP(r / rvalue, 0.0, 1.0), - CLAMP(g / rvalue, 0.0, 1.0), - CLAMP(b / rvalue, 0.0, 1.0), - CLAMP(a / rvalue, 0.0, 1.0)); + r / rvalue, + g / rvalue, + b / rvalue, + a / rvalue); } void Color::operator/=(const Color &p_color) { - r = p_color.r == 0 ? 1 : CLAMP(r / p_color.r, 0.0, 1.0); - g = p_color.g == 0 ? 1 : CLAMP(g / p_color.g, 0.0, 1.0); - b = p_color.b == 0 ? 1 : CLAMP(b / p_color.b, 0.0, 1.0); - a = p_color.a == 0 ? 1 : CLAMP(a / p_color.a, 0.0, 1.0); + r = r / p_color.r; + g = g / p_color.g; + b = b / p_color.b; + a = a / p_color.a; } void Color::operator/=(const real_t &rvalue) { @@ -512,18 +512,18 @@ void Color::operator/=(const real_t &rvalue) { b = 1.0; a = 1.0; } else { - r = CLAMP(r / rvalue, 0.0, 1.0); - g = CLAMP(g / rvalue, 0.0, 1.0); - b = CLAMP(b / rvalue, 0.0, 1.0); - a = CLAMP(a / rvalue, 0.0, 1.0); + r = r / rvalue; + g = g / rvalue; + b = b / rvalue; + a = a / rvalue; } }; Color Color::operator-() const { return Color( - CLAMP(1.0 - r, 0.0, 1.0), - CLAMP(1.0 - g, 0.0, 1.0), - CLAMP(1.0 - b, 0.0, 1.0), - CLAMP(1.0 - a, 0.0, 1.0)); + 1.0 - r, + 1.0 - g, + 1.0 - b, + 1.0 - a); } diff --git a/core/color.h b/core/color.h index 70b0e1fea2..9af8fb0a78 100644 --- a/core/color.h +++ b/core/color.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLOR_H #define COLOR_H @@ -104,18 +105,18 @@ struct Color { _FORCE_INLINE_ Color darkened(float p_amount) const { Color res = *this; - res.r = CLAMP(res.r * (1.0f - p_amount), 0.0, 1.0); - res.g = CLAMP(res.g * (1.0f - p_amount), 0.0, 1.0); - res.b = CLAMP(res.b * (1.0f - p_amount), 0.0, 1.0); + res.r = res.r * (1.0f - p_amount); + res.g = res.g * (1.0f - p_amount); + res.b = res.b * (1.0f - p_amount); return res; } _FORCE_INLINE_ Color lightened(float p_amount) const { Color res = *this; - res.r = CLAMP(res.r + (1.0f - res.r) * p_amount, 0.0, 1.0); - res.g = CLAMP(res.g + (1.0f - res.g) * p_amount, 0.0, 1.0); - res.b = CLAMP(res.b + (1.0f - res.b) * p_amount, 0.0, 1.0); + res.r = res.r + (1.0f - res.r) * p_amount; + res.g = res.g + (1.0f - res.g) * p_amount; + res.b = res.b + (1.0f - res.b) * p_amount; return res; } diff --git a/core/command_queue_mt.cpp b/core/command_queue_mt.cpp index 8ce0ba7810..6bb3135757 100644 --- a/core/command_queue_mt.cpp +++ b/core/command_queue_mt.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "command_queue_mt.h" #include "os/os.h" diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h index e53ded6755..cecc9e405d 100644 --- a/core/command_queue_mt.h +++ b/core/command_queue_mt.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COMMAND_QUEUE_MT_H #define COMMAND_QUEUE_MT_H diff --git a/core/compressed_translation.cpp b/core/compressed_translation.cpp index b393b67d50..266d793af7 100644 --- a/core/compressed_translation.cpp +++ b/core/compressed_translation.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "compressed_translation.h" #include "pair.h" diff --git a/core/compressed_translation.h b/core/compressed_translation.h index bedd38d1bc..400fa4491b 100644 --- a/core/compressed_translation.h +++ b/core/compressed_translation.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COMPRESSED_TRANSLATION_H #define COMPRESSED_TRANSLATION_H diff --git a/core/core_string_names.cpp b/core/core_string_names.cpp index 7a9edcad46..ba596f7f16 100644 --- a/core/core_string_names.cpp +++ b/core/core_string_names.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "core_string_names.h" CoreStringNames *CoreStringNames::singleton = NULL; diff --git a/core/core_string_names.h b/core/core_string_names.h index f48692f470..dcbce14aac 100644 --- a/core/core_string_names.h +++ b/core/core_string_names.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CORE_STRING_NAMES_H #define CORE_STRING_NAMES_H diff --git a/core/dictionary.cpp b/core/dictionary.cpp index 72893c41f6..e3f4aa5f28 100644 --- a/core/dictionary.cpp +++ b/core/dictionary.cpp @@ -27,21 +27,17 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dictionary.h" #include "ordered_hash_map.h" #include "safe_refcount.h" #include "variant.h" -struct _DictionaryVariantHash { - - static _FORCE_INLINE_ uint32_t hash(const Variant &p_variant) { return p_variant.hash(); } -}; - struct DictionaryPrivate { SafeRefCount refcount; - OrderedHashMap<Variant, Variant, _DictionaryVariantHash> variant_map; + OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator> variant_map; }; void Dictionary::get_key_list(List<Variant> *p_keys) const { @@ -49,7 +45,7 @@ void Dictionary::get_key_list(List<Variant> *p_keys) const { if (_p->variant_map.empty()) return; - for (OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.front(); E; E = E.next()) { + for (OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.front(); E; E = E.next()) { p_keys->push_back(E.key()); } } @@ -65,7 +61,7 @@ const Variant &Dictionary::operator[](const Variant &p_key) const { } const Variant *Dictionary::getptr(const Variant &p_key) const { - OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::ConstElement E = ((const OrderedHashMap<Variant, Variant, _DictionaryVariantHash> *)&_p->variant_map)->find(p_key); + OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::ConstElement E = ((const OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator> *)&_p->variant_map)->find(p_key); if (!E) return NULL; @@ -74,7 +70,7 @@ const Variant *Dictionary::getptr(const Variant &p_key) const { Variant *Dictionary::getptr(const Variant &p_key) { - OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.find(p_key); + OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.find(p_key); if (!E) return NULL; @@ -83,7 +79,7 @@ Variant *Dictionary::getptr(const Variant &p_key) { Variant Dictionary::get_valid(const Variant &p_key) const { - OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::ConstElement E = ((const OrderedHashMap<Variant, Variant, _DictionaryVariantHash> *)&_p->variant_map)->find(p_key); + OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::ConstElement E = ((const OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator> *)&_p->variant_map)->find(p_key); if (!E) return Variant(); @@ -176,7 +172,7 @@ Array Dictionary::keys() const { return varr; int i = 0; - for (OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.front(); E; E = E.next()) { + for (OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.front(); E; E = E.next()) { varr[i] = E.key(); i++; } @@ -192,7 +188,7 @@ Array Dictionary::values() const { return varr; int i = 0; - for (OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.front(); E; E = E.next()) { + for (OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.front(); E; E = E.next()) { varr[i] = E.get(); i++; } @@ -208,7 +204,7 @@ const Variant *Dictionary::next(const Variant *p_key) const { return &_p->variant_map.front().key(); return NULL; } - OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.find(*p_key); + OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.find(*p_key); if (E && E.next()) return &E.next().key(); diff --git a/core/dictionary.h b/core/dictionary.h index 86f676fc38..f001f2d5e1 100644 --- a/core/dictionary.h +++ b/core/dictionary.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DICTIONARY_H #define DICTIONARY_H diff --git a/core/dvector.cpp b/core/dvector.cpp index 653c04b498..b679df55ad 100644 --- a/core/dvector.cpp +++ b/core/dvector.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dvector.h" Mutex *dvector_lock = NULL; diff --git a/core/dvector.h b/core/dvector.h index 492a4e0ed9..c0190fb9e3 100644 --- a/core/dvector.h +++ b/core/dvector.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DVECTOR_H #define DVECTOR_H diff --git a/core/engine.cpp b/core/engine.cpp index 4cadad1f6e..af9052110f 100644 --- a/core/engine.cpp +++ b/core/engine.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "engine.h" #include "version.h" diff --git a/core/engine.h b/core/engine.h index 2741d09b52..54b30ab81f 100644 --- a/core/engine.h +++ b/core/engine.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ENGINE_H #define ENGINE_H diff --git a/core/error_list.h b/core/error_list.h index 47233e39fe..6b9cd0016b 100644 --- a/core/error_list.h +++ b/core/error_list.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ERROR_LIST_H #define ERROR_LIST_H diff --git a/core/error_macros.cpp b/core/error_macros.cpp index 76be0756b8..5786802930 100644 --- a/core/error_macros.cpp +++ b/core/error_macros.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "error_macros.h" #include "io/logger.h" diff --git a/core/error_macros.h b/core/error_macros.h index 2bfa94b99e..1f9164a99b 100644 --- a/core/error_macros.h +++ b/core/error_macros.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ERROR_MACROS_H #define ERROR_MACROS_H diff --git a/core/func_ref.cpp b/core/func_ref.cpp index 98053808b4..c707f1c4cb 100644 --- a/core/func_ref.cpp +++ b/core/func_ref.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "func_ref.h" Variant FuncRef::call_func(const Variant **p_args, int p_argcount, Variant::CallError &r_error) { diff --git a/core/func_ref.h b/core/func_ref.h index 9f2df8cb5d..681fe747d6 100644 --- a/core/func_ref.h +++ b/core/func_ref.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FUNC_REF_H #define FUNC_REF_H diff --git a/core/global_constants.cpp b/core/global_constants.cpp index abe829420a..a24bf03c9a 100644 --- a/core/global_constants.cpp +++ b/core/global_constants.cpp @@ -10,7 +10,7 @@ /* */ /* 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 */ +/* "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 */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "global_constants.h" #include "object.h" diff --git a/core/global_constants.h b/core/global_constants.h index 09f93e34a2..76f618989c 100644 --- a/core/global_constants.h +++ b/core/global_constants.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GLOBAL_CONSTANTS_H #define GLOBAL_CONSTANTS_H diff --git a/core/hash_map.h b/core/hash_map.h index 1a4f879fea..2df743ba7d 100644 --- a/core/hash_map.h +++ b/core/hash_map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HASH_MAP_H #define HASH_MAP_H diff --git a/core/hashfuncs.h b/core/hashfuncs.h index 0725a7ebf6..ae99fa39c8 100644 --- a/core/hashfuncs.h +++ b/core/hashfuncs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HASHFUNCS_H #define HASHFUNCS_H diff --git a/core/helper/math_fieldwise.h b/core/helper/math_fieldwise.h index c883c44f84..0e7cc3ea4a 100644 --- a/core/helper/math_fieldwise.h +++ b/core/helper/math_fieldwise.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MATH_FIELDWISE_H #define MATH_FIELDWISE_H diff --git a/core/helper/value_evaluator.h b/core/helper/value_evaluator.h index 954d229517..39177a7820 100644 --- a/core/helper/value_evaluator.h +++ b/core/helper/value_evaluator.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VALUE_EVALUATOR_H #define VALUE_EVALUATOR_H diff --git a/core/image.cpp b/core/image.cpp index 11429b8782..07e705265d 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image.h" #include "core/io/image_loader.h" @@ -446,8 +447,6 @@ void Image::convert(Format p_new_format) { Image new_img(width, height, 0, p_new_format); - //int len=data.size(); - PoolVector<uint8_t>::Read r = data.read(); PoolVector<uint8_t>::Write w = new_img.data.write(); @@ -695,6 +694,11 @@ void Image::resize_to_po2(bool p_square) { void Image::resize(int p_width, int p_height, Interpolation p_interpolation) { + if (data.size() == 0) { + ERR_EXPLAIN("Cannot resize image before creating it, use create() or create_from_data() first."); + ERR_FAIL(); + } + if (!_can_modify(format)) { ERR_EXPLAIN("Cannot resize in indexed, compressed or custom image formats."); ERR_FAIL(); @@ -771,7 +775,7 @@ void Image::crop_from_point(int p_x, int p_y, int p_width, int p_height) { ERR_FAIL_COND(p_y + p_height > MAX_HEIGHT); /* to save memory, cropping should be done in-place, however, since this function - will most likely either not be used much, or in critical areas, for now it wont, because + will most likely either not be used much, or in critical areas, for now it won't, because it's a waste of time. */ if (p_width == width && p_height == height && p_x == 0 && p_y == 0) diff --git a/core/image.h b/core/image.h index 767f3c6ac5..e962787ae9 100644 --- a/core/image.h +++ b/core/image.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_H #define IMAGE_H diff --git a/core/input_map.cpp b/core/input_map.cpp index 7833aab3f3..a9ea1d9545 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "input_map.h" #include "os/keyboard.h" diff --git a/core/input_map.h b/core/input_map.h index 12ac1b339b..84d90f6f2a 100644 --- a/core/input_map.h +++ b/core/input_map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef INPUT_MAP_H #define INPUT_MAP_H diff --git a/core/io/compression.cpp b/core/io/compression.cpp index a4dbebe9f7..bc3bfcf356 100644 --- a/core/io/compression.cpp +++ b/core/io/compression.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "compression.h" #include "os/copymem.h" #include "project_settings.h" diff --git a/core/io/compression.h b/core/io/compression.h index 034c5ab708..a0ccd539cb 100644 --- a/core/io/compression.h +++ b/core/io/compression.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COMPRESSION_H #define COMPRESSION_H diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp index 9a013cb775..aa06ae5cc0 100644 --- a/core/io/config_file.cpp +++ b/core/io/config_file.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "config_file.h" #include "os/file_access.h" #include "os/keyboard.h" diff --git a/core/io/config_file.h b/core/io/config_file.h index 2168e654dd..ac749bed76 100644 --- a/core/io/config_file.h +++ b/core/io/config_file.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONFIG_FILE_H #define CONFIG_FILE_H diff --git a/core/io/file_access_buffered.cpp b/core/io/file_access_buffered.cpp index 442ab2c6e4..dcaf99e24a 100644 --- a/core/io/file_access_buffered.cpp +++ b/core/io/file_access_buffered.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_buffered.h" #include <string.h> diff --git a/core/io/file_access_buffered.h b/core/io/file_access_buffered.h index 2d6df5d48a..f4ed47d6bc 100644 --- a/core/io/file_access_buffered.h +++ b/core/io/file_access_buffered.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_BUFFERED_H #define FILE_ACCESS_BUFFERED_H diff --git a/core/io/file_access_buffered_fa.h b/core/io/file_access_buffered_fa.h index bb3d3f33f6..493fa1c243 100644 --- a/core/io/file_access_buffered_fa.h +++ b/core/io/file_access_buffered_fa.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_BUFFERED_FA_H #define FILE_ACCESS_BUFFERED_FA_H diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp index aabd70cc7b..d6547ba19f 100644 --- a/core/io/file_access_compressed.cpp +++ b/core/io/file_access_compressed.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_compressed.h" #include "print_string.h" void FileAccessCompressed::configure(const String &p_magic, Compression::Mode p_mode, int p_block_size) { diff --git a/core/io/file_access_compressed.h b/core/io/file_access_compressed.h index 65eefbcd97..587f58a7c6 100644 --- a/core/io/file_access_compressed.h +++ b/core/io/file_access_compressed.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_COMPRESSED_H #define FILE_ACCESS_COMPRESSED_H diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp index 67151f6934..221f457b78 100644 --- a/core/io/file_access_encrypted.cpp +++ b/core/io/file_access_encrypted.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_encrypted.h" #include "core/variant.h" diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h index 002a124e86..b9365a9fd0 100644 --- a/core/io/file_access_encrypted.h +++ b/core/io/file_access_encrypted.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_ENCRYPTED_H #define FILE_ACCESS_ENCRYPTED_H diff --git a/core/io/file_access_memory.cpp b/core/io/file_access_memory.cpp index 8812aa847e..1aa1e4a595 100644 --- a/core/io/file_access_memory.cpp +++ b/core/io/file_access_memory.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_memory.h" #include "map.h" diff --git a/core/io/file_access_memory.h b/core/io/file_access_memory.h index 1d438409cc..2136f4cc0c 100644 --- a/core/io/file_access_memory.h +++ b/core/io/file_access_memory.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_MEMORY_H #define FILE_ACCESS_MEMORY_H diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp index 1aa431dcae..ef886cdb3c 100644 --- a/core/io/file_access_network.cpp +++ b/core/io/file_access_network.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_network.h" #include "io/ip.h" #include "marshalls.h" @@ -82,7 +83,7 @@ int64_t FileAccessNetworkClient::get_64() { void FileAccessNetworkClient::_thread_func() { - client->set_nodelay(true); + client->set_no_delay(true); while (!quit) { DEBUG_PRINT("SEM WAIT - " + itos(sem->get())); diff --git a/core/io/file_access_network.h b/core/io/file_access_network.h index 4d8e8f1a9a..be9bdb1af6 100644 --- a/core/io/file_access_network.h +++ b/core/io/file_access_network.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_NETWORK_H #define FILE_ACCESS_NETWORK_H diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp index 318e3ad759..1a16d0f61c 100644 --- a/core/io/file_access_pack.cpp +++ b/core/io/file_access_pack.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_pack.h" #include "version.h" diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h index 6c5fec1498..8a40e6d78c 100644 --- a/core/io/file_access_pack.h +++ b/core/io/file_access_pack.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_PACK_H #define FILE_ACCESS_PACK_H diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp index c439ac7fa5..7b6385c3ff 100644 --- a/core/io/file_access_zip.cpp +++ b/core/io/file_access_zip.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef MINIZIP_ENABLED #include "file_access_zip.h" diff --git a/core/io/file_access_zip.h b/core/io/file_access_zip.h index b8f4a93e2a..df83575f6a 100644 --- a/core/io/file_access_zip.h +++ b/core/io/file_access_zip.h @@ -27,10 +27,11 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef MINIZIP_ENABLED -#ifndef FILE_ACCESS_Zip_H -#define FILE_ACCESS_Zip_H +#ifndef FILE_ACCESS_ZIP_H +#define FILE_ACCESS_ZIP_H #include "core/io/file_access_pack.h" #include "map.h" @@ -120,4 +121,4 @@ public: #endif // FILE_ACCESS_ZIP_H -#endif +#endif // MINIZIP_ENABLED diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp index 088c05dfae..a9eb9466b7 100644 --- a/core/io/http_client.cpp +++ b/core/io/http_client.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "http_client.h" #include "io/stream_peer_ssl.h" @@ -681,6 +682,9 @@ void HTTPClient::_bind_methods() { ClassDB::bind_method(D_METHOD("query_string_from_dict", "fields"), &HTTPClient::query_string_from_dict); + 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"); + BIND_ENUM_CONSTANT(METHOD_GET); BIND_ENUM_CONSTANT(METHOD_HEAD); BIND_ENUM_CONSTANT(METHOD_POST); diff --git a/core/io/http_client.h b/core/io/http_client.h index 0fcaf26fdb..839012e701 100644 --- a/core/io/http_client.h +++ b/core/io/http_client.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HTTP_CLIENT_H #define HTTP_CLIENT_H diff --git a/core/io/image_loader.cpp b/core/io/image_loader.cpp index c4cdb86c85..999c9a8ca2 100644 --- a/core/io/image_loader.cpp +++ b/core/io/image_loader.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader.h" #include "print_string.h" diff --git a/core/io/image_loader.h b/core/io/image_loader.h index b147566aed..052a8b8a40 100644 --- a/core/io/image_loader.h +++ b/core/io/image_loader.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_H #define IMAGE_LOADER_H diff --git a/core/io/ip.cpp b/core/io/ip.cpp index 9d55c5258f..66bd96df4f 100644 --- a/core/io/ip.cpp +++ b/core/io/ip.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ip.h" #include "hash_map.h" #include "os/semaphore.h" diff --git a/core/io/ip.h b/core/io/ip.h index 69a9b7fd67..d55b05b6fe 100644 --- a/core/io/ip.h +++ b/core/io/ip.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IP_H #define IP_H diff --git a/core/io/ip_address.cpp b/core/io/ip_address.cpp index 6495e0503d..7261363ad6 100644 --- a/core/io/ip_address.cpp +++ b/core/io/ip_address.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ip_address.h" /* IP_Address::operator Variant() const { diff --git a/core/io/ip_address.h b/core/io/ip_address.h index 7a1c1a17e6..d7b031b960 100644 --- a/core/io/ip_address.h +++ b/core/io/ip_address.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IP_ADDRESS_H #define IP_ADDRESS_H diff --git a/core/io/json.cpp b/core/io/json.cpp index 1cc44f8558..7b2c5a62df 100644 --- a/core/io/json.cpp +++ b/core/io/json.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "json.h" #include "print_string.h" diff --git a/core/io/json.h b/core/io/json.h index f47e0c42c4..9c12423798 100644 --- a/core/io/json.h +++ b/core/io/json.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JSON_H #define JSON_H diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp index 3bdd4454e1..9e21287780 100644 --- a/core/io/marshalls.cpp +++ b/core/io/marshalls.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "marshalls.h" #include "os/keyboard.h" #include "print_string.h" @@ -332,7 +333,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int len -= 12; buf += 12; - if (flags & 2) // Obsolete format with property seperate from subpath + if (flags & 2) // Obsolete format with property separate from subpath subnamecount++; uint32_t total = namecount + subnamecount; diff --git a/core/io/marshalls.h b/core/io/marshalls.h index b7ce1d39e2..381e4e3d20 100644 --- a/core/io/marshalls.h +++ b/core/io/marshalls.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MARSHALLS_H #define MARSHALLS_H diff --git a/core/io/networked_multiplayer_peer.cpp b/core/io/networked_multiplayer_peer.cpp index 95a2048b09..6354eef8b5 100644 --- a/core/io/networked_multiplayer_peer.cpp +++ b/core/io/networked_multiplayer_peer.cpp @@ -27,11 +27,13 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "networked_multiplayer_peer.h" void NetworkedMultiplayerPeer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_transfer_mode", "mode"), &NetworkedMultiplayerPeer::set_transfer_mode); + ClassDB::bind_method(D_METHOD("get_transfer_mode"), &NetworkedMultiplayerPeer::get_transfer_mode); ClassDB::bind_method(D_METHOD("set_target_peer", "id"), &NetworkedMultiplayerPeer::set_target_peer); ClassDB::bind_method(D_METHOD("get_packet_peer"), &NetworkedMultiplayerPeer::get_packet_peer); @@ -44,6 +46,9 @@ void NetworkedMultiplayerPeer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_refuse_new_connections", "enable"), &NetworkedMultiplayerPeer::set_refuse_new_connections); ClassDB::bind_method(D_METHOD("is_refusing_new_connections"), &NetworkedMultiplayerPeer::is_refusing_new_connections); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "refuse_new_connections"), "set_refuse_new_connections", "is_refusing_new_connections"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "transfer_mode", PROPERTY_HINT_ENUM, "Unreliable,Unreliable Ordered,Reliable"), "set_transfer_mode", "get_transfer_mode"); + BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE); BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE_ORDERED); BIND_ENUM_CONSTANT(TRANSFER_MODE_RELIABLE); diff --git a/core/io/networked_multiplayer_peer.h b/core/io/networked_multiplayer_peer.h index 3094aa8b99..66089c27b9 100644 --- a/core/io/networked_multiplayer_peer.h +++ b/core/io/networked_multiplayer_peer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NETWORKED_MULTIPLAYER_PEER_H #define NETWORKED_MULTIPLAYER_PEER_H @@ -57,6 +58,7 @@ public: }; virtual void set_transfer_mode(TransferMode p_mode) = 0; + virtual TransferMode get_transfer_mode() const = 0; virtual void set_target_peer(int p_peer_id) = 0; virtual int get_packet_peer() const = 0; diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp index 472f6296d2..bd851ebb6d 100644 --- a/core/io/packet_peer.cpp +++ b/core/io/packet_peer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "packet_peer.h" #include "io/marshalls.h" @@ -140,6 +141,8 @@ void PacketPeer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_allow_object_decoding", "enable"), &PacketPeer::set_allow_object_decoding); ClassDB::bind_method(D_METHOD("is_object_decoding_allowed"), &PacketPeer::is_object_decoding_allowed); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_object_decoding"), "set_allow_object_decoding", "is_object_decoding_allowed"); }; /***************/ @@ -152,11 +155,16 @@ void PacketPeerStream::_set_stream_peer(REF p_peer) { void PacketPeerStream::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_stream_peer", "peer"), &PacketPeerStream::_set_stream_peer); + ClassDB::bind_method(D_METHOD("set_stream_peer", "peer"), &PacketPeerStream::set_stream_peer); + ClassDB::bind_method(D_METHOD("get_stream_peer"), &PacketPeerStream::get_stream_peer); ClassDB::bind_method(D_METHOD("set_input_buffer_max_size", "max_size_bytes"), &PacketPeerStream::set_input_buffer_max_size); ClassDB::bind_method(D_METHOD("set_output_buffer_max_size", "max_size_bytes"), &PacketPeerStream::set_output_buffer_max_size); ClassDB::bind_method(D_METHOD("get_input_buffer_max_size"), &PacketPeerStream::get_input_buffer_max_size); ClassDB::bind_method(D_METHOD("get_output_buffer_max_size"), &PacketPeerStream::get_output_buffer_max_size); + + ADD_PROPERTY(PropertyInfo(Variant::INT, "input_buffer_max_size"), "set_input_buffer_max_size", "get_input_buffer_max_size"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "output_buffer_max_size"), "set_output_buffer_max_size", "get_output_buffer_max_size"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream_peer", PROPERTY_HINT_RESOURCE_TYPE, "StreamPeer", 0), "set_stream_peer", "get_stream_peer"); } Error PacketPeerStream::_poll_buffer() const { @@ -261,6 +269,11 @@ void PacketPeerStream::set_stream_peer(const Ref<StreamPeer> &p_peer) { peer = p_peer; } +Ref<StreamPeer> PacketPeerStream::get_stream_peer() const { + + return peer; +} + void PacketPeerStream::set_input_buffer_max_size(int p_max_size) { //warning may lose packets diff --git a/core/io/packet_peer.h b/core/io/packet_peer.h index 3e9373a18d..b10152e96b 100644 --- a/core/io/packet_peer.h +++ b/core/io/packet_peer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PACKET_PEER_H #define PACKET_PEER_H @@ -97,6 +98,7 @@ public: virtual int get_max_packet_size() const; void set_stream_peer(const Ref<StreamPeer> &p_peer); + Ref<StreamPeer> get_stream_peer() const; void set_input_buffer_max_size(int p_max_size); int get_input_buffer_max_size() const; void set_output_buffer_max_size(int p_max_size); diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp index 708c7d456c..bfbea15582 100644 --- a/core/io/packet_peer_udp.cpp +++ b/core/io/packet_peer_udp.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "packet_peer_udp.h" #include "io/ip.h" diff --git a/core/io/packet_peer_udp.h b/core/io/packet_peer_udp.h index d0a1bcf195..035f4ad1c9 100644 --- a/core/io/packet_peer_udp.h +++ b/core/io/packet_peer_udp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PACKET_PEER_UDP_H #define PACKET_PEER_UDP_H diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp index 13a36813ca..596060221e 100644 --- a/core/io/pck_packer.cpp +++ b/core/io/pck_packer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "pck_packer.h" #include "core/os/file_access.h" diff --git a/core/io/pck_packer.h b/core/io/pck_packer.h index e725155ed2..4fcf9a8822 100644 --- a/core/io/pck_packer.h +++ b/core/io/pck_packer.h @@ -27,6 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + +#ifndef PCK_PACKER_H +#define PCK_PACKER_H + #include "core/reference.h" class FileAccess; @@ -57,3 +61,5 @@ public: PCKPacker(); ~PCKPacker(); }; + +#endif // PCK_PACKER_H diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index d652720ad0..15c4835dc6 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_format_binary.h" #include "core/image.h" diff --git a/core/io/resource_format_binary.h b/core/io/resource_format_binary.h index 0329d02981..021f7f6a2f 100644 --- a/core/io/resource_format_binary.h +++ b/core/io/resource_format_binary.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_FORMAT_BINARY_H #define RESOURCE_FORMAT_BINARY_H diff --git a/core/io/resource_import.cpp b/core/io/resource_import.cpp index 8d21f41eab..cfe6655504 100644 --- a/core/io/resource_import.cpp +++ b/core/io/resource_import.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_import.h" #include "os/os.h" @@ -137,9 +138,9 @@ void ResourceFormatImporter::get_recognized_extensions(List<String> *p_extension Set<String> found; - for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) { + for (int i = 0; i < importers.size(); i++) { List<String> local_exts; - E->get()->get_recognized_extensions(&local_exts); + importers[i]->get_recognized_extensions(&local_exts); for (List<String>::Element *F = local_exts.front(); F; F = F->next()) { if (!found.has(F->get())) { p_extensions->push_back(F->get()); @@ -157,8 +158,8 @@ void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_ Set<String> found; - for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) { - String res_type = E->get()->get_resource_type(); + for (int i = 0; i < importers.size(); i++) { + String res_type = importers[i]->get_resource_type(); if (res_type == String()) continue; @@ -166,7 +167,7 @@ void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_ continue; List<String> local_exts; - E->get()->get_recognized_extensions(&local_exts); + importers[i]->get_recognized_extensions(&local_exts); for (List<String>::Element *F = local_exts.front(); F; F = F->next()) { if (!found.has(F->get())) { p_extensions->push_back(F->get()); @@ -211,9 +212,9 @@ int ResourceFormatImporter::get_import_order(const String &p_path) const { bool ResourceFormatImporter::handles_type(const String &p_type) const { - for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) { + for (int i = 0; i < importers.size(); i++) { - String res_type = E->get()->get_resource_type(); + String res_type = importers[i]->get_resource_type(); if (res_type == String()) continue; if (ClassDB::is_parent_class(res_type, p_type)) @@ -318,9 +319,9 @@ void ResourceFormatImporter::get_dependencies(const String &p_path, List<String> Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String &p_name) const { - for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) { - if (E->get()->get_importer_name() == p_name) { - return E->get(); + for (int i = 0; i < importers.size(); i++) { + if (importers[i]->get_importer_name() == p_name) { + return importers[i]; } } @@ -329,12 +330,12 @@ Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String void ResourceFormatImporter::get_importers_for_extension(const String &p_extension, List<Ref<ResourceImporter> > *r_importers) { - for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) { + for (int i = 0; i < importers.size(); i++) { List<String> local_exts; - E->get()->get_recognized_extensions(&local_exts); + importers[i]->get_recognized_extensions(&local_exts); for (List<String>::Element *F = local_exts.front(); F; F = F->next()) { if (p_extension.to_lower() == F->get()) { - r_importers->push_back(E->get()); + r_importers->push_back(importers[i]); } } } @@ -345,14 +346,14 @@ Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const St Ref<ResourceImporter> importer; float priority = 0; - for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) { + for (int i = 0; i < importers.size(); i++) { List<String> local_exts; - E->get()->get_recognized_extensions(&local_exts); + importers[i]->get_recognized_extensions(&local_exts); for (List<String>::Element *F = local_exts.front(); F; F = F->next()) { - if (p_extension.to_lower() == F->get() && E->get()->get_priority() > priority) { - importer = E->get(); - priority = E->get()->get_priority(); + if (p_extension.to_lower() == F->get() && importers[i]->get_priority() > priority) { + importer = importers[i]; + priority = importers[i]->get_priority(); } } } diff --git a/core/io/resource_import.h b/core/io/resource_import.h index 3583584092..80e0743eda 100644 --- a/core/io/resource_import.h +++ b/core/io/resource_import.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_IMPORT_H #define RESOURCE_IMPORT_H @@ -45,7 +46,7 @@ class ResourceFormatImporter : public ResourceFormatLoader { static ResourceFormatImporter *singleton; - Set<Ref<ResourceImporter> > importers; + Vector<Ref<ResourceImporter> > importers; public: static ResourceFormatImporter *get_singleton() { return singleton; } @@ -64,7 +65,7 @@ public: String get_internal_resource_path(const String &p_path) const; void get_internal_resource_path_list(const String &p_path, List<String> *r_paths); - void add_importer(const Ref<ResourceImporter> &p_importer) { importers.insert(p_importer); } + void add_importer(const Ref<ResourceImporter> &p_importer) { importers.push_back(p_importer); } void remove_importer(const Ref<ResourceImporter> &p_importer) { importers.erase(p_importer); } Ref<ResourceImporter> get_importer_by_name(const String &p_name) const; Ref<ResourceImporter> get_importer_by_extension(const String &p_extension) const; diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index 527e6997e1..1351030d1e 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_loader.h" #include "io/resource_import.h" #include "os/file_access.h" @@ -201,7 +202,8 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p if (OS::get_singleton()->is_stdout_verbose()) print_line("load resource: " + local_path + " (cached)"); - + if (r_error) + *r_error = OK; return RES(ResourceCache::get(local_path)); } diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index fad768778b..9be82abb42 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_LOADER_H #define RESOURCE_LOADER_H diff --git a/core/io/resource_saver.cpp b/core/io/resource_saver.cpp index 8a0ccd90ce..609dd7e93c 100644 --- a/core/io/resource_saver.cpp +++ b/core/io/resource_saver.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_saver.h" #include "os/file_access.h" #include "project_settings.h" diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h index fd4d563e4a..396f37d414 100644 --- a/core/io/resource_saver.h +++ b/core/io/resource_saver.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_SAVER_H #define RESOURCE_SAVER_H diff --git a/core/io/stream_peer.cpp b/core/io/stream_peer.cpp index b0fd229ac0..f6c4948fc3 100644 --- a/core/io/stream_peer.cpp +++ b/core/io/stream_peer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "stream_peer.h" #include "io/marshalls.h" @@ -374,18 +375,18 @@ void StreamPeer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_big_endian", "enable"), &StreamPeer::set_big_endian); ClassDB::bind_method(D_METHOD("is_big_endian_enabled"), &StreamPeer::is_big_endian_enabled); - ClassDB::bind_method(D_METHOD("put_8", "val"), &StreamPeer::put_8); - ClassDB::bind_method(D_METHOD("put_u8", "val"), &StreamPeer::put_u8); - ClassDB::bind_method(D_METHOD("put_16", "val"), &StreamPeer::put_16); - ClassDB::bind_method(D_METHOD("put_u16", "val"), &StreamPeer::put_u16); - ClassDB::bind_method(D_METHOD("put_32", "val"), &StreamPeer::put_32); - ClassDB::bind_method(D_METHOD("put_u32", "val"), &StreamPeer::put_u32); - ClassDB::bind_method(D_METHOD("put_64", "val"), &StreamPeer::put_64); - ClassDB::bind_method(D_METHOD("put_u64", "val"), &StreamPeer::put_u64); - ClassDB::bind_method(D_METHOD("put_float", "val"), &StreamPeer::put_float); - ClassDB::bind_method(D_METHOD("put_double", "val"), &StreamPeer::put_double); - ClassDB::bind_method(D_METHOD("put_utf8_string", "val"), &StreamPeer::put_utf8_string); - ClassDB::bind_method(D_METHOD("put_var", "val"), &StreamPeer::put_var); + ClassDB::bind_method(D_METHOD("put_8", "value"), &StreamPeer::put_8); + ClassDB::bind_method(D_METHOD("put_u8", "value"), &StreamPeer::put_u8); + ClassDB::bind_method(D_METHOD("put_16", "value"), &StreamPeer::put_16); + ClassDB::bind_method(D_METHOD("put_u16", "value"), &StreamPeer::put_u16); + ClassDB::bind_method(D_METHOD("put_32", "value"), &StreamPeer::put_32); + ClassDB::bind_method(D_METHOD("put_u32", "value"), &StreamPeer::put_u32); + ClassDB::bind_method(D_METHOD("put_64", "value"), &StreamPeer::put_64); + ClassDB::bind_method(D_METHOD("put_u64", "value"), &StreamPeer::put_u64); + ClassDB::bind_method(D_METHOD("put_float", "value"), &StreamPeer::put_float); + ClassDB::bind_method(D_METHOD("put_double", "value"), &StreamPeer::put_double); + ClassDB::bind_method(D_METHOD("put_utf8_string", "value"), &StreamPeer::put_utf8_string); + ClassDB::bind_method(D_METHOD("put_var", "value"), &StreamPeer::put_var); ClassDB::bind_method(D_METHOD("get_8"), &StreamPeer::get_8); ClassDB::bind_method(D_METHOD("get_u8"), &StreamPeer::get_u8); @@ -400,6 +401,8 @@ void StreamPeer::_bind_methods() { ClassDB::bind_method(D_METHOD("get_string", "bytes"), &StreamPeer::get_string); ClassDB::bind_method(D_METHOD("get_utf8_string", "bytes"), &StreamPeer::get_utf8_string); ClassDB::bind_method(D_METHOD("get_var"), &StreamPeer::get_var); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "big_endian"), "set_big_endian", "is_big_endian_enabled"); } //////////////////////////////// @@ -413,6 +416,8 @@ void StreamPeerBuffer::_bind_methods() { ClassDB::bind_method(D_METHOD("get_data_array"), &StreamPeerBuffer::get_data_array); ClassDB::bind_method(D_METHOD("clear"), &StreamPeerBuffer::clear); ClassDB::bind_method(D_METHOD("duplicate"), &StreamPeerBuffer::duplicate); + + ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data_array"), "set_data_array", "get_data_array"); } Error StreamPeerBuffer::put_data(const uint8_t *p_data, int p_bytes) { diff --git a/core/io/stream_peer.h b/core/io/stream_peer.h index 212bff0e3e..ff9ae788ec 100644 --- a/core/io/stream_peer.h +++ b/core/io/stream_peer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STREAM_PEER_H #define STREAM_PEER_H diff --git a/core/io/stream_peer_ssl.cpp b/core/io/stream_peer_ssl.cpp index f92b57a044..633b353102 100644 --- a/core/io/stream_peer_ssl.cpp +++ b/core/io/stream_peer_ssl.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "stream_peer_ssl.h" StreamPeerSSL *(*StreamPeerSSL::_create)() = NULL; diff --git a/core/io/stream_peer_ssl.h b/core/io/stream_peer_ssl.h index bb4d2edced..e4d14ebdfd 100644 --- a/core/io/stream_peer_ssl.h +++ b/core/io/stream_peer_ssl.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STREAM_PEER_SSL_H #define STREAM_PEER_SSL_H diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp index 0524a35908..5d008904ff 100644 --- a/core/io/stream_peer_tcp.cpp +++ b/core/io/stream_peer_tcp.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "stream_peer_tcp.h" StreamPeerTCP *(*StreamPeerTCP::_create)() = NULL; @@ -54,6 +55,7 @@ void StreamPeerTCP::_bind_methods() { ClassDB::bind_method(D_METHOD("get_connected_host"), &StreamPeerTCP::get_connected_host); ClassDB::bind_method(D_METHOD("get_connected_port"), &StreamPeerTCP::get_connected_port); ClassDB::bind_method(D_METHOD("disconnect_from_host"), &StreamPeerTCP::disconnect_from_host); + ClassDB::bind_method(D_METHOD("set_no_delay", "enabled"), &StreamPeerTCP::set_no_delay); BIND_ENUM_CONSTANT(STATUS_NONE); BIND_ENUM_CONSTANT(STATUS_CONNECTING); diff --git a/core/io/stream_peer_tcp.h b/core/io/stream_peer_tcp.h index 9a14f57c28..8a16d820f2 100644 --- a/core/io/stream_peer_tcp.h +++ b/core/io/stream_peer_tcp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STREAM_PEER_TCP_H #define STREAM_PEER_TCP_H @@ -64,7 +65,7 @@ public: virtual void disconnect_from_host() = 0; virtual IP_Address get_connected_host() const = 0; virtual uint16_t get_connected_port() const = 0; - virtual void set_nodelay(bool p_enabled) = 0; + virtual void set_no_delay(bool p_enabled) = 0; static Ref<StreamPeerTCP> create_ref(); static StreamPeerTCP *create(); diff --git a/core/io/tcp_server.cpp b/core/io/tcp_server.cpp index 5d33cd6f15..5916d58390 100644 --- a/core/io/tcp_server.cpp +++ b/core/io/tcp_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tcp_server.h" TCP_Server *(*TCP_Server::_create)() = NULL; diff --git a/core/io/tcp_server.h b/core/io/tcp_server.h index 28c80f76f7..a250e8b249 100644 --- a/core/io/tcp_server.h +++ b/core/io/tcp_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TCP_SERVER_H #define TCP_SERVER_H diff --git a/core/io/translation_loader_po.cpp b/core/io/translation_loader_po.cpp index 0f62dbeb94..e01e2a84c5 100644 --- a/core/io/translation_loader_po.cpp +++ b/core/io/translation_loader_po.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "translation_loader_po.h" #include "os/file_access.h" #include "translation.h" diff --git a/core/io/translation_loader_po.h b/core/io/translation_loader_po.h index 82a2da103f..33cf9bd8b4 100644 --- a/core/io/translation_loader_po.h +++ b/core/io/translation_loader_po.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TRANSLATION_LOADER_PO_H #define TRANSLATION_LOADER_PO_H diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp index a88150fa36..33c9b56d5a 100644 --- a/core/io/xml_parser.cpp +++ b/core/io/xml_parser.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "xml_parser.h" #include "print_string.h" //#define DEBUG_XML diff --git a/core/io/xml_parser.h b/core/io/xml_parser.h index 62d2d2bc94..297b57ffdc 100644 --- a/core/io/xml_parser.h +++ b/core/io/xml_parser.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef XML_PARSER_H #define XML_PARSER_H diff --git a/core/io/zip_io.h b/core/io/zip_io.h index d3c1d1fc57..3a7fdb0302 100644 --- a/core/io/zip_io.h +++ b/core/io/zip_io.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ZIP_IO_H #define ZIP_IO_H diff --git a/core/list.h b/core/list.h index 0c748aeb85..f977df4634 100644 --- a/core/list.h +++ b/core/list.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GLOBALS_LIST_H #define GLOBALS_LIST_H @@ -387,7 +388,7 @@ public: }; /** - * return wether the list is empty + * return whether the list is empty */ _FORCE_INLINE_ bool empty() const { diff --git a/core/map.h b/core/map.h index 1e47b42625..5ff269c26b 100644 --- a/core/map.h +++ b/core/map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MAP_H #define MAP_H diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp index cb90116d63..6908d7831d 100644 --- a/core/math/a_star.cpp +++ b/core/math/a_star.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "a_star.h" #include "geometry.h" #include "scene/scene_string_names.h" diff --git a/core/math/a_star.h b/core/math/a_star.h index 563f82826d..f89e17c7bb 100644 --- a/core/math/a_star.h +++ b/core/math/a_star.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ASTAR_H #define ASTAR_H diff --git a/core/math/aabb.cpp b/core/math/aabb.cpp index a6e5ced296..cff19f990c 100644 --- a/core/math/aabb.cpp +++ b/core/math/aabb.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "aabb.h" #include "print_string.h" diff --git a/core/math/aabb.h b/core/math/aabb.h index ff49337204..39b8f403e7 100644 --- a/core/math/aabb.h +++ b/core/math/aabb.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AABB_H #define AABB_H diff --git a/core/math/audio_frame.cpp b/core/math/audio_frame.cpp index d22b0f05f4..eff817bbaa 100644 --- a/core/math/audio_frame.cpp +++ b/core/math/audio_frame.cpp @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_frame.h" diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h index fd58848c0b..67ba025e1c 100644 --- a/core/math/audio_frame.h +++ b/core/math/audio_frame.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOFRAME_H #define AUDIOFRAME_H diff --git a/core/math/bsp_tree.cpp b/core/math/bsp_tree.cpp index 5d8ac000ad..b1424e1d78 100644 --- a/core/math/bsp_tree.cpp +++ b/core/math/bsp_tree.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "bsp_tree.h" #include "error_macros.h" #include "print_string.h" diff --git a/core/math/bsp_tree.h b/core/math/bsp_tree.h index 6a7b577fd0..fb16818ae7 100644 --- a/core/math/bsp_tree.h +++ b/core/math/bsp_tree.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BSP_TREE_H #define BSP_TREE_H diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp index 8714a07336..1ab9b3532e 100644 --- a/core/math/camera_matrix.cpp +++ b/core/math/camera_matrix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "camera_matrix.h" #include "math_funcs.h" #include "print_string.h" diff --git a/core/math/camera_matrix.h b/core/math/camera_matrix.h index 9dde244e58..226b4d572b 100644 --- a/core/math/camera_matrix.h +++ b/core/math/camera_matrix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CAMERA_MATRIX_H #define CAMERA_MATRIX_H diff --git a/core/math/face3.cpp b/core/math/face3.cpp index e76719f736..801f2a3b4d 100644 --- a/core/math/face3.cpp +++ b/core/math/face3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "face3.h" #include "geometry.h" diff --git a/core/math/face3.h b/core/math/face3.h index dd4cb25c82..faed0fa8d4 100644 --- a/core/math/face3.h +++ b/core/math/face3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FACE3_H #define FACE3_H diff --git a/core/math/geometry.cpp b/core/math/geometry.cpp index b2145eca85..24f077a4ca 100644 --- a/core/math/geometry.cpp +++ b/core/math/geometry.cpp @@ -27,9 +27,21 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "geometry.h" #include "print_string.h" +bool Geometry::is_point_in_polygon(const Vector2 &p_point, const Vector<Vector2> &p_polygon) { + + Vector<int> indices = Geometry::triangulate_polygon(p_polygon); + for (int j = 0; j + 3 <= indices.size(); j += 3) { + int i1 = indices[j], i2 = indices[j + 1], i3 = indices[j + 2]; + if (Geometry::is_point_in_triangle(p_point, p_polygon[i1], p_polygon[i2], p_polygon[i3])) + return true; + } + return false; +} + void Geometry::MeshData::optimize_vertices() { Map<int, int> vtx_remap; diff --git a/core/math/geometry.h b/core/math/geometry.h index ac1a22289c..ca4363e129 100644 --- a/core/math/geometry.h +++ b/core/math/geometry.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GEOMETRY_H #define GEOMETRY_H @@ -512,6 +513,9 @@ public: return true; } + + static bool is_point_in_polygon(const Vector2 &p_point, const Vector<Vector2> &p_polygon); + static Vector2 get_closest_point_to_segment_uncapped_2d(const Vector2 &p_point, const Vector2 *p_segment) { Vector2 p = p_point - p_segment[0]; diff --git a/core/math/math_2d.cpp b/core/math/math_2d.cpp index 2c83bc1976..d2e4101999 100644 --- a/core/math/math_2d.cpp +++ b/core/math/math_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "math_2d.h" real_t Vector2::angle() const { diff --git a/core/math/math_2d.h b/core/math/math_2d.h index 32e1bb9152..8928349a44 100644 --- a/core/math/math_2d.h +++ b/core/math/math_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MATH_2D_H #define MATH_2D_H diff --git a/core/math/math_defs.h b/core/math/math_defs.h index e260bcd54f..d3484d8d02 100644 --- a/core/math/math_defs.h +++ b/core/math/math_defs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MATH_DEFS_H #define MATH_DEFS_H diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp index 1025e8be75..f060a8e4ab 100644 --- a/core/math/math_funcs.cpp +++ b/core/math/math_funcs.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "math_funcs.h" #include "core/os/os.h" diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h index d2d49d85d6..e15abc6b50 100644 --- a/core/math/math_funcs.h +++ b/core/math/math_funcs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MATH_FUNCS_H #define MATH_FUNCS_H diff --git a/core/math/matrix3.cpp b/core/math/matrix3.cpp index e1708a44b0..189b1ef9b3 100644 --- a/core/math/matrix3.cpp +++ b/core/math/matrix3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "matrix3.h" #include "math_funcs.h" #include "os/copymem.h" @@ -228,12 +229,24 @@ void Basis::scale(const Vector3 &p_scale) { } Basis Basis::scaled(const Vector3 &p_scale) const { - Basis m = *this; m.scale(p_scale); return m; } +void Basis::scale_local(const Vector3 &p_scale) { + // performs a scaling in object-local coordinate system: + // M -> (M.S.Minv).M = M.S. + *this = scaled_local(p_scale); +} + +Basis Basis::scaled_local(const Vector3 &p_scale) const { + Basis b; + b.set_scale(p_scale); + + return (*this) * b; +} + void Basis::set_scale(const Vector3 &p_scale) { set_axis(0, get_axis(0).normalized() * p_scale.x); @@ -312,7 +325,8 @@ void Basis::rotate(const Vector3 &p_axis, real_t p_phi) { } void Basis::rotate_local(const Vector3 &p_axis, real_t p_phi) { - + // performs a rotation in object-local coordinate system: + // M -> (M.R.Minv).M = M.R. *this = rotated_local(p_axis, p_phi); } Basis Basis::rotated_local(const Vector3 &p_axis, real_t p_phi) const { diff --git a/core/math/matrix3.h b/core/math/matrix3.h index 71971bdea8..c426435729 100644 --- a/core/math/matrix3.h +++ b/core/math/matrix3.h @@ -103,6 +103,9 @@ public: void scale(const Vector3 &p_scale); Basis scaled(const Vector3 &p_scale) const; + void scale_local(const Vector3 &p_scale); + Basis scaled_local(const Vector3 &p_scale) const; + void set_scale(const Vector3 &p_scale); Vector3 get_scale() const; Vector3 get_signed_scale() const; diff --git a/core/math/octree.h b/core/math/octree.h index c874d60894..4e3d6257f0 100644 --- a/core/math/octree.h +++ b/core/math/octree.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OCTREE_H #define OCTREE_H @@ -611,7 +612,7 @@ bool Octree<T, use_pairs, AL>::_remove_element_from_octant(Element *p_element, O bool unpaired = false; if (use_pairs && p_octant->last_pass != pass) { - // check wether we should unpair stuff + // check whether we should unpair stuff // always test pairable typename List<Element *, AL>::Element *E = p_octant->pairable_elements.front(); while (E) { diff --git a/core/math/plane.cpp b/core/math/plane.cpp index c4e2f04fa6..78bb1771a4 100644 --- a/core/math/plane.cpp +++ b/core/math/plane.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "plane.h" #include "math_funcs.h" diff --git a/core/math/plane.h b/core/math/plane.h index 5497fde592..e567422dd0 100644 --- a/core/math/plane.h +++ b/core/math/plane.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PLANE_H #define PLANE_H diff --git a/core/math/quat.cpp b/core/math/quat.cpp index 5706848b35..9aa8b537d2 100644 --- a/core/math/quat.cpp +++ b/core/math/quat.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "quat.h" #include "matrix3.h" #include "print_string.h" diff --git a/core/math/quick_hull.cpp b/core/math/quick_hull.cpp index e13f2e9c18..102e454e02 100644 --- a/core/math/quick_hull.cpp +++ b/core/math/quick_hull.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "quick_hull.h" #include "map.h" diff --git a/core/math/quick_hull.h b/core/math/quick_hull.h index 40f601536f..eef4a9adff 100644 --- a/core/math/quick_hull.h +++ b/core/math/quick_hull.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef QUICK_HULL_H #define QUICK_HULL_H diff --git a/core/math/transform.cpp b/core/math/transform.cpp index ffad8cfc41..f727d00e30 100644 --- a/core/math/transform.cpp +++ b/core/math/transform.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "transform.h" #include "math_funcs.h" #include "os/copymem.h" diff --git a/core/math/transform.h b/core/math/transform.h index e5bc7832a0..c06eaec604 100644 --- a/core/math/transform.h +++ b/core/math/transform.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TRANSFORM_H #define TRANSFORM_H diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp index 6138abc6b9..edd4ad3441 100644 --- a/core/math/triangle_mesh.cpp +++ b/core/math/triangle_mesh.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "triangle_mesh.h" #include "sort.h" diff --git a/core/math/triangle_mesh.h b/core/math/triangle_mesh.h index 4687b0e91b..9f145f2afb 100644 --- a/core/math/triangle_mesh.h +++ b/core/math/triangle_mesh.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TRIANGLE_MESH_H #define TRIANGLE_MESH_H diff --git a/core/math/triangulate.cpp b/core/math/triangulate.cpp index ff65142341..957e16f92c 100644 --- a/core/math/triangulate.cpp +++ b/core/math/triangulate.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "triangulate.h" real_t Triangulate::get_area(const Vector<Vector2> &contour) { diff --git a/core/math/triangulate.h b/core/math/triangulate.h index 01b4a50a3e..e336dc5756 100644 --- a/core/math/triangulate.h +++ b/core/math/triangulate.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TRIANGULATE_H #define TRIANGULATE_H diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp index 02140bc337..78d52d5cd1 100644 --- a/core/math/vector3.cpp +++ b/core/math/vector3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "vector3.h" #include "matrix3.h" diff --git a/core/math/vector3.h b/core/math/vector3.h index 17dbdafbd4..10ec4f5641 100644 --- a/core/math/vector3.h +++ b/core/math/vector3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VECTOR3_H #define VECTOR3_H diff --git a/core/message_queue.cpp b/core/message_queue.cpp index b7b8827f4a..3ceafe1a30 100644 --- a/core/message_queue.cpp +++ b/core/message_queue.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "message_queue.h" #include "project_settings.h" diff --git a/core/message_queue.h b/core/message_queue.h index 7312f0e1e4..be5ffe4fae 100644 --- a/core/message_queue.h +++ b/core/message_queue.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MESSAGE_QUEUE_H #define MESSAGE_QUEUE_H diff --git a/core/method_bind.cpp b/core/method_bind.cpp index 4022b22ffe..52ee9e0848 100644 --- a/core/method_bind.cpp +++ b/core/method_bind.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + // object.h needs to be the first include *before* method_bind.h // FIXME: Find out why and fix potential cyclical dependencies. #include "object.h" diff --git a/core/method_bind.h b/core/method_bind.h index aaf3640ce9..e02d64c935 100644 --- a/core/method_bind.h +++ b/core/method_bind.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef METHOD_BIND_H #define METHOD_BIND_H @@ -242,7 +243,7 @@ public: PropertyInfo get_argument_info(int p_argument) const; PropertyInfo get_return_info() const; - void set_argument_names(const Vector<StringName> &p_names); //set by class, db, cant be inferred otherwise + void set_argument_names(const Vector<StringName> &p_names); //set by class, db, can't be inferred otherwise Vector<StringName> get_argument_names() const; #endif diff --git a/core/method_ptrcall.h b/core/method_ptrcall.h index 1fe0cf0bc0..2007c3def5 100644 --- a/core/method_ptrcall.h +++ b/core/method_ptrcall.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef METHOD_PTRCALL_H #define METHOD_PTRCALL_H diff --git a/core/node_path.cpp b/core/node_path.cpp index abde887b35..cd7ad77534 100644 --- a/core/node_path.cpp +++ b/core/node_path.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "node_path.h" #include "print_string.h" diff --git a/core/node_path.h b/core/node_path.h index af134e8409..288f39721f 100644 --- a/core/node_path.h +++ b/core/node_path.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NODE_PATH_H #define NODE_PATH_H diff --git a/core/oa_hash_map.h b/core/oa_hash_map.h index 308624dcc3..280aea6a14 100644 --- a/core/oa_hash_map.h +++ b/core/oa_hash_map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OA_HASH_MAP_H #define OA_HASH_MAP_H @@ -35,7 +36,7 @@ #include "os/copymem.h" #include "os/memory.h" -// uncomment this to disable intial local storage. +// uncomment this to disable initial local storage. #define OA_HASH_MAP_INITIAL_LOCAL_STORAGE /** diff --git a/core/object.cpp b/core/object.cpp index 2e3196dc47..aaa37e6cf2 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "object.h" #include "class_db.h" @@ -604,11 +605,11 @@ void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) cons p_list->push_back(PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, "Script", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_STORE_IF_NONZERO)); #ifdef TOOLS_ENABLED if (editor_section_folding.size()) { - p_list->push_back(PropertyInfo(Variant::ARRAY, CoreStringNames::get_singleton()->_sections_unfolded, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::ARRAY, CoreStringNames::get_singleton()->_sections_unfolded, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } #endif if (!metadata.empty()) - p_list->push_back(PropertyInfo(Variant::DICTIONARY, "__meta__", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_STORE_IF_NONZERO)); + p_list->push_back(PropertyInfo(Variant::DICTIONARY, "__meta__", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_STORE_IF_NONZERO)); if (script_instance && !p_reversed) { p_list->push_back(PropertyInfo(Variant::NIL, "Script Variables", PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY)); script_instance->get_property_list(p_list); diff --git a/core/object.h b/core/object.h index 635c599154..8306b5a356 100644 --- a/core/object.h +++ b/core/object.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OBJECT_H #define OBJECT_H @@ -85,6 +86,7 @@ enum PropertyHint { PROPERTY_HINT_PROPERTY_OF_SCRIPT, ///< a property of a script & base PROPERTY_HINT_OBJECT_TOO_BIG, ///< object is too big to send PROPERTY_HINT_MAX, + // When updating PropertyHint, also sync the hardcoded list in VisualScriptEditorVariableEdit }; enum PropertyUsageFlags { @@ -110,10 +112,11 @@ enum PropertyUsageFlags { PROPERTY_USAGE_CLASS_IS_ENUM = 1 << 18, PROPERTY_USAGE_NIL_IS_VARIANT = 1 << 19, PROPERTY_USAGE_INTERNAL = 1 << 20, + PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE = 1 << 21, // If the object is duplicated also this property will be duplicated PROPERTY_USAGE_DEFAULT = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK, PROPERTY_USAGE_DEFAULT_INTL = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK | PROPERTY_USAGE_INTERNATIONALIZED, - PROPERTY_USAGE_NOEDITOR = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_NETWORK | PROPERTY_USAGE_INTERNAL, + PROPERTY_USAGE_NOEDITOR = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_NETWORK, }; #define ADD_SIGNAL(m_signal) ClassDB::add_signal(get_class_static(), m_signal) diff --git a/core/ordered_hash_map.h b/core/ordered_hash_map.h index 5954952b6c..93ce9a90a7 100644 --- a/core/ordered_hash_map.h +++ b/core/ordered_hash_map.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ORDERED_HASH_MAP_H #define ORDERED_HASH_MAP_H diff --git a/core/os/copymem.h b/core/os/copymem.h index 998c0a8b9b..87d77bd426 100644 --- a/core/os/copymem.h +++ b/core/os/copymem.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COPYMEM_H #define COPYMEM_H diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp index c906fa7333..1941b82602 100644 --- a/core/os/dir_access.cpp +++ b/core/os/dir_access.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dir_access.h" #include "os/file_access.h" #include "os/memory.h" @@ -293,7 +294,7 @@ String DirAccess::get_full_path(const String &p_path, AccessType p_access) { return full; } -Error DirAccess::copy(String p_from, String p_to, int chmod_flags) { +Error DirAccess::copy(String p_from, String p_to, int p_chmod_flags) { //printf("copy %s -> %s\n",p_from.ascii().get_data(),p_to.ascii().get_data()); Error err; @@ -330,9 +331,9 @@ Error DirAccess::copy(String p_from, String p_to, int chmod_flags) { fdst->store_8(fsrc->get_8()); } - if (err == OK && chmod_flags != -1) { + if (err == OK && p_chmod_flags != -1) { fdst->close(); - err = fdst->_chmod(p_to, chmod_flags); + err = fdst->_chmod(p_to, p_chmod_flags); // If running on a platform with no chmod support (i.e., Windows), don't fail if (err == ERR_UNAVAILABLE) err = OK; diff --git a/core/os/dir_access.h b/core/os/dir_access.h index f29f61e838..4df0618021 100644 --- a/core/os/dir_access.h +++ b/core/os/dir_access.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIR_ACCESS_H #define DIR_ACCESS_H @@ -92,8 +93,8 @@ public: static bool exists(String p_dir); virtual size_t get_space_left() = 0; - Error copy_dir(String p_from, String p_to, int chmod_flags = -1); - virtual Error copy(String p_from, String p_to, int chmod_flags = -1); + Error copy_dir(String p_from, String p_to, int p_chmod_flags = -1); + virtual Error copy(String p_from, String p_to, int p_chmod_flags = -1); virtual Error rename(String p_from, String p_to) = 0; virtual Error remove(String p_name) = 0; diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index 989230b162..368b4ad09d 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access.h" #include "core/io/file_access_pack.h" diff --git a/core/os/file_access.h b/core/os/file_access.h index 61edc9a5db..5d10c1a9aa 100644 --- a/core/os/file_access.h +++ b/core/os/file_access.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_H #define FILE_ACCESS_H diff --git a/core/os/input.cpp b/core/os/input.cpp index 2795b11243..3089ab2ce3 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "input.h" #include "input_map.h" #include "os/os.h" @@ -84,7 +85,7 @@ void Input::_bind_methods() { ClassDB::bind_method(D_METHOD("warp_mouse_position", "to"), &Input::warp_mouse_position); ClassDB::bind_method(D_METHOD("action_press", "action"), &Input::action_press); ClassDB::bind_method(D_METHOD("action_release", "action"), &Input::action_release); - ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(Vector2())); + ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "shape", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(CURSOR_ARROW), DEFVAL(Vector2())); ClassDB::bind_method(D_METHOD("parse_input_event", "event"), &Input::parse_input_event); BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE); @@ -92,6 +93,24 @@ void Input::_bind_methods() { BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED); BIND_ENUM_CONSTANT(MOUSE_MODE_CONFINED); + BIND_ENUM_CONSTANT(CURSOR_ARROW); + BIND_ENUM_CONSTANT(CURSOR_IBEAM); + BIND_ENUM_CONSTANT(CURSOR_POINTING_HAND); + BIND_ENUM_CONSTANT(CURSOR_CROSS); + BIND_ENUM_CONSTANT(CURSOR_WAIT); + BIND_ENUM_CONSTANT(CURSOR_BUSY); + BIND_ENUM_CONSTANT(CURSOR_DRAG); + BIND_ENUM_CONSTANT(CURSOR_CAN_DROP); + BIND_ENUM_CONSTANT(CURSOR_FORBIDDEN); + BIND_ENUM_CONSTANT(CURSOR_VSIZE); + BIND_ENUM_CONSTANT(CURSOR_HSIZE); + BIND_ENUM_CONSTANT(CURSOR_BDIAGSIZE); + BIND_ENUM_CONSTANT(CURSOR_FDIAGSIZE); + BIND_ENUM_CONSTANT(CURSOR_MOVE); + BIND_ENUM_CONSTANT(CURSOR_VSPLIT); + BIND_ENUM_CONSTANT(CURSOR_HSPLIT); + BIND_ENUM_CONSTANT(CURSOR_HELP); + ADD_SIGNAL(MethodInfo("joy_connection_changed", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "connected"))); } diff --git a/core/os/input.h b/core/os/input.h index 608484ccd0..9c7595ff7f 100644 --- a/core/os/input.h +++ b/core/os/input.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef INPUT_H #define INPUT_H @@ -51,6 +52,28 @@ public: MOUSE_MODE_CONFINED }; +#undef CursorShape + enum CursorShape { + CURSOR_ARROW, + CURSOR_IBEAM, + CURSOR_POINTING_HAND, + CURSOR_CROSS, + CURSOR_WAIT, + CURSOR_BUSY, + CURSOR_DRAG, + CURSOR_CAN_DROP, + CURSOR_FORBIDDEN, + CURSOR_VSIZE, + CURSOR_HSIZE, + CURSOR_BDIAGSIZE, + CURSOR_FDIAGSIZE, + CURSOR_MOVE, + CURSOR_VSPLIT, + CURSOR_HSPLIT, + CURSOR_HELP, + CURSOR_MAX + }; + void set_mouse_mode(MouseMode p_mode); MouseMode get_mouse_mode() const; @@ -96,7 +119,7 @@ public: virtual bool is_emulating_touchscreen() const = 0; - virtual void set_custom_mouse_cursor(const RES &p_cursor, const Vector2 &p_hotspot = Vector2()) = 0; + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape = CURSOR_ARROW, const Vector2 &p_hotspot = Vector2()) = 0; virtual void set_mouse_in_window(bool p_in_window) = 0; virtual String get_joy_button_string(int p_button) = 0; @@ -110,5 +133,6 @@ public: }; VARIANT_ENUM_CAST(Input::MouseMode); +VARIANT_ENUM_CAST(Input::CursorShape); #endif // INPUT_H diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp index 67590517fb..12060f31df 100644 --- a/core/os/input_event.cpp +++ b/core/os/input_event.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "input_event.h" #include "input_map.h" diff --git a/core/os/input_event.h b/core/os/input_event.h index 53da79f59f..ad754d0d1f 100644 --- a/core/os/input_event.h +++ b/core/os/input_event.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef INPUT_EVENT_H #define INPUT_EVENT_H @@ -109,8 +110,8 @@ enum JoystickList { JOY_WII_C = JOY_BUTTON_5, JOY_WII_Z = JOY_BUTTON_6, - JOY_WII_MINUS = JOY_BUTTON_9, - JOY_WII_PLUS = JOY_BUTTON_10, + JOY_WII_MINUS = JOY_BUTTON_10, + JOY_WII_PLUS = JOY_BUTTON_11, // end of history diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp index 00d78d71f7..fa53cc85c8 100644 --- a/core/os/keyboard.cpp +++ b/core/os/keyboard.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "keyboard.h" #include "os/os.h" diff --git a/core/os/keyboard.h b/core/os/keyboard.h index f910f07f99..4c253fa4ce 100644 --- a/core/os/keyboard.h +++ b/core/os/keyboard.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef KEYBOARD_H #define KEYBOARD_H diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp index 186acb0342..916c86613e 100644 --- a/core/os/main_loop.cpp +++ b/core/os/main_loop.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main_loop.h" #include "script_language.h" diff --git a/core/os/main_loop.h b/core/os/main_loop.h index e5d917ec6b..546e4e280c 100644 --- a/core/os/main_loop.h +++ b/core/os/main_loop.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MAIN_LOOP_H #define MAIN_LOOP_H diff --git a/core/os/memory.cpp b/core/os/memory.cpp index a8b49a0852..3eab4343a9 100644 --- a/core/os/memory.cpp +++ b/core/os/memory.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "memory.h" #include "copymem.h" #include "core/safe_refcount.h" diff --git a/core/os/memory.h b/core/os/memory.h index 27eb57c873..f5c6c0b38a 100644 --- a/core/os/memory.h +++ b/core/os/memory.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MEMORY_H #define MEMORY_H diff --git a/core/os/mutex.cpp b/core/os/mutex.cpp index 21480fecee..7c4ea2323c 100644 --- a/core/os/mutex.cpp +++ b/core/os/mutex.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mutex.h" #include "error_macros.h" #include <stddef.h> diff --git a/core/os/mutex.h b/core/os/mutex.h index ecd1f59151..9debe7f41b 100644 --- a/core/os/mutex.h +++ b/core/os/mutex.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MUTEX_H #define MUTEX_H diff --git a/core/os/os.cpp b/core/os/os.cpp index bdcdfed060..c6e5de703c 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os.h" #include "dir_access.h" diff --git a/core/os/os.h b/core/os/os.h index 5dc39b52d6..248e1dbefa 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_H #define OS_H @@ -121,7 +122,7 @@ protected: void add_logger(Logger *p_logger); virtual void initialize_core() = 0; - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) = 0; + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) = 0; virtual void set_main_loop(MainLoop *p_main_loop) = 0; virtual void delete_main_loop() = 0; @@ -325,6 +326,7 @@ public: virtual int get_virtual_keyboard_height() const; virtual void set_cursor_shape(CursorShape p_shape) = 0; + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) = 0; virtual bool get_swap_ok_cancel() { return false; } virtual void dump_memory_to_file(const char *p_file); diff --git a/core/os/rw_lock.cpp b/core/os/rw_lock.cpp index 9603ccf0bb..35489490ed 100644 --- a/core/os/rw_lock.cpp +++ b/core/os/rw_lock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rw_lock.h" #include "error_macros.h" diff --git a/core/os/rw_lock.h b/core/os/rw_lock.h index d0ce38f453..9053794c83 100644 --- a/core/os/rw_lock.h +++ b/core/os/rw_lock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RWLOCK_H #define RWLOCK_H diff --git a/core/os/semaphore.cpp b/core/os/semaphore.cpp index 9455124e48..0377aeeb29 100644 --- a/core/os/semaphore.cpp +++ b/core/os/semaphore.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "semaphore.h" #include "error_macros.h" diff --git a/core/os/semaphore.h b/core/os/semaphore.h index 8bad64ace3..f3021bf74c 100644 --- a/core/os/semaphore.h +++ b/core/os/semaphore.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEMAPHORE_H #define SEMAPHORE_H diff --git a/core/os/shell.cpp b/core/os/shell.cpp index 781d922d4b..32649a0667 100644 --- a/core/os/shell.cpp +++ b/core/os/shell.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shell.h" Shell *Shell::singleton = NULL; diff --git a/core/os/shell.h b/core/os/shell.h index 84ac7eae42..d3d92028ea 100644 --- a/core/os/shell.h +++ b/core/os/shell.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHELL_H #define SHELL_H diff --git a/core/os/thread.cpp b/core/os/thread.cpp index 13bf147caf..250cf80a37 100644 --- a/core/os/thread.cpp +++ b/core/os/thread.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread.h" Thread *(*Thread::create_func)(ThreadCreateCallback, void *, const Settings &) = NULL; diff --git a/core/os/thread.h b/core/os/thread.h index 92dd00cf0d..c2947bccab 100644 --- a/core/os/thread.h +++ b/core/os/thread.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_H #define THREAD_H diff --git a/core/os/thread_dummy.cpp b/core/os/thread_dummy.cpp index 2f8f3d4940..fa0bb3dafd 100644 --- a/core/os/thread_dummy.cpp +++ b/core/os/thread_dummy.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread_dummy.h" #include "memory.h" diff --git a/core/os/thread_dummy.h b/core/os/thread_dummy.h index 5681f45092..b67b52a726 100644 --- a/core/os/thread_dummy.h +++ b/core/os/thread_dummy.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_DUMMY_H #define THREAD_DUMMY_H diff --git a/core/os/thread_safe.cpp b/core/os/thread_safe.cpp index 394876ae16..acb37df02b 100644 --- a/core/os/thread_safe.cpp +++ b/core/os/thread_safe.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread_safe.h" #include "error_macros.h" #include "os/memory.h" diff --git a/core/os/thread_safe.h b/core/os/thread_safe.h index 05510bcbb9..f0876f38a1 100644 --- a/core/os/thread_safe.h +++ b/core/os/thread_safe.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_SAFE_H #define THREAD_SAFE_H diff --git a/core/os/threaded_array_processor.cpp b/core/os/threaded_array_processor.cpp deleted file mode 100644 index 8e92508ea5..0000000000 --- a/core/os/threaded_array_processor.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "threaded_array_processor.h" - diff --git a/core/os/threaded_array_processor.h b/core/os/threaded_array_processor.h index e584fbb193..e0fb589767 100644 --- a/core/os/threaded_array_processor.h +++ b/core/os/threaded_array_processor.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* threaded_array_processor.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 THREADED_ARRAY_PROCESSOR_H #define THREADED_ARRAY_PROCESSOR_H diff --git a/core/packed_data_container.cpp b/core/packed_data_container.cpp index 4d5890685b..eaccdba9bf 100644 --- a/core/packed_data_container.cpp +++ b/core/packed_data_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "packed_data_container.h" #include "core_string_names.h" diff --git a/core/packed_data_container.h b/core/packed_data_container.h index b711d795de..fe36417000 100644 --- a/core/packed_data_container.h +++ b/core/packed_data_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PACKED_DATA_CONTAINER_H #define PACKED_DATA_CONTAINER_H diff --git a/core/pair.h b/core/pair.h index 349c034ab7..1d35ae1b6c 100644 --- a/core/pair.h +++ b/core/pair.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PAIR_H #define PAIR_H diff --git a/core/path_remap.cpp b/core/path_remap.cpp index d92d034f1a..80308d72c0 100644 --- a/core/path_remap.cpp +++ b/core/path_remap.cpp @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path_remap.h" diff --git a/core/path_remap.h b/core/path_remap.h index 1b40c9cace..5e25628aeb 100644 --- a/core/path_remap.h +++ b/core/path_remap.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_REMAP_H #define PATH_REMAP_H diff --git a/core/pool_allocator.cpp b/core/pool_allocator.cpp index 13d5c5082f..d81e1912bf 100644 --- a/core/pool_allocator.cpp +++ b/core/pool_allocator.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "pool_allocator.h" #include "core/os/os.h" diff --git a/core/pool_allocator.h b/core/pool_allocator.h index a1cc65f1fd..d9731aa3eb 100644 --- a/core/pool_allocator.h +++ b/core/pool_allocator.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POOL_ALLOCATOR_H #define POOL_ALLOCATOR_H diff --git a/core/print_string.cpp b/core/print_string.cpp index 2b366f8145..0355154488 100644 --- a/core/print_string.cpp +++ b/core/print_string.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "print_string.h" #include "os/os.h" diff --git a/core/print_string.h b/core/print_string.h index c3eaf3f336..3465888d4c 100644 --- a/core/print_string.h +++ b/core/print_string.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PRINT_STRING_H #define PRINT_STRING_H diff --git a/core/project_settings.cpp b/core/project_settings.cpp index bb2408fb1f..0991c0df68 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "project_settings.h" #include "bind/core_bind.h" @@ -166,7 +167,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) { } if (props.has(p_name)) { - if (!props[p_name].overrided) + if (!props[p_name].overridden) props[p_name].variant = p_value; } else { diff --git a/core/project_settings.h b/core/project_settings.h index e60efea222..eba53441cf 100644 --- a/core/project_settings.h +++ b/core/project_settings.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GLOBAL_CONFIG_H #define GLOBAL_CONFIG_H @@ -57,19 +58,19 @@ protected: Variant variant; Variant initial; bool hide_from_editor; - bool overrided; + bool overridden; VariantContainer() : order(0), persist(false), hide_from_editor(false), - overrided(false) { + overridden(false) { } VariantContainer(const Variant &p_variant, int p_order, bool p_persist = false) : order(p_order), persist(p_persist), variant(p_variant), hide_from_editor(false), - overrided(false) { + overridden(false) { } }; diff --git a/core/ref_ptr.cpp b/core/ref_ptr.cpp index 0f5abdd455..e3ef817df1 100644 --- a/core/ref_ptr.cpp +++ b/core/ref_ptr.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ref_ptr.h" #include "reference.h" diff --git a/core/ref_ptr.h b/core/ref_ptr.h index 27acfb7982..a074718d22 100644 --- a/core/ref_ptr.h +++ b/core/ref_ptr.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REF_PTR_H #define REF_PTR_H /** diff --git a/core/reference.cpp b/core/reference.cpp index 3b5a9bc7cc..c33a7c683c 100644 --- a/core/reference.cpp +++ b/core/reference.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "reference.h" #include "script_language.h" diff --git a/core/reference.h b/core/reference.h index 16b912a402..a0bdb62258 100644 --- a/core/reference.h +++ b/core/reference.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REFERENCE_H #define REFERENCE_H diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index 29c7cf4606..006459c5f6 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_core_types.h" #include "bind/core_bind.h" diff --git a/core/register_core_types.h b/core/register_core_types.h index 4f5b7e03af..201da5cd07 100644 --- a/core/register_core_types.h +++ b/core/register_core_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_CORE_TYPES_H #define REGISTER_CORE_TYPES_H diff --git a/core/resource.cpp b/core/resource.cpp index 3e411a8753..2eeed50d9d 100644 --- a/core/resource.cpp +++ b/core/resource.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource.h" #include "core_string_names.h" @@ -73,7 +74,7 @@ void Resource::set_path(const String &p_path, bool p_take_over) { bool exists = ResourceCache::resources.has(p_path); ResourceCache::lock->read_unlock(); - ERR_EXPLAIN("Another resource is loaded from path: " + p_path); + ERR_EXPLAIN("Another resource is loaded from path: " + p_path + " (possible cyclic resource inclusion)"); ERR_FAIL_COND(exists); } } diff --git a/core/resource.h b/core/resource.h index 4c5a44d7fd..60c63bfe7f 100644 --- a/core/resource.h +++ b/core/resource.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_H #define RESOURCE_H diff --git a/core/rid.cpp b/core/rid.cpp index 3cfb28c044..9661af9271 100644 --- a/core/rid.cpp +++ b/core/rid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rid.h" RID_Data::~RID_Data() { diff --git a/core/rid.h b/core/rid.h index 3768083fe3..42306aea36 100644 --- a/core/rid.h +++ b/core/rid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RID_H #define RID_H diff --git a/core/ring_buffer.h b/core/ring_buffer.h index 4b4a7fe9cf..de4757612a 100644 --- a/core/ring_buffer.h +++ b/core/ring_buffer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RINGBUFFER_H #define RINGBUFFER_H @@ -40,7 +41,7 @@ class RingBuffer { int write_pos; int size_mask; - inline int inc(int &p_var, int p_size) { + inline int inc(int &p_var, int p_size) const { int ret = p_var; p_var += p_size; p_var = p_var & size_mask; @@ -50,7 +51,7 @@ class RingBuffer { public: T read() { ERR_FAIL_COND_V(space_left() < 1, T()); - return data[inc(read_pos, 1)]; + return data.ptr()[inc(read_pos, 1)]; }; int read(T *p_buf, int p_size, bool p_advance = true) { @@ -63,8 +64,9 @@ public: int end = pos + to_read; end = MIN(end, size()); int total = end - pos; + const T *read = data.ptr(); for (int i = 0; i < total; i++) { - p_buf[dst++] = data[pos + i]; + p_buf[dst++] = read[pos + i]; }; to_read -= total; pos = 0; @@ -75,7 +77,7 @@ public: return p_size; }; - int copy(T *p_buf, int p_offset, int p_size) { + int copy(T *p_buf, int p_offset, int p_size) const { int left = data_left(); if ((p_offset + p_size) > left) { @@ -101,7 +103,7 @@ public: return p_size; }; - int find(const T &t, int p_offset, int p_max_size) { + int find(const T &t, int p_offset, int p_max_size) const { int left = data_left(); if ((p_offset + p_max_size) > left) { @@ -164,7 +166,7 @@ public: return p_size; }; - inline int space_left() { + inline int space_left() const { int left = read_pos - write_pos; if (left < 0) { return size() + left - 1; @@ -174,11 +176,11 @@ public: }; return left - 1; }; - inline int data_left() { + inline int data_left() const { return size() - space_left() - 1; }; - inline int size() { + inline int size() const { return data.size(); }; diff --git a/core/safe_refcount.h b/core/safe_refcount.h index 217cf69145..eff209c2db 100644 --- a/core/safe_refcount.h +++ b/core/safe_refcount.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SAFE_REFCOUNT_H #define SAFE_REFCOUNT_H diff --git a/core/script_debugger_local.cpp b/core/script_debugger_local.cpp index 83cdb348bd..0da377453e 100644 --- a/core/script_debugger_local.cpp +++ b/core/script_debugger_local.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_debugger_local.h" #include "os/os.h" @@ -293,6 +294,11 @@ void ScriptDebuggerLocal::send_message(const String &p_message, const Array &p_a print_line("MESSAGE: '" + p_message + "' - " + String(Variant(p_args))); } +void ScriptDebuggerLocal::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info) { + + print_line("ERROR: '" + (p_descr.empty() ? p_err : p_descr) + "'"); +} + ScriptDebuggerLocal::ScriptDebuggerLocal() { profiling = false; diff --git a/core/script_debugger_local.h b/core/script_debugger_local.h index f1111612b3..c87bc90bb4 100644 --- a/core/script_debugger_local.h +++ b/core/script_debugger_local.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_DEBUGGER_LOCAL_H #define SCRIPT_DEBUGGER_LOCAL_H @@ -43,6 +44,7 @@ class ScriptDebuggerLocal : public ScriptDebugger { public: void debug(ScriptLanguage *p_script, bool p_can_continue); virtual void send_message(const String &p_message, const Array &p_args); + virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info); virtual bool is_profiling() const { return profiling; } virtual void add_profiling_frame_data(const StringName &p_name, const Array &p_data) {} diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp index 27633ec553..41071ace5d 100644 --- a/core/script_debugger_remote.cpp +++ b/core/script_debugger_remote.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_debugger_remote.h" #include "engine.h" @@ -67,17 +68,20 @@ Error ScriptDebuggerRemote::connect_to_host(const String &p_host, uint16_t p_por int port = p_port; - int tries = 3; + const int tries = 6; + int waits[tries] = { 1, 10, 100, 1000, 1000, 1000 }; + tcp_client->connect_to_host(ip, port); - while (tries--) { + for (int i = 0; i < tries; i++) { if (tcp_client->get_status() == StreamPeerTCP::STATUS_CONNECTED) { break; } else { - OS::get_singleton()->delay_usec(1000000); - print_line("Remote Debugger: Connection failed with status: '" + String::num(tcp_client->get_status()) + "', retrying in 1 sec."); + const int ms = waits[i]; + OS::get_singleton()->delay_usec(ms * 1000); + print_line("Remote Debugger: Connection failed with status: '" + String::num(tcp_client->get_status()) + "', retrying in " + String::num(ms) + " msec."); }; }; @@ -126,15 +130,21 @@ static ObjectID safe_get_instance_id(const Variant &p_v) { void ScriptDebuggerRemote::_put_variable(const String &p_name, const Variant &p_variable) { packet_peer_stream->put_var(p_name); + + Variant var = p_variable; + if (p_variable.get_type() == Variant::OBJECT && !ObjectDB::instance_validate(p_variable)) { + var = Variant(); + } + int len = 0; - Error err = encode_variant(p_variable, NULL, len); + Error err = encode_variant(var, NULL, len); if (err != OK) ERR_PRINT("Failed to encode variant"); if (len > packet_peer_stream->get_output_buffer_max_size()) { //limit to max size packet_peer_stream->put_var(Variant()); } else { - packet_peer_stream->put_var(p_variable); + packet_peer_stream->put_var(var); } } @@ -345,6 +355,13 @@ void ScriptDebuggerRemote::_get_output() { locking = false; } + if (n_messages_dropped > 0) { + Message msg; + msg.message = "Too many messages! " + String::num_int64(n_messages_dropped) + " messages were dropped."; + messages.push_back(msg); + n_messages_dropped = 0; + } + while (messages.size()) { locking = true; packet_peer_stream->put_var("message:" + messages.front()->get().message); @@ -356,6 +373,20 @@ void ScriptDebuggerRemote::_get_output() { locking = false; } + if (n_errors_dropped > 0) { + OutputError oe; + oe.error = "TOO_MANY_ERRORS"; + oe.error_descr = "Too many errors! " + String::num_int64(n_errors_dropped) + " errors were dropped."; + oe.warning = false; + uint64_t time = OS::get_singleton()->get_ticks_msec(); + oe.hr = time / 3600000; + oe.min = (time / 60000) % 60; + oe.sec = (time / 1000) % 60; + oe.msec = time % 1000; + errors.push_back(oe); + n_errors_dropped = 0; + } + while (errors.size()) { locking = true; packet_peer_stream->put_var("error"); @@ -401,22 +432,6 @@ void ScriptDebuggerRemote::_err_handler(void *ud, const char *p_func, const char if (p_type == ERR_HANDLER_SCRIPT) return; //ignore script errors, those go through debugger - ScriptDebuggerRemote *sdr = (ScriptDebuggerRemote *)ud; - - OutputError oe; - oe.error = p_err; - oe.error_descr = p_descr; - oe.source_file = p_file; - oe.source_line = p_line; - oe.source_func = p_func; - oe.warning = p_type == ERR_HANDLER_WARNING; - uint64_t time = OS::get_singleton()->get_ticks_msec(); - oe.hr = time / 3600000; - oe.min = (time / 60000) % 60; - oe.sec = (time / 1000) % 60; - oe.msec = time % 1000; - Array cstack; - Vector<ScriptLanguage::StackInfo> si; for (int i = 0; i < ScriptServer::get_language_count(); i++) { @@ -425,28 +440,8 @@ void ScriptDebuggerRemote::_err_handler(void *ud, const char *p_func, const char break; } - cstack.resize(si.size() * 2); - for (int i = 0; i < si.size(); i++) { - String path; - int line = 0; - if (si[i].script.is_valid()) { - path = si[i].script->get_path(); - line = si[i].line; - } - cstack[i * 2 + 0] = path; - cstack[i * 2 + 1] = line; - } - - oe.callstack = cstack; - - sdr->mutex->lock(); - - if (!sdr->locking && sdr->tcp_client->is_connected_to_host()) { - - sdr->errors.push_back(oe); - } - - sdr->mutex->unlock(); + ScriptDebuggerRemote *sdr = (ScriptDebuggerRemote *)ud; + sdr->send_error(p_func, p_file, p_line, p_err, p_descr, p_type, si); } bool ScriptDebuggerRemote::_parse_live_edit(const Array &p_command) { @@ -603,7 +598,13 @@ void ScriptDebuggerRemote::_send_object_id(ObjectID p_id) { Array send_props; for (int i = 0; i < properties.size(); i++) { const PropertyInfo &pi = properties[i].first; - const Variant &var = properties[i].second; + Variant &var = properties[i].second; + + WeakRef *ref = Object::cast_to<WeakRef>(var); + if (ref) { + var = ref->get_ref(); + } + RES res = var; Array prop; @@ -881,11 +882,54 @@ void ScriptDebuggerRemote::send_message(const String &p_message, const Array &p_ mutex->lock(); if (!locking && tcp_client->is_connected_to_host()) { - Message msg; - msg.message = p_message; - msg.data = p_args; - messages.push_back(msg); + if (messages.size() >= max_messages_per_frame) { + n_messages_dropped++; + } else { + Message msg; + msg.message = p_message; + msg.data = p_args; + messages.push_back(msg); + } + } + mutex->unlock(); +} + +void ScriptDebuggerRemote::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info) { + + OutputError oe; + oe.error = p_err; + oe.error_descr = p_descr; + oe.source_file = p_file; + oe.source_line = p_line; + oe.source_func = p_func; + oe.warning = p_type == ERR_HANDLER_WARNING; + uint64_t time = OS::get_singleton()->get_ticks_msec(); + oe.hr = time / 3600000; + oe.min = (time / 60000) % 60; + oe.sec = (time / 1000) % 60; + oe.msec = time % 1000; + Array cstack; + + cstack.resize(p_stack_info.size() * 3); + for (int i = 0; i < p_stack_info.size(); i++) { + cstack[i * 3 + 0] = p_stack_info[i].file; + cstack[i * 3 + 1] = p_stack_info[i].func; + cstack[i * 3 + 2] = p_stack_info[i].line; } + + oe.callstack = cstack; + + mutex->lock(); + + if (!locking && tcp_client->is_connected_to_host()) { + + if (errors.size() >= max_errors_per_frame) { + n_errors_dropped++; + } else { + errors.push_back(oe); + } + } + mutex->unlock(); } @@ -1001,7 +1045,11 @@ ScriptDebuggerRemote::ScriptDebuggerRemote() : requested_quit(false), mutex(Mutex::create()), max_cps(GLOBAL_GET("network/limits/debugger_stdout/max_chars_per_second")), + max_messages_per_frame(GLOBAL_GET("network/limits/debugger_stdout/max_messages_per_frame")), + max_errors_per_frame(GLOBAL_GET("network/limits/debugger_stdout/max_errors_per_frame")), char_count(0), + n_messages_dropped(0), + n_errors_dropped(0), last_msec(0), msec_count(0), locking(false), diff --git a/core/script_debugger_remote.h b/core/script_debugger_remote.h index 15afc866e3..2c4e29f172 100644 --- a/core/script_debugger_remote.h +++ b/core/script_debugger_remote.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_DEBUGGER_REMOTE_H #define SCRIPT_DEBUGGER_REMOTE_H @@ -86,7 +87,11 @@ class ScriptDebuggerRemote : public ScriptDebugger { List<String> output_strings; List<Message> messages; + int max_messages_per_frame; + int n_messages_dropped; List<OutputError> errors; + int max_errors_per_frame; + int n_errors_dropped; int max_cps; int char_count; @@ -152,6 +157,7 @@ public: virtual void request_quit(); virtual void send_message(const String &p_message, const Array &p_args); + virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info); virtual void set_request_scene_tree_message_func(RequestSceneTreeMessageFunc p_func, void *p_udata); virtual void set_live_edit_funcs(LiveEditFuncs *p_funcs); diff --git a/core/script_language.cpp b/core/script_language.cpp index 773eb29036..1dab58e29e 100644 --- a/core/script_language.cpp +++ b/core/script_language.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_language.h" ScriptLanguage *ScriptServer::_languages[MAX_LANGUAGES]; @@ -60,6 +61,8 @@ void Script::_bind_methods() { ClassDB::bind_method(D_METHOD("has_script_signal", "signal_name"), &Script::has_script_signal); ClassDB::bind_method(D_METHOD("is_tool"), &Script::is_tool); + + ADD_PROPERTY(PropertyInfo(Variant::STRING, "source_code", PROPERTY_HINT_NONE, "", 0), "set_source_code", "get_source_code"); } void ScriptServer::set_scripting_enabled(bool p_enabled) { diff --git a/core/script_language.h b/core/script_language.h index 1a9d101ddd..d1da0a3b72 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_LANGUAGE_H #define SCRIPT_LANGUAGE_H @@ -178,7 +179,7 @@ class ScriptCodeCompletionCache { public: virtual RES get_cached_resource(const String &p_path) = 0; - static ScriptCodeCompletionCache *get_sigleton() { return singleton; } + static ScriptCodeCompletionCache *get_singleton() { return singleton; } ScriptCodeCompletionCache(); }; @@ -253,7 +254,8 @@ public: virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems = -1, int p_max_depth = -1) = 0; struct StackInfo { - Ref<Script> script; + String file; + String func; int line; }; @@ -390,6 +392,7 @@ public: ScriptLanguage *get_break_language() const; virtual void send_message(const String &p_message, const Array &p_args) = 0; + virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info) = 0; virtual bool is_remote() const { return false; } virtual void request_quit() {} diff --git a/core/self_list.h b/core/self_list.h index bb7f1a8a5b..e83afb66ef 100644 --- a/core/self_list.h +++ b/core/self_list.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SELF_LIST_H #define SELF_LIST_H diff --git a/core/set.h b/core/set.h index b2a8ee1636..4f17c953b1 100644 --- a/core/set.h +++ b/core/set.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SET_H #define SET_H diff --git a/core/simple_type.h b/core/simple_type.h index 5429719f02..a645d03181 100644 --- a/core/simple_type.h +++ b/core/simple_type.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SIMPLE_TYPE_H #define SIMPLE_TYPE_H diff --git a/core/sort.h b/core/sort.h index 94c2c1ecdf..a6780309d8 100644 --- a/core/sort.h +++ b/core/sort.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SORT_H #define SORT_H diff --git a/core/string_buffer.cpp b/core/string_buffer.cpp index 970477b90b..aac2090378 100644 --- a/core/string_buffer.cpp +++ b/core/string_buffer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "string_buffer.h" #include <string.h> diff --git a/core/string_buffer.h b/core/string_buffer.h index 4b502f3d92..f0ead66bb8 100644 --- a/core/string_buffer.h +++ b/core/string_buffer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STRING_BUFFER_H #define STRING_BUFFER_H diff --git a/core/string_builder.cpp b/core/string_builder.cpp index f24e23c986..8ab7e0ea8f 100644 --- a/core/string_builder.cpp +++ b/core/string_builder.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "string_builder.h" #include <string.h> @@ -55,6 +56,9 @@ StringBuilder &StringBuilder::append(const char *p_cstring) { String StringBuilder::as_string() const { + if (string_length == 0) + return ""; + CharType *buffer = memnew_arr(CharType, string_length); int current_position = 0; diff --git a/core/string_builder.h b/core/string_builder.h index 48e3fd663f..9e2599ac32 100644 --- a/core/string_builder.h +++ b/core/string_builder.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STRING_BUILDER_H #define STRING_BUILDER_H diff --git a/core/string_db.cpp b/core/string_db.cpp index 3d77aee0a1..6e1f887754 100644 --- a/core/string_db.cpp +++ b/core/string_db.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "string_db.h" #include "os/os.h" diff --git a/core/string_db.h b/core/string_db.h index 5e3086d4ec..28ca812a45 100644 --- a/core/string_db.h +++ b/core/string_db.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STRING_DB_H #define STRING_DB_H diff --git a/core/translation.cpp b/core/translation.cpp index 0c9af4e624..32096d2eab 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "translation.h" #include "io/resource_loader.h" @@ -872,7 +873,7 @@ void Translation::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_messages"), &Translation::_set_messages); ClassDB::bind_method(D_METHOD("_get_messages"), &Translation::_get_messages); - ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "messages", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_messages", "_get_messages"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "messages", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_messages", "_get_messages"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "locale"), "set_locale", "get_locale"); } diff --git a/core/translation.h b/core/translation.h index b8ff1722f5..e7c0dcbc07 100644 --- a/core/translation.h +++ b/core/translation.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TRANSLATION_H #define TRANSLATION_H diff --git a/core/type_info.h b/core/type_info.h index 24d96c51e8..c1af4fac69 100644 --- a/core/type_info.h +++ b/core/type_info.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* type_info.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 GET_TYPE_INFO_H #define GET_TYPE_INFO_H diff --git a/core/typedefs.h b/core/typedefs.h index 9508fe28db..4758a5408d 100644 --- a/core/typedefs.h +++ b/core/typedefs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TYPEDEFS_H #define TYPEDEFS_H diff --git a/core/ucaps.h b/core/ucaps.h index 764350504a..95bac1aac6 100644 --- a/core/ucaps.h +++ b/core/ucaps.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef UCAPS_H #define UCAPS_H diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp index 46d38b3abc..b3f9dd818d 100644 --- a/core/undo_redo.cpp +++ b/core/undo_redo.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "undo_redo.h" #include "os/os.h" @@ -107,6 +108,7 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) { void UndoRedo::add_do_method(Object *p_object, const String &p_method, VARIANT_ARG_DECLARE) { VARIANT_ARGPTRS + ERR_FAIL_COND(p_object == NULL); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); Operation do_op; @@ -126,6 +128,7 @@ void UndoRedo::add_do_method(Object *p_object, const String &p_method, VARIANT_A void UndoRedo::add_undo_method(Object *p_object, const String &p_method, VARIANT_ARG_DECLARE) { VARIANT_ARGPTRS + ERR_FAIL_COND(p_object == NULL); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); @@ -148,6 +151,7 @@ void UndoRedo::add_undo_method(Object *p_object, const String &p_method, VARIANT } void UndoRedo::add_do_property(Object *p_object, const String &p_property, const Variant &p_value) { + ERR_FAIL_COND(p_object == NULL); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); Operation do_op; @@ -162,6 +166,7 @@ void UndoRedo::add_do_property(Object *p_object, const String &p_property, const } void UndoRedo::add_undo_property(Object *p_object, const String &p_property, const Variant &p_value) { + ERR_FAIL_COND(p_object == NULL); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); @@ -181,6 +186,7 @@ void UndoRedo::add_undo_property(Object *p_object, const String &p_property, con } void UndoRedo::add_do_reference(Object *p_object) { + ERR_FAIL_COND(p_object == NULL); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); Operation do_op; @@ -193,6 +199,7 @@ void UndoRedo::add_do_reference(Object *p_object) { } void UndoRedo::add_undo_reference(Object *p_object) { + ERR_FAIL_COND(p_object == NULL); ERR_FAIL_COND(action_level <= 0); ERR_FAIL_COND((current_action + 1) >= actions.size()); @@ -239,13 +246,6 @@ void UndoRedo::commit_action() { redo(); // perform action - if (max_steps > 0 && actions.size() > max_steps) { - //clear early steps - - while (actions.size() > max_steps) - _pop_history_tail(); - } - if (callback && actions.size() > 0) { callback(callback_ud, actions[actions.size() - 1].name); } @@ -340,16 +340,6 @@ String UndoRedo::get_current_action_name() const { return actions[current_action].name; } -void UndoRedo::set_max_steps(int p_max_steps) { - - max_steps = p_max_steps; -} - -int UndoRedo::get_max_steps() const { - - return max_steps; -} - uint64_t UndoRedo::get_version() const { return version; @@ -378,7 +368,6 @@ UndoRedo::UndoRedo() { version = 1; action_level = 0; current_action = -1; - max_steps = -1; merge_mode = MERGE_DISABLE; callback = NULL; callback_ud = NULL; @@ -503,8 +492,6 @@ void UndoRedo::_bind_methods() { ClassDB::bind_method(D_METHOD("clear_history"), &UndoRedo::clear_history); ClassDB::bind_method(D_METHOD("get_current_action_name"), &UndoRedo::get_current_action_name); ClassDB::bind_method(D_METHOD("get_version"), &UndoRedo::get_version); - ClassDB::bind_method(D_METHOD("set_max_steps", "max_steps"), &UndoRedo::set_max_steps); - ClassDB::bind_method(D_METHOD("get_max_steps"), &UndoRedo::get_max_steps); ClassDB::bind_method(D_METHOD("redo"), &UndoRedo::redo); ClassDB::bind_method(D_METHOD("undo"), &UndoRedo::undo); diff --git a/core/undo_redo.h b/core/undo_redo.h index 27bd7c2fd0..a373296b73 100644 --- a/core/undo_redo.h +++ b/core/undo_redo.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef UNDO_REDO_H #define UNDO_REDO_H @@ -78,7 +79,6 @@ private: Vector<Action> actions; int current_action; int action_level; - int max_steps; MergeMode merge_mode; uint64_t version; @@ -114,9 +114,6 @@ public: String get_current_action_name() const; void clear_history(); - void set_max_steps(int p_max_steps); - int get_max_steps() const; - uint64_t get_version() const; void set_commit_notify_callback(CommitNotifyCallback p_callback, void *p_ud); diff --git a/core/ustring.cpp b/core/ustring.cpp index 11d83a5733..d445e4ed47 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ustring.h" #include "color.h" @@ -685,6 +686,9 @@ Vector<String> String::split_spaces() const { int from = 0; int i = 0; int len = length(); + if (len == 0) + return ret; + bool inside = false; while (true) { @@ -1097,9 +1101,8 @@ String String::num(double p_num, int p_decimals) { String String::num_int64(int64_t p_num, int base, bool capitalize_hex) { bool sign = p_num < 0; - int64_t num = ABS(p_num); - int64_t n = num; + int64_t n = p_num; int chars = 0; do { @@ -1113,9 +1116,9 @@ String String::num_int64(int64_t p_num, int base, bool capitalize_hex) { s.resize(chars + 1); CharType *c = s.ptrw(); c[chars] = 0; - n = num; + n = p_num; do { - int mod = n % base; + int mod = ABS(n % base); if (mod >= 10) { char a = (capitalize_hex ? 'A' : 'a'); c[--chars] = a + (mod - 10); @@ -2214,7 +2217,7 @@ int String::find(const String &p_str, int p_from) const { const int len = length(); if (src_len == 0 || len == 0) - return -1; //wont find anything! + return -1; // won't find anything! const CharType *src = c_str(); const CharType *str = p_str.c_str(); @@ -2253,7 +2256,7 @@ int String::find(const char *p_str, int p_from) const { const int len = length(); if (len == 0) - return -1; //wont find anything! + return -1; // won't find anything! const CharType *src = c_str(); @@ -2314,7 +2317,7 @@ int String::findmk(const Vector<String> &p_keys, int p_from, int *r_key) const { int len = length(); if (len == 0) - return -1; //wont find anything! + return -1; // won't find anything! const CharType *src = c_str(); @@ -2363,7 +2366,7 @@ int String::findn(const String &p_str, int p_from) const { int src_len = p_str.length(); if (src_len == 0 || length() == 0) - return -1; //wont find anything! + return -1; // won't find anything! const CharType *srcd = c_str(); @@ -2459,7 +2462,7 @@ int String::rfindn(const String &p_str, int p_from) const { int len = length(); if (src_len == 0 || len == 0) - return -1; //wont find anything! + return -1; // won't find anything! const CharType *src = c_str(); @@ -3164,7 +3167,7 @@ String String::http_unescape() const { if ((ord1 >= '0' && ord1 <= '9') || (ord1 >= 'A' && ord1 <= 'Z')) { CharType ord2 = ord_at(i + 2); if ((ord2 >= '0' && ord2 <= '9') || (ord2 >= 'A' && ord2 <= 'Z')) { - char bytes[2] = { ord1, ord2 }; + char bytes[2] = { (char)ord1, (char)ord2 }; res += (char)strtol(bytes, NULL, 16); i += 2; } diff --git a/core/ustring.h b/core/ustring.h index 8dd8b0fed3..90496b71b6 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RSTRING_H #define RSTRING_H diff --git a/core/variant.cpp b/core/variant.cpp index 5d4879dba7..2e26169bfe 100644 --- a/core/variant.cpp +++ b/core/variant.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "variant.h" #include "core_string_names.h" diff --git a/core/variant.h b/core/variant.h index 6c9204a18e..51ee8ea9d1 100644 --- a/core/variant.h +++ b/core/variant.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VARIANT_H #define VARIANT_H diff --git a/core/variant_call.cpp b/core/variant_call.cpp index a2794e7052..2ca435611b 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "variant.h" #include "core_string_names.h" @@ -101,9 +102,10 @@ struct _VariantCall { const Variant *newargs[VARIANT_ARG_MAX]; for (int i = 0; i < p_argcount; i++) newargs[i] = p_args[i]; - int defargcount = def_argcount; + // fill in any remaining parameters with defaults + int first_default_arg = arg_count - def_argcount; for (int i = p_argcount; i < arg_count; i++) - newargs[i] = &default_args[defargcount - (i - p_argcount) - 1]; //default arguments + newargs[i] = &default_args[i - first_default_arg]; #ifdef DEBUG_ENABLED if (!verify_arguments(newargs, r_error)) return; @@ -1746,10 +1748,10 @@ void register_variant_methods() { ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, rotated, REAL, "phi", varray()); ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, scaled, VECTOR2, "scale", varray()); ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, translated, VECTOR2, "offset", varray()); - ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, xform, NIL, "v", varray()); - ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, xform_inv, NIL, "v", varray()); - ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform, NIL, "v", varray()); - ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform_inv, NIL, "v", varray()); + ADDFUNC1R(TRANSFORM2D, NIL, Transform2D, xform, NIL, "v", varray()); + ADDFUNC1R(TRANSFORM2D, NIL, Transform2D, xform_inv, NIL, "v", varray()); + ADDFUNC1R(TRANSFORM2D, VECTOR2, Transform2D, basis_xform, VECTOR2, "v", varray()); + ADDFUNC1R(TRANSFORM2D, VECTOR2, Transform2D, basis_xform_inv, VECTOR2, "v", varray()); ADDFUNC2R(TRANSFORM2D, TRANSFORM2D, Transform2D, interpolate_with, TRANSFORM2D, "transform", REAL, "weight", varray()); ADDFUNC0R(BASIS, BASIS, Basis, inverse, varray()); diff --git a/core/variant_construct_string.cpp b/core/variant_construct_string.cpp index 408e54bc99..2250c03f3d 100644 --- a/core/variant_construct_string.cpp +++ b/core/variant_construct_string.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "variant.h" class VariantConstruct { diff --git a/core/variant_op.cpp b/core/variant_op.cpp index 96b09c904d..e46fac77ee 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "variant.h" #include "core_string_names.h" @@ -338,7 +339,7 @@ bool Variant::booleanize() const { CASE_TYPE(m_prefix, m_op_name, m_name) { \ if (p_b.type == NIL) \ _RETURN(true) \ - DEFAULT_OP_ARRAY_OP_BODY(m_prefix, m_op_name, m_name, m_type, !=, ==, true, true, false) \ + DEFAULT_OP_ARRAY_OP_BODY(m_prefix, m_op_name, m_name, m_type, !=, !=, false, true, true) \ } #define DEFAULT_OP_ARRAY_LT(m_prefix, m_op_name, m_name, m_type) \ @@ -538,12 +539,12 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a, if (arr_b->size() != l) _RETURN(true); for (int i = 0; i < l; i++) { - if (((*arr_a)[i] == (*arr_b)[i])) { - _RETURN(false); + if (((*arr_a)[i] != (*arr_b)[i])) { + _RETURN(true); } } - _RETURN(true); + _RETURN(false); } DEFAULT_OP_NUM_NULL(math, OP_NOT_EQUAL, INT, !=, _int); diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index a78e18112d..54edb02347 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "variant_parser.h" #include "core/string_buffer.h" diff --git a/core/variant_parser.h b/core/variant_parser.h index 18b6998f55..8d95595234 100644 --- a/core/variant_parser.h +++ b/core/variant_parser.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VARIANT_PARSER_H #define VARIANT_PARSER_H diff --git a/core/vector.h b/core/vector.h index 456d446a4b..f586471e27 100644 --- a/core/vector.h +++ b/core/vector.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VECTOR_H #define VECTOR_H diff --git a/core/version.h b/core/version.h index bf2f2c9d99..7a55d69ad7 100644 --- a/core/version.h +++ b/core/version.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "version_generated.gen.h" #ifdef VERSION_PATCH diff --git a/core/vmap.h b/core/vmap.h index 341fc273d4..8636c02997 100644 --- a/core/vmap.h +++ b/core/vmap.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VMAP_H #define VMAP_H diff --git a/core/vset.h b/core/vset.h index f4036c7c7e..449943b4a1 100644 --- a/core/vset.h +++ b/core/vset.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VSET_H #define VSET_H diff --git a/doc/classes/@GDScript.xml b/doc/classes/@GDScript.xml index bee2cdf387..d4bd937f49 100644 --- a/doc/classes/@GDScript.xml +++ b/doc/classes/@GDScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="@GDScript" category="Core" version="3.0-beta"> +<class name="@GDScript" category="Core" version="3.0-stable"> <brief_description> Built-in GDScript functions. </brief_description> @@ -41,10 +41,12 @@ <argument index="1" name="alpha" type="float"> </argument> <description> - Returns color [code]name[/code] with [code]alpha[/code] ranging from 0 to 1. Note: [code]name[/code] is defined in color_names.inc. + Returns a color according to the standardised [code]name[/code] with [code]alpha[/code] ranging from 0 to 1. [codeblock] - red = ColorN('red') + red = ColorN("red", 1) [/codeblock] + Supported color names: + "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflower", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "webgray", "green", "webgreen", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrod", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "webmaroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navyblue", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "webpurple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen". </description> </method> <method name="abs"> @@ -180,14 +182,14 @@ <method name="clamp"> <return type="float"> </return> - <argument index="0" name="val" type="float"> + <argument index="0" name="value" type="float"> </argument> <argument index="1" name="min" type="float"> </argument> <argument index="2" name="max" type="float"> </argument> <description> - Clamps [code]val[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code]. + Clamps [code]value[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code]. [codeblock] speed = 1000 # a is 20 @@ -464,7 +466,7 @@ </argument> <argument index="1" name="to" type="float"> </argument> - <argument index="2" name="value" type="float"> + <argument index="2" name="weight" type="float"> </argument> <description> Returns a normalized value considering the given range. @@ -535,7 +537,7 @@ <argument index="0" name="path" type="String"> </argument> <description> - Loads a resource from the filesystem located at 'path'. Note: resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path". + Loads a resource from the filesystem located at [code]path[/code]. Note: 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 var main = load("res://main.tscn") @@ -587,10 +589,10 @@ <method name="nearest_po2"> <return type="int"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> - Returns the nearest larger power of 2 for integer [code]val[/code]. + Returns the nearest larger power of 2 for integer [code]value[/code]. [codeblock] nearest_po2(3) # returns 4 nearest_po2(4) # returns 4 @@ -866,9 +868,10 @@ <argument index="0" name="s" type="float"> </argument> <description> - Returns sign of [code]s[/code] -1 or 1. + Returns the sign of [code]s[/code]: -1 or 1. Returns 0 if [code]s[/code] is 0. [codeblock] sign(-6) # returns -1 + sign(0) # returns 0 sign(6) # returns 1 [/codeblock] </description> diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index de5dc18702..1f6256f8c9 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="@GlobalScope" category="Core" version="3.0-beta"> +<class name="@GlobalScope" category="Core" version="3.0-stable"> <brief_description> Global scope constants and variables. </brief_description> @@ -45,6 +45,7 @@ [JSON] singleton </member> <member name="JavaScript" type="JavaScript" setter="" getter=""> + [JavaScript] singleton </member> <member name="Marshalls" type="Reference" setter="" getter=""> [Marshalls] singleton @@ -93,6 +94,14 @@ <constant name="MARGIN_BOTTOM" value="3" enum="Margin"> Bottom margin, used usually for [Control] or [StyleBox] derived classes. </constant> + <constant name="CORNER_TOP_LEFT" value="0" enum="Corner"> + </constant> + <constant name="CORNER_TOP_RIGHT" value="1" enum="Corner"> + </constant> + <constant name="CORNER_BOTTOM_RIGHT" value="2" enum="Corner"> + </constant> + <constant name="CORNER_BOTTOM_LEFT" value="3" enum="Corner"> + </constant> <constant name="VERTICAL" value="1" enum="Orientation"> General vertical alignment, used usually for [Separator], [ScrollBar], [Slider], etc. </constant> @@ -1068,7 +1077,7 @@ Joypad Right Analog Trigger </constant> <constant name="OK" value="0" enum="Error"> - Functions that return Error return OK when no error occured. Most functions don't return errors and/or just print errors to STDOUT. + Functions that return Error return OK when no error occurred. Most functions don't return errors and/or just print errors to STDOUT. </constant> <constant name="FAILED" value="1" enum="Error"> Generic error. @@ -1277,7 +1286,7 @@ </constant> <constant name="PROPERTY_USAGE_DEFAULT_INTL" value="71" enum="PropertyUsageFlags"> </constant> - <constant name="PROPERTY_USAGE_NOEDITOR" value="1048581" enum="PropertyUsageFlags"> + <constant name="PROPERTY_USAGE_NOEDITOR" value="5" enum="PropertyUsageFlags"> </constant> <constant name="METHOD_FLAG_NORMAL" value="1" enum="MethodFlags"> Flag for normal method @@ -1385,5 +1394,57 @@ <constant name="TYPE_MAX" value="27" enum="Variant.Type"> Marker for end of type constants. </constant> + <constant name="OP_EQUAL" value="0" enum="Variant.Operator"> + </constant> + <constant name="OP_NOT_EQUAL" value="1" enum="Variant.Operator"> + </constant> + <constant name="OP_LESS" value="2" enum="Variant.Operator"> + </constant> + <constant name="OP_LESS_EQUAL" value="3" enum="Variant.Operator"> + </constant> + <constant name="OP_GREATER" value="4" enum="Variant.Operator"> + </constant> + <constant name="OP_GREATER_EQUAL" value="5" enum="Variant.Operator"> + </constant> + <constant name="OP_ADD" value="6" enum="Variant.Operator"> + </constant> + <constant name="OP_SUBTRACT" value="7" enum="Variant.Operator"> + </constant> + <constant name="OP_MULTIPLY" value="8" enum="Variant.Operator"> + </constant> + <constant name="OP_DIVIDE" value="9" enum="Variant.Operator"> + </constant> + <constant name="OP_NEGATE" value="10" enum="Variant.Operator"> + </constant> + <constant name="OP_POSITIVE" value="11" enum="Variant.Operator"> + </constant> + <constant name="OP_MODULE" value="12" enum="Variant.Operator"> + </constant> + <constant name="OP_STRING_CONCAT" value="13" enum="Variant.Operator"> + </constant> + <constant name="OP_SHIFT_LEFT" value="14" enum="Variant.Operator"> + </constant> + <constant name="OP_SHIFT_RIGHT" value="15" enum="Variant.Operator"> + </constant> + <constant name="OP_BIT_AND" value="16" enum="Variant.Operator"> + </constant> + <constant name="OP_BIT_OR" value="17" enum="Variant.Operator"> + </constant> + <constant name="OP_BIT_XOR" value="18" enum="Variant.Operator"> + </constant> + <constant name="OP_BIT_NEGATE" value="19" enum="Variant.Operator"> + </constant> + <constant name="OP_AND" value="20" enum="Variant.Operator"> + </constant> + <constant name="OP_OR" value="21" enum="Variant.Operator"> + </constant> + <constant name="OP_XOR" value="22" enum="Variant.Operator"> + </constant> + <constant name="OP_NOT" value="23" enum="Variant.Operator"> + </constant> + <constant name="OP_IN" value="24" enum="Variant.Operator"> + </constant> + <constant name="OP_MAX" value="25" enum="Variant.Operator"> + </constant> </constants> </class> diff --git a/doc/classes/@NativeScript.xml b/doc/classes/@NativeScript.xml index 898c30431f..8fde9e3dc3 100644 --- a/doc/classes/@NativeScript.xml +++ b/doc/classes/@NativeScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="@NativeScript" category="Core" version="3.0-beta"> +<class name="@NativeScript" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/@VisualScript.xml b/doc/classes/@VisualScript.xml index 0d105b4274..4867a5a22b 100644 --- a/doc/classes/@VisualScript.xml +++ b/doc/classes/@VisualScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="@VisualScript" category="Core" version="3.0-beta"> +<class name="@VisualScript" category="Core" version="3.0-stable"> <brief_description> Built-in visual script functions. </brief_description> diff --git a/doc/classes/AABB.xml b/doc/classes/AABB.xml index 4aef151fbd..f253d49dc0 100644 --- a/doc/classes/AABB.xml +++ b/doc/classes/AABB.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AABB" category="Built-In Types" version="3.0-beta"> +<class name="AABB" category="Built-In Types" version="3.0-stable"> <brief_description> Axis-Aligned Bounding Box. </brief_description> @@ -7,6 +7,7 @@ AABB consists of a position, a size, and several utility functions. It is typically used for fast overlap tests. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/math/index.html </tutorials> <demos> </demos> diff --git a/doc/classes/ARVRAnchor.xml b/doc/classes/ARVRAnchor.xml index 88862ec5f1..cc9370e8fe 100644 --- a/doc/classes/ARVRAnchor.xml +++ b/doc/classes/ARVRAnchor.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Anchor point in AR Space </brief_description> diff --git a/doc/classes/ARVRCamera.xml b/doc/classes/ARVRCamera.xml index 5195568e67..b603a69337 100644 --- a/doc/classes/ARVRCamera.xml +++ b/doc/classes/ARVRCamera.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRCamera" inherits="Camera" category="Core" version="3.0-beta"> +<class name="ARVRCamera" inherits="Camera" category="Core" version="3.0-stable"> <brief_description> A camera node with a few overrules for AR/VR applied such as location tracking. </brief_description> diff --git a/doc/classes/ARVRController.xml b/doc/classes/ARVRController.xml index 2adc073ebe..07692f5ab2 100644 --- a/doc/classes/ARVRController.xml +++ b/doc/classes/ARVRController.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRController" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="ARVRController" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> A spatial node representing a spatially tracked controller. </brief_description> diff --git a/doc/classes/ARVRInterface.xml b/doc/classes/ARVRInterface.xml index d00b5eeaf4..bf9dde7706 100644 --- a/doc/classes/ARVRInterface.xml +++ b/doc/classes/ARVRInterface.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRInterface" inherits="Reference" category="Core" version="3.0-beta"> +<class name="ARVRInterface" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Base class for ARVR interface implementation. </brief_description> @@ -91,7 +91,7 @@ This interface support 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 get_render_targetsize. Using a seperate 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 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. diff --git a/doc/classes/ARVROrigin.xml b/doc/classes/ARVROrigin.xml index 6e0999a1f9..ec9b79bf84 100644 --- a/doc/classes/ARVROrigin.xml +++ b/doc/classes/ARVROrigin.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Our origin point in AR/VR. </brief_description> diff --git a/doc/classes/ARVRPositionalTracker.xml b/doc/classes/ARVRPositionalTracker.xml index 88740f5dc1..ea2139406b 100644 --- a/doc/classes/ARVRPositionalTracker.xml +++ b/doc/classes/ARVRPositionalTracker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.0-beta"> +<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.0-stable"> <brief_description> A tracked object </brief_description> diff --git a/doc/classes/ARVRServer.xml b/doc/classes/ARVRServer.xml index ffe6c35240..29d217d1d3 100644 --- a/doc/classes/ARVRServer.xml +++ b/doc/classes/ARVRServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRServer" inherits="Object" category="Core" version="3.0-beta"> +<class name="ARVRServer" inherits="Object" category="Core" version="3.0-stable"> <brief_description> This is our AR/VR Server. </brief_description> @@ -14,7 +14,7 @@ <method name="center_on_hmd"> <return type="void"> </return> - <argument index="0" name="rotation_mode" type="bool"> + <argument index="0" name="rotation_mode" type="int" enum="ARVRServer.RotationMode"> </argument> <argument index="1" name="keep_height" type="bool"> </argument> @@ -49,7 +49,7 @@ <return type="int"> </return> <description> - Get the number of interfaces currently registered with the AR/VR server. If you're game supports multiple AR/VR platforms you can look throught the available interface and either present the user with a selection or simply try an initialize each interface and use the first one that returns true. + Get the number of interfaces currently registered with the AR/VR server. If you're game supports multiple AR/VR platforms you can look through the available interface and either present the user with a selection or simply try an initialize each interface and use the first one that returns true. </description> </method> <method name="get_interfaces" qualifiers="const"> @@ -99,21 +99,21 @@ </members> <signals> <signal name="interface_added"> - <argument index="0" name="name" type="String"> + <argument index="0" name="interface_name" type="String"> </argument> <description> Signal send when a new interface has been added. </description> </signal> <signal name="interface_removed"> - <argument index="0" name="name" type="String"> + <argument index="0" name="interface_name" type="String"> </argument> <description> Signal send when an interface is removed. </description> </signal> <signal name="tracker_added"> - <argument index="0" name="name" type="String"> + <argument index="0" name="tracker_name" type="String"> </argument> <argument index="1" name="type" type="int"> </argument> @@ -124,7 +124,7 @@ </description> </signal> <signal name="tracker_removed"> - <argument index="0" name="name" type="String"> + <argument index="0" name="tracker_name" type="String"> </argument> <argument index="1" name="type" type="int"> </argument> diff --git a/doc/classes/AStar.xml b/doc/classes/AStar.xml index e0e3261edf..0573e4edf0 100644 --- a/doc/classes/AStar.xml +++ b/doc/classes/AStar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AStar" inherits="Reference" category="Core" version="3.0-beta"> +<class name="AStar" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> AStar class representation that uses vectors as edges. </brief_description> @@ -171,7 +171,7 @@ <method name="get_point_connections"> <return type="PoolIntArray"> </return> - <argument index="0" name="arg0" type="int"> + <argument index="0" name="id" type="int"> </argument> <description> Returns an array with the ids of the points that form the connect with the given point. diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml index 219995023e..a6cc40238b 100644 --- a/doc/classes/AcceptDialog.xml +++ b/doc/classes/AcceptDialog.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.0-beta"> +<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.0-stable"> <brief_description> Base dialog for user notification. </brief_description> diff --git a/doc/classes/AnimatedSprite.xml b/doc/classes/AnimatedSprite.xml index 9645758ea0..3e67fd6840 100644 --- a/doc/classes/AnimatedSprite.xml +++ b/doc/classes/AnimatedSprite.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Sprite node that can use multiple textures for animation. </brief_description> diff --git a/doc/classes/AnimatedSprite3D.xml b/doc/classes/AnimatedSprite3D.xml index beb65d4d28..f72211776e 100644 --- a/doc/classes/AnimatedSprite3D.xml +++ b/doc/classes/AnimatedSprite3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.0-beta"> +<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.0-stable"> <brief_description> 2D sprite node in 3D world, that can use multiple 2D textures for animation. </brief_description> diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml index f78b39eadb..f8c94dd12d 100644 --- a/doc/classes/Animation.xml +++ b/doc/classes/Animation.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Animation" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Animation" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Contains data used to animate everything in the engine. </brief_description> @@ -8,6 +8,7 @@ Animations are just data containers, and must be added to odes such as an [AnimationPlayer] or [AnimationTreePlayer] to be played back. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/animation/index.html </tutorials> <demos> </demos> @@ -50,20 +51,6 @@ Return the index of the specified track. If the track is not found, return -1. </description> </method> - <method name="get_length" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the total length of the animation (in seconds). - </description> - </method> - <method name="get_step" qualifiers="const"> - <return type="float"> - </return> - <description> - Get the animation step value. - </description> - </method> <method name="get_track_count" qualifiers="const"> <return type="int"> </return> @@ -71,13 +58,6 @@ Return the amount of tracks in the animation. </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether the animation has the loop flag set. - </description> - </method> <method name="method_track_get_key_indices" qualifiers="const"> <return type="PoolIntArray"> </return> @@ -122,33 +102,6 @@ Remove a track by specifying the track index. </description> </method> - <method name="set_length"> - <return type="void"> - </return> - <argument index="0" name="time_sec" type="float"> - </argument> - <description> - Set the total length of the animation (in seconds). Note that length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping. - </description> - </method> - <method name="set_loop"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set a flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation. - </description> - </method> - <method name="set_step"> - <return type="void"> - </return> - <argument index="0" name="size_sec" type="float"> - </argument> - <description> - Set the animation step value. - </description> - </method> <method name="track_find_key" qualifiers="const"> <return type="int"> </return> @@ -456,6 +409,17 @@ </description> </method> </methods> + <members> + <member name="length" type="float" setter="set_length" getter="get_length"> + The total length of the animation (in seconds). Note that length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping. + </member> + <member name="loop" type="bool" setter="set_loop" getter="has_loop"> + A flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation. + </member> + <member name="step" type="float" setter="set_step" getter="get_step"> + The animation step value. + </member> + </members> <constants> <constant name="TYPE_VALUE" value="0" enum="TrackType"> Value tracks set values in node properties, but only those which can be Interpolated. diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml index a244788020..b15f0ec732 100644 --- a/doc/classes/AnimationPlayer.xml +++ b/doc/classes/AnimationPlayer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AnimationPlayer" inherits="Node" category="Core" version="3.0-beta"> +<class name="AnimationPlayer" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Container and player of [Animation] resources. </brief_description> @@ -7,6 +7,8 @@ An animation player is used for general purpose playback of [Animation] resources. It contains a dictionary of animations (referenced by name) and custom blend times between their transitions. Additionally, animations can be played and blended in different channels. </description> <tutorials> + http://docs.godotengine.org/en/3.0/getting_started/step_by_step/animations.html + http://docs.godotengine.org/en/3.0/tutorials/animation/index.html </tutorials> <demos> </demos> @@ -90,13 +92,6 @@ Returns the list of stored animation names. </description> </method> - <method name="get_autoplay" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the name of the animation that will be automatically played when the scene is loaded. - </description> - </method> <method name="get_blend_time" qualifiers="const"> <return type="float"> </return> @@ -108,34 +103,6 @@ Get the blend time (in seconds) between two animations, referenced by their names. </description> </method> - <method name="get_current_animation" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the name of the animation being played. - </description> - </method> - <method name="get_current_animation_length" qualifiers="const"> - <return type="float"> - </return> - <description> - Get the length (in seconds) of the currently being played animation. - </description> - </method> - <method name="get_current_animation_position" qualifiers="const"> - <return type="float"> - </return> - <description> - Get the position (in seconds) of the currently playing animation. - </description> - </method> - <method name="get_speed_scale" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the speed scaling ratio of the current animation channel. For instance, if this value is 1 then the animation plays at normal speed. If it's 0.5 then it plays at half speed. If it's 2 then it plays at double speed. - </description> - </method> <method name="has_animation" qualifiers="const"> <return type="bool"> </return> @@ -145,13 +112,6 @@ Returns [code]true[/code] if the [code]AnimationPlayer[/code] stores an [Animation] with key [code]name[/code]. </description> </method> - <method name="is_active" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the player is active. - </description> - </method> <method name="is_playing" qualifiers="const"> <return type="bool"> </return> @@ -226,24 +186,6 @@ Seek the animation to the [code]seconds[/code] point in time (in seconds). If [code]update[/code] is [code]true[/code], the animation updates too, otherwise it updates at process time. </description> </method> - <method name="set_active"> - <return type="void"> - </return> - <argument index="0" name="active" type="bool"> - </argument> - <description> - Sets the player as active (playing). If [code]true[/code], updates animations in response to process-related notifications. Default value: [code]true[/code]. - </description> - </method> - <method name="set_autoplay"> - <return type="void"> - </return> - <argument index="0" name="name" type="String"> - </argument> - <description> - Defines the name of the animation to play when the scene loads. Default value: [code]""[/code]. - </description> - </method> <method name="set_blend_time"> <return type="void"> </return> @@ -257,24 +199,6 @@ Specify a blend time (in seconds) between two animations, referenced by their names. </description> </method> - <method name="set_current_animation"> - <return type="void"> - </return> - <argument index="0" name="anim" type="String"> - </argument> - <description> - Sets the name of the current animation. If already playing, restarts the animation. Ensure [member active] is [code]true[/code] to simulate [method play]. Default value: [code]""[/code]. - </description> - </method> - <method name="set_speed_scale"> - <return type="void"> - </return> - <argument index="0" name="speed" type="float"> - </argument> - <description> - Sets the speed scaling ratio in a given animation channel (or channel 0 if none is provided). Default value: [code]1[/code]. - </description> - </method> <method name="stop"> <return type="void"> </return> @@ -286,12 +210,33 @@ </method> </methods> <members> + <member name="assigned_animation" type="String" setter="set_assigned_animation" getter="get_assigned_animation"> + If playing, the current animation; otherwise, the animation last played. When set, would change the animation, but would not play it unless currently playing. See also [member current_animation]. + </member> + <member name="autoplay" type="String" setter="set_autoplay" getter="get_autoplay"> + The name of the animation to play when the scene loads. Default value: [code]""[/code]. + </member> + <member name="current_animation" type="String" setter="set_current_animation" getter="get_current_animation"> + The name of the current animation, "" if not playing anything. When being set, does not restart the animation. See also [method play]. Default value: [code]""[/code]. + </member> + <member name="current_animation_length" type="float" setter="" getter="get_current_animation_length"> + The length (in seconds) of the currently being played animation. + </member> + <member name="current_animation_position" type="float" setter="" getter="get_current_animation_position"> + The position (in seconds) of the currently playing animation. + </member> + <member name="playback_active" type="bool" setter="set_active" getter="is_active"> + If [code]true[/code], updates animations in response to process-related notifications. Default value: [code]true[/code]. + </member> <member name="playback_default_blend_time" type="float" setter="set_default_blend_time" getter="get_default_blend_time"> The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 precision. Default value: [code]0[/code]. </member> <member name="playback_process_mode" type="int" setter="set_animation_process_mode" getter="get_animation_process_mode" enum="AnimationPlayer.AnimationProcessMode"> The process notification in which to update animations. Default value: [enum ANIMATION_PROCESS_IDLE]. </member> + <member name="playback_speed" type="float" setter="set_speed_scale" getter="get_speed_scale"> + The speed scaling ratio. For instance, if this value is 1 then the animation plays at normal speed. If it's 0.5 then it plays at half speed. If it's 2 then it plays at double speed. Default value: [code]1[/code]. + </member> <member name="root_node" type="NodePath" setter="set_root" getter="get_root"> The node from which node path references will travel. Default value: [code]".."[/code]. </member> @@ -307,14 +252,14 @@ </description> </signal> <signal name="animation_finished"> - <argument index="0" name="name" type="String"> + <argument index="0" name="anim_name" type="String"> </argument> <description> Notifies when an animation finished playing. </description> </signal> <signal name="animation_started"> - <argument index="0" name="name" type="String"> + <argument index="0" name="anim_name" type="String"> </argument> <description> Notifies when an animation starts playing. diff --git a/doc/classes/AnimationTreePlayer.xml b/doc/classes/AnimationTreePlayer.xml index ecd1f81951..c09121857e 100644 --- a/doc/classes/AnimationTreePlayer.xml +++ b/doc/classes/AnimationTreePlayer.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.0-beta"> +<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.0-stable"> <brief_description> - Animation Player that uses a node graph for the blending. + Animation Player that uses a node graph for blending Animations. </brief_description> <description> A node graph tool for blending multiple animations bound to an [AnimationPlayer]. Especially useful for animating characters or other skeleton-based rigs. It can combine several animations to form a desired pose. + It takes [Animation]s from an [AnimationPlayer] node and mixes them depending on the graph. </description> <tutorials> </tutorials> @@ -37,7 +38,7 @@ <argument index="0" name="id" type="String"> </argument> <description> - Returns the [AnimationPlayer]'s animation bound to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code]. + Returns the [AnimationPlayer]'s [Animation] bound to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code]. </description> </method> <method name="animation_node_get_master_animation" qualifiers="const"> @@ -46,7 +47,7 @@ <argument index="0" name="id" type="String"> </argument> <description> - Returns the name of the [member master_player]'s animation bound to this animation node. + Returns the name of the [member master_player]'s [Animation] bound to this animation node. </description> </method> <method name="animation_node_set_animation"> @@ -57,7 +58,7 @@ <argument index="1" name="animation" type="Animation"> </argument> <description> - Binds a new animation from the [member master_player] to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code]. + Binds a new [Animation] from the [member master_player] to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code]. </description> </method> <method name="animation_node_set_filter_path"> @@ -81,7 +82,7 @@ <argument index="1" name="source" type="String"> </argument> <description> - Binds the animation named [code]source[/code] from [member master_player] to the animation node [code]id[/code]. Recalculates caches. + Binds the [Animation] named [code]source[/code] from [member master_player] to the animation node [code]id[/code]. Recalculates caches. </description> </method> <method name="are_nodes_connected" qualifiers="const"> @@ -115,6 +116,10 @@ </argument> <description> Sets the blend amount of a Blend2 node given its name and value. + A Blend2 Node blends two animations with the amount between 0 and 1. + At 0, Output is input a. + Towards 1, the influence of a gets lessened, the influence of b gets raised. + At 1, Output is input b. </description> </method> <method name="blend2_node_set_filter_path"> @@ -148,6 +153,12 @@ </argument> <description> Sets the blend amount of a Blend3 node given its name and value. + A Blend3 Node blends three animations with the amount between -1 and 1. + At -1, Output is input b-. + From -1 to 0, the influence of b- gets lessened, the influence of a gets raised and the influence of b+ is 0. + At 0, Output is input a. + From 0 to 1, the influence of a gets lessened, the influence of b+ gets raised and the influence of b+ is 0. + At 1, Output is input b+. </description> </method> <method name="blend4_node_get_amount" qualifiers="const"> @@ -168,6 +179,8 @@ </argument> <description> Sets the blend amount of a Blend4 node given its name and value. + A Blend4 Node blends two pairs of animations. + The two pairs are blended like blend2 and then added together. </description> </method> <method name="connect_nodes"> @@ -198,7 +211,7 @@ <return type="PoolStringArray"> </return> <description> - Returns a PoolStringArray containing the name of all nodes. + Returns a [PoolStringArray] containing the name of all nodes. </description> </method> <method name="mix_node_get_amount" qualifiers="const"> @@ -219,6 +232,7 @@ </argument> <description> Sets mix amount of a Mix node given its name and value. + A Mix node adds input b to input a by a the amount given by ratio. </description> </method> <method name="node_exists" qualifiers="const"> @@ -450,7 +464,7 @@ <return type="void"> </return> <description> - Resets this AnimationTreePlayer. + Resets this [code]AnimationTreePlayer[/code]. </description> </method> <method name="timescale_node_get_scale" qualifiers="const"> @@ -471,6 +485,8 @@ </argument> <description> Sets the time scale of the TimeScale node with name [code]id[/code] to [code]scale[/code]. + The timescale node is used to speed [Animation]s up if the scale is above 1 or slow them down if it is below 1. + If applied after a blend or mix, affects all input animations to that blend or mix. </description> </method> <method name="timeseek_node_seek"> @@ -482,6 +498,7 @@ </argument> <description> Sets the time seek value of the TimeSeek node with name [code]id[/code] to [code]seconds[/code] + This functions as a seek in the [Animation] or the blend or mix of [Animation]s input in it. </description> </method> <method name="transition_node_delete_input"> @@ -510,7 +527,7 @@ <argument index="0" name="id" type="String"> </argument> <description> - Returns the number of inputs for the transition node with name [code]id[/code]. + Returns the number of inputs for the transition node with name [code]id[/code]. You can add inputs by rightclicking on the transition node. </description> </method> <method name="transition_node_get_xfade_time" qualifiers="const"> @@ -586,9 +603,11 @@ </member> <member name="base_path" type="NodePath" setter="set_base_path" getter="get_base_path"> The node from which to relatively access other nodes. Default value: [code]".."[/code]. + It accesses the Bones, so it should point to the same Node the AnimationPlayer would point its Root Node at. </member> <member name="master_player" type="NodePath" setter="set_master_player" getter="get_master_player"> The path to the [AnimationPlayer] from which this [code]AnimationTreePlayer[/code] binds animations to animation nodes. + Once set, Animation nodes can be added to the AnimationTreePlayer. </member> <member name="playback_process_mode" type="int" setter="set_animation_process_mode" getter="get_animation_process_mode" enum="AnimationTreePlayer.AnimationProcessMode"> The thread in which to update animations. Default value: [enum ANIMATION_PROCESS_IDLE]. diff --git a/doc/classes/Area.xml b/doc/classes/Area.xml index b74e767fd2..2853159c0e 100644 --- a/doc/classes/Area.xml +++ b/doc/classes/Area.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Area" inherits="CollisionObject" category="Core" version="3.0-beta"> +<class name="Area" inherits="CollisionObject" category="Core" version="3.0-stable"> <brief_description> General purpose area node for detection and 3D physics influence. </brief_description> @@ -33,14 +33,14 @@ <return type="Array"> </return> <description> - Returns a list of intersecting [code]Area[/code]s. + Returns a list of intersecting [code]Area[/code]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> <method name="get_overlapping_bodies" qualifiers="const"> <return type="Array"> </return> <description> - Returns a list of intersecting [PhysicsBody]s. + Returns a list of intersecting [PhysicsBody]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> <method name="overlaps_area" qualifiers="const"> @@ -49,7 +49,7 @@ <argument index="0" name="area" type="Node"> </argument> <description> - If [code]true[/code] the given area overlaps the Area. + If [code]true[/code] the given area overlaps the Area. Note that the result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead. </description> </method> <method name="overlaps_body" qualifiers="const"> @@ -58,7 +58,7 @@ <argument index="0" name="body" type="Node"> </argument> <description> - If [code]true[/code] the given body overlaps the Area. + If [code]true[/code] the given body overlaps the Area. Note that the result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead. </description> </method> <method name="set_collision_layer_bit"> diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml index 6a3f0e7645..8e8382d5de 100644 --- a/doc/classes/Area2D.xml +++ b/doc/classes/Area2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.0-beta"> +<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.0-stable"> <brief_description> 2D area for detection and 2D physics influence. </brief_description> @@ -33,14 +33,14 @@ <return type="Array"> </return> <description> - Returns a list of intersecting [code]Area2D[/code]s. + Returns a list of intersecting [code]Area2D[/code]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> <method name="get_overlapping_bodies" qualifiers="const"> <return type="Array"> </return> <description> - Returns a list of intersecting [PhysicsBody2D]s. + Returns a list of intersecting [PhysicsBody2D]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> <method name="overlaps_area" qualifiers="const"> @@ -49,7 +49,7 @@ <argument index="0" name="area" type="Node"> </argument> <description> - If [code]true[/code] the given area overlaps the Area2D. + If [code]true[/code] the given area overlaps the Area2D. Note that the result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead. </description> </method> <method name="overlaps_body" qualifiers="const"> @@ -58,7 +58,7 @@ <argument index="0" name="body" type="Node"> </argument> <description> - If [code]true[/code] the given body overlaps the Area2D. + If [code]true[/code] the given body overlaps the Area2D. Note that the result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead. </description> </method> <method name="set_collision_layer_bit"> diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index 9445a1732e..4d282761fe 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Array" category="Built-In Types" version="3.0-beta"> +<class name="Array" category="Built-In Types" version="3.0-stable"> <brief_description> Generic array datatype. </brief_description> diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml index 92c4fe2fe7..7b74b678bd 100644 --- a/doc/classes/ArrayMesh.xml +++ b/doc/classes/ArrayMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.0-beta"> +<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -51,12 +51,6 @@ <description> </description> </method> - <method name="get_blend_shape_mode" qualifiers="const"> - <return type="int" enum="Mesh.BlendShapeMode"> - </return> - <description> - </description> - </method> <method name="get_blend_shape_name" qualifiers="const"> <return type="String"> </return> @@ -65,12 +59,6 @@ <description> </description> </method> - <method name="get_custom_aabb" qualifiers="const"> - <return type="AABB"> - </return> - <description> - </description> - </method> <method name="get_surface_count" qualifiers="const"> <return type="int"> </return> @@ -84,22 +72,6 @@ <description> </description> </method> - <method name="set_blend_shape_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="Mesh.BlendShapeMode"> - </argument> - <description> - </description> - </method> - <method name="set_custom_aabb"> - <return type="void"> - </return> - <argument index="0" name="aabb" type="AABB"> - </argument> - <description> - </description> - </method> <method name="surface_get_array_index_len" qualifiers="const"> <return type="int"> </return> @@ -212,6 +184,12 @@ </description> </method> </methods> + <members> + <member name="blend_shape_mode" type="int" setter="set_blend_shape_mode" getter="get_blend_shape_mode" enum="Mesh.BlendShapeMode"> + </member> + <member name="custom_aabb" type="AABB" setter="set_custom_aabb" getter="get_custom_aabb"> + </member> + </members> <constants> <constant name="NO_INDEX_ARRAY" value="-1"> Default value used for index_array_len when no indices are present. diff --git a/doc/classes/AtlasTexture.xml b/doc/classes/AtlasTexture.xml index f1a79bc312..87cd072d99 100644 --- a/doc/classes/AtlasTexture.xml +++ b/doc/classes/AtlasTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AtlasTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="AtlasTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> Packs multiple small textures in a single, bigger one. Helps to optimize video memory costs and render calls. </brief_description> diff --git a/doc/classes/AudioBusLayout.xml b/doc/classes/AudioBusLayout.xml index a70a3e1702..d960093fc6 100644 --- a/doc/classes/AudioBusLayout.xml +++ b/doc/classes/AudioBusLayout.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.0-beta"> +<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Stores information about the audiobusses. </brief_description> diff --git a/doc/classes/AudioEffect.xml b/doc/classes/AudioEffect.xml index 0122f727d0..81c72e34b2 100644 --- a/doc/classes/AudioEffect.xml +++ b/doc/classes/AudioEffect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffect" inherits="Resource" category="Core" version="3.0-beta"> +<class name="AudioEffect" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Audio Effect For Audio. </brief_description> diff --git a/doc/classes/AudioEffectAmplify.xml b/doc/classes/AudioEffectAmplify.xml index efdf6c3b9b..7a031f7f47 100644 --- a/doc/classes/AudioEffectAmplify.xml +++ b/doc/classes/AudioEffectAmplify.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Amplify audio effect to an Audio bus. Increases or decreases the volume of the selected audio bus. diff --git a/doc/classes/AudioEffectBandLimitFilter.xml b/doc/classes/AudioEffectBandLimitFilter.xml index 64542e8b92..592735e098 100644 --- a/doc/classes/AudioEffectBandLimitFilter.xml +++ b/doc/classes/AudioEffectBandLimitFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> Adds a band limit filter to the Audio Bus. </brief_description> diff --git a/doc/classes/AudioEffectBandPassFilter.xml b/doc/classes/AudioEffectBandPassFilter.xml index dbc8b2c85a..3705590c83 100644 --- a/doc/classes/AudioEffectBandPassFilter.xml +++ b/doc/classes/AudioEffectBandPassFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> Adds a band pass filter to the Audio Bus. </brief_description> diff --git a/doc/classes/AudioEffectChorus.xml b/doc/classes/AudioEffectChorus.xml index 465fda28da..4bcd0e2552 100644 --- a/doc/classes/AudioEffectChorus.xml +++ b/doc/classes/AudioEffectChorus.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a chorus audio effect. </brief_description> diff --git a/doc/classes/AudioEffectCompressor.xml b/doc/classes/AudioEffectCompressor.xml index dd9d6481e2..4fd28326a2 100644 --- a/doc/classes/AudioEffectCompressor.xml +++ b/doc/classes/AudioEffectCompressor.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Compressor audio effect to an Audio bus. Reduces sounds that exceed a certain threshold level, smooths out the dynamics and increases the overall volume. diff --git a/doc/classes/AudioEffectDelay.xml b/doc/classes/AudioEffectDelay.xml index c961f1f582..d253ffab96 100644 --- a/doc/classes/AudioEffectDelay.xml +++ b/doc/classes/AudioEffectDelay.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Delay audio effect to an Audio bus. Plays input signal back after a period of time. Two tap delay and feedback options. diff --git a/doc/classes/AudioEffectDistortion.xml b/doc/classes/AudioEffectDistortion.xml index fd77a91570..91a1961b30 100644 --- a/doc/classes/AudioEffectDistortion.xml +++ b/doc/classes/AudioEffectDistortion.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Distortion audio effect to an Audio bus. Modify the sound to make it dirty. diff --git a/doc/classes/AudioEffectEQ.xml b/doc/classes/AudioEffectEQ.xml index a78b9e4bb1..667982d529 100644 --- a/doc/classes/AudioEffectEQ.xml +++ b/doc/classes/AudioEffectEQ.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Base class for audio equalizers. Gives you control over frequencies. Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] or [AudioEffectEQ21] don't fit your needs. diff --git a/doc/classes/AudioEffectEQ10.xml b/doc/classes/AudioEffectEQ10.xml index 9a007f80b1..9e5303a266 100644 --- a/doc/classes/AudioEffectEQ10.xml +++ b/doc/classes/AudioEffectEQ10.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectEQ10" inherits="AudioEffectEQ" category="Core" version="3.0-beta"> +<class name="AudioEffectEQ10" inherits="AudioEffectEQ" category="Core" version="3.0-stable"> <brief_description> Adds a 10-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 31 Hz to 16000 Hz. Each frequency can be modulated between -60/+24 dB. diff --git a/doc/classes/AudioEffectEQ21.xml b/doc/classes/AudioEffectEQ21.xml index 6e13291895..ec0db8bbbe 100644 --- a/doc/classes/AudioEffectEQ21.xml +++ b/doc/classes/AudioEffectEQ21.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectEQ21" inherits="AudioEffectEQ" category="Core" version="3.0-beta"> +<class name="AudioEffectEQ21" inherits="AudioEffectEQ" category="Core" version="3.0-stable"> <brief_description> Adds a 21-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 22 Hz to 22000 Hz. Each frequency can be modulated between -60/+24 dB. diff --git a/doc/classes/AudioEffectEQ6.xml b/doc/classes/AudioEffectEQ6.xml index ecfc7afeed..f5748f0a36 100644 --- a/doc/classes/AudioEffectEQ6.xml +++ b/doc/classes/AudioEffectEQ6.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectEQ6" inherits="AudioEffectEQ" category="Core" version="3.0-beta"> +<class name="AudioEffectEQ6" inherits="AudioEffectEQ" category="Core" version="3.0-stable"> <brief_description> Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz. Each frequency can be modulated between -60/+24 dB. diff --git a/doc/classes/AudioEffectFilter.xml b/doc/classes/AudioEffectFilter.xml index 3e1848f314..9c0eb38612 100644 --- a/doc/classes/AudioEffectFilter.xml +++ b/doc/classes/AudioEffectFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a filter to the Audio Bus. </brief_description> diff --git a/doc/classes/AudioEffectHighPassFilter.xml b/doc/classes/AudioEffectHighPassFilter.xml index ac57ec0d2f..451c65a228 100644 --- a/doc/classes/AudioEffectHighPassFilter.xml +++ b/doc/classes/AudioEffectHighPassFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> Adds a high pass filter to the Audio Bus. </brief_description> diff --git a/doc/classes/AudioEffectHighShelfFilter.xml b/doc/classes/AudioEffectHighShelfFilter.xml index 9496fcbffe..a26d4a4e6b 100644 --- a/doc/classes/AudioEffectHighShelfFilter.xml +++ b/doc/classes/AudioEffectHighShelfFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/AudioEffectLimiter.xml b/doc/classes/AudioEffectLimiter.xml index e641be782d..b6fe7b74e5 100644 --- a/doc/classes/AudioEffectLimiter.xml +++ b/doc/classes/AudioEffectLimiter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectLimiter" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectLimiter" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a soft clip Limiter audio effect to an Audio bus. </brief_description> diff --git a/doc/classes/AudioEffectLowPassFilter.xml b/doc/classes/AudioEffectLowPassFilter.xml index 50d66e874e..25c80e2ea0 100644 --- a/doc/classes/AudioEffectLowPassFilter.xml +++ b/doc/classes/AudioEffectLowPassFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> Adds a low pass filter to the Audio Bus. </brief_description> diff --git a/doc/classes/AudioEffectLowShelfFilter.xml b/doc/classes/AudioEffectLowShelfFilter.xml index 689faba672..f60429ca15 100644 --- a/doc/classes/AudioEffectLowShelfFilter.xml +++ b/doc/classes/AudioEffectLowShelfFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/AudioEffectNotchFilter.xml b/doc/classes/AudioEffectNotchFilter.xml index dc160ae3e6..ac78d9c3e5 100644 --- a/doc/classes/AudioEffectNotchFilter.xml +++ b/doc/classes/AudioEffectNotchFilter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta"> +<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable"> <brief_description> Adds a notch filter to the Audio Bus. </brief_description> diff --git a/doc/classes/AudioEffectPanner.xml b/doc/classes/AudioEffectPanner.xml index 05a6444a1e..493e83393a 100644 --- a/doc/classes/AudioEffectPanner.xml +++ b/doc/classes/AudioEffectPanner.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectPanner" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectPanner" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Panner audio effect to an Audio bus. Pans sound left or right. </brief_description> diff --git a/doc/classes/AudioEffectPhaser.xml b/doc/classes/AudioEffectPhaser.xml index 6b82a4d32a..3cc89e73f8 100644 --- a/doc/classes/AudioEffectPhaser.xml +++ b/doc/classes/AudioEffectPhaser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectPhaser" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectPhaser" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Phaser audio effect to an Audio bus. Combines the original signal with a copy that is slightly out of phase with the original. diff --git a/doc/classes/AudioEffectPitchShift.xml b/doc/classes/AudioEffectPitchShift.xml index a6d2bef9ff..b0e7dbc049 100644 --- a/doc/classes/AudioEffectPitchShift.xml +++ b/doc/classes/AudioEffectPitchShift.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectPitchShift" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectPitchShift" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Pitch shift audio effect to an Audio bus. Raises or lowers the pitch of original sound. diff --git a/doc/classes/AudioEffectReverb.xml b/doc/classes/AudioEffectReverb.xml index 13bc66f6f3..46d1866ff0 100644 --- a/doc/classes/AudioEffectReverb.xml +++ b/doc/classes/AudioEffectReverb.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectReverb" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectReverb" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> Adds a Reverb audio effect to an Audio bus. Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces. @@ -12,20 +12,6 @@ <demos> </demos> <methods> - <method name="get_predelay_feedback" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="set_predelay_feedback"> - <return type="void"> - </return> - <argument index="0" name="feedback" type="float"> - </argument> - <description> - </description> - </method> </methods> <members> <member name="damping" type="float" setter="set_damping" getter="get_damping"> diff --git a/doc/classes/AudioEffectStereoEnhance.xml b/doc/classes/AudioEffectStereoEnhance.xml index 006145c0f1..6e6e9af5c6 100644 --- a/doc/classes/AudioEffectStereoEnhance.xml +++ b/doc/classes/AudioEffectStereoEnhance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioEffectStereoEnhance" inherits="AudioEffect" category="Core" version="3.0-beta"> +<class name="AudioEffectStereoEnhance" inherits="AudioEffect" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml index 1d861d5a4f..a6352bca1e 100644 --- a/doc/classes/AudioServer.xml +++ b/doc/classes/AudioServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioServer" inherits="Object" category="Core" version="3.0-beta"> +<class name="AudioServer" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Server interface for low level audio access. </brief_description> @@ -7,6 +7,7 @@ AudioServer is a low level server interface for audio access. It is in charge of creating sample data (playable audio) as well as its playback via a voice interface. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/audio/audio_buses.html </tutorials> <demos> </demos> diff --git a/doc/classes/AudioStream.xml b/doc/classes/AudioStream.xml index 342382ca05..f06ca0f901 100644 --- a/doc/classes/AudioStream.xml +++ b/doc/classes/AudioStream.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStream" inherits="Resource" category="Core" version="3.0-beta"> +<class name="AudioStream" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Base class for audio streams. </brief_description> @@ -7,6 +7,7 @@ Base class for audio streams. Audio streams are used for music playback, or other types of streamed sounds that don't fit or require more flexibility than a [Sample]. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html </tutorials> <demos> </demos> diff --git a/doc/classes/AudioStreamPlayback.xml b/doc/classes/AudioStreamPlayback.xml index 663b2b57a4..3babff52d1 100644 --- a/doc/classes/AudioStreamPlayback.xml +++ b/doc/classes/AudioStreamPlayback.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamPlayback" inherits="Reference" category="Core" version="3.0-beta"> +<class name="AudioStreamPlayback" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Meta class for playing back audio. </brief_description> diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml index 032473113c..e2cb442c36 100644 --- a/doc/classes/AudioStreamPlayer.xml +++ b/doc/classes/AudioStreamPlayer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamPlayer" inherits="Node" category="Core" version="3.0-beta"> +<class name="AudioStreamPlayer" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Plays back audio. </brief_description> @@ -8,6 +8,7 @@ </description> <tutorials> http://docs.godotengine.org/en/latest/learning/features/audio/index.html + http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html </tutorials> <demos> </demos> diff --git a/doc/classes/AudioStreamPlayer2D.xml b/doc/classes/AudioStreamPlayer2D.xml index 63e569ee39..2abb86472b 100644 --- a/doc/classes/AudioStreamPlayer2D.xml +++ b/doc/classes/AudioStreamPlayer2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamPlayer2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="AudioStreamPlayer2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Plays audio in 2D. </brief_description> @@ -8,6 +8,7 @@ </description> <tutorials> http://docs.godotengine.org/en/latest/learning/features/audio/index.html + http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html </tutorials> <demos> </demos> diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml index 21edfd12d5..a40a6b4f96 100644 --- a/doc/classes/AudioStreamPlayer3D.xml +++ b/doc/classes/AudioStreamPlayer3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamPlayer3D" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="AudioStreamPlayer3D" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Plays 3D sound in 3D space </brief_description> @@ -8,6 +8,7 @@ </description> <tutorials> http://docs.godotengine.org/en/latest/learning/features/audio/index.html + http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html </tutorials> <demos> </demos> diff --git a/doc/classes/AudioStreamRandomPitch.xml b/doc/classes/AudioStreamRandomPitch.xml index 24d6f8965a..a78c412f26 100644 --- a/doc/classes/AudioStreamRandomPitch.xml +++ b/doc/classes/AudioStreamRandomPitch.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamRandomPitch" inherits="AudioStream" category="Core" version="3.0-beta"> +<class name="AudioStreamRandomPitch" inherits="AudioStream" category="Core" version="3.0-stable"> <brief_description> Plays audio with random pitch tweaking. </brief_description> diff --git a/doc/classes/AudioStreamSample.xml b/doc/classes/AudioStreamSample.xml index 83e9729bc1..8e11a870ca 100644 --- a/doc/classes/AudioStreamSample.xml +++ b/doc/classes/AudioStreamSample.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamSample" inherits="AudioStream" category="Core" version="3.0-beta"> +<class name="AudioStreamSample" inherits="AudioStream" category="Core" version="3.0-stable"> <brief_description> Plays audio. </brief_description> @@ -11,20 +11,6 @@ <demos> </demos> <methods> - <method name="get_data" qualifiers="const"> - <return type="PoolByteArray"> - </return> - <description> - </description> - </method> - <method name="set_data"> - <return type="void"> - </return> - <argument index="0" name="data" type="PoolByteArray"> - </argument> - <description> - </description> - </method> </methods> <members> <member name="format" type="int" setter="set_format" getter="get_format" enum="AudioStreamSample.Format"> diff --git a/doc/classes/BackBufferCopy.xml b/doc/classes/BackBufferCopy.xml index 122e0c7fae..e11b55a6a0 100644 --- a/doc/classes/BackBufferCopy.xml +++ b/doc/classes/BackBufferCopy.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BackBufferCopy" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="BackBufferCopy" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Copies a region of the screen (or the whole screen) to a buffer so it can be accessed with the texscreen() shader instruction. </brief_description> diff --git a/doc/classes/BakedLightmap.xml b/doc/classes/BakedLightmap.xml index b351aeac05..a9033906dc 100644 --- a/doc/classes/BakedLightmap.xml +++ b/doc/classes/BakedLightmap.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BakedLightmap" inherits="VisualInstance" category="Core" version="3.0-beta"> +<class name="BakedLightmap" inherits="VisualInstance" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/baked_lightmaps.html </tutorials> <demos> </demos> @@ -27,38 +28,28 @@ </method> </methods> <members> - <member name="bake_mode" type="int" setter="set_bake_mode" getter="get_bake_mode" enum="BakedLightmap.BakeMode"> + <member name="bake_cell_size" type="float" setter="set_bake_cell_size" getter="get_bake_cell_size"> </member> - <member name="bake_quality" type="int" setter="set_bake_quality" getter="get_bake_quality" enum="BakedLightmap.BakeQuality"> + <member name="bake_energy" type="float" setter="set_energy" getter="get_energy"> + </member> + <member name="bake_extents" type="Vector3" setter="set_extents" getter="get_extents"> </member> - <member name="bake_subdiv" type="int" setter="set_bake_subdiv" getter="get_bake_subdiv" enum="BakedLightmap.Subdiv"> + <member name="bake_hdr" type="bool" setter="set_hdr" getter="is_hdr"> </member> - <member name="capture_subdiv" type="int" setter="set_capture_subdiv" getter="get_capture_subdiv" enum="BakedLightmap.Subdiv"> + <member name="bake_mode" type="int" setter="set_bake_mode" getter="get_bake_mode" enum="BakedLightmap.BakeMode"> </member> - <member name="energy" type="float" setter="set_energy" getter="get_energy"> + <member name="bake_propagation" type="float" setter="set_propagation" getter="get_propagation"> </member> - <member name="extents" type="Vector3" setter="set_extents" getter="get_extents"> + <member name="bake_quality" type="int" setter="set_bake_quality" getter="get_bake_quality" enum="BakedLightmap.BakeQuality"> </member> - <member name="hdr" type="bool" setter="set_hdr" getter="is_hdr"> + <member name="capture_cell_size" type="float" setter="set_capture_cell_size" getter="get_capture_cell_size"> </member> <member name="image_path" type="String" setter="set_image_path" getter="get_image_path"> </member> <member name="light_data" type="BakedLightmapData" setter="set_light_data" getter="get_light_data"> </member> - <member name="propagation" type="float" setter="set_propagation" getter="get_propagation"> - </member> </members> <constants> - <constant name="SUBDIV_128" value="0" enum="Subdiv"> - </constant> - <constant name="SUBDIV_256" value="1" enum="Subdiv"> - </constant> - <constant name="SUBDIV_512" value="2" enum="Subdiv"> - </constant> - <constant name="SUBDIV_1024" value="3" enum="Subdiv"> - </constant> - <constant name="SUBDIV_MAX" value="4" enum="Subdiv"> - </constant> <constant name="BAKE_QUALITY_LOW" value="0" enum="BakeQuality"> </constant> <constant name="BAKE_QUALITY_MEDIUM" value="1" enum="BakeQuality"> diff --git a/doc/classes/BakedLightmapData.xml b/doc/classes/BakedLightmapData.xml index 2b95cff136..0fcd984c5e 100644 --- a/doc/classes/BakedLightmapData.xml +++ b/doc/classes/BakedLightmapData.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BakedLightmapData" inherits="Resource" category="Core" version="3.0-beta"> +<class name="BakedLightmapData" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -27,30 +27,6 @@ <description> </description> </method> - <method name="get_bounds" qualifiers="const"> - <return type="AABB"> - </return> - <description> - </description> - </method> - <method name="get_cell_space_transform" qualifiers="const"> - <return type="Transform"> - </return> - <description> - </description> - </method> - <method name="get_cell_subdiv" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_octree" qualifiers="const"> - <return type="PoolByteArray"> - </return> - <description> - </description> - </method> <method name="get_user_count" qualifiers="const"> <return type="int"> </return> @@ -73,42 +49,18 @@ <description> </description> </method> - <method name="set_bounds"> - <return type="void"> - </return> - <argument index="0" name="bounds" type="AABB"> - </argument> - <description> - </description> - </method> - <method name="set_cell_space_transform"> - <return type="void"> - </return> - <argument index="0" name="xform" type="Transform"> - </argument> - <description> - </description> - </method> - <method name="set_cell_subdiv"> - <return type="void"> - </return> - <argument index="0" name="cell_subdiv" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_octree"> - <return type="void"> - </return> - <argument index="0" name="octree" type="PoolByteArray"> - </argument> - <description> - </description> - </method> </methods> <members> + <member name="bounds" type="AABB" setter="set_bounds" getter="get_bounds"> + </member> + <member name="cell_space_transform" type="Transform" setter="set_cell_space_transform" getter="get_cell_space_transform"> + </member> + <member name="cell_subdiv" type="int" setter="set_cell_subdiv" getter="get_cell_subdiv"> + </member> <member name="energy" type="float" setter="set_energy" getter="get_energy"> </member> + <member name="octree" type="PoolByteArray" setter="set_octree" getter="get_octree"> + </member> </members> <constants> </constants> diff --git a/doc/classes/BaseButton.xml b/doc/classes/BaseButton.xml index 7f1aaa6822..6d7ee544e4 100644 --- a/doc/classes/BaseButton.xml +++ b/doc/classes/BaseButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BaseButton" inherits="Control" category="Core" version="3.0-beta"> +<class name="BaseButton" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Base class for different kinds of buttons. </brief_description> @@ -21,7 +21,7 @@ <method name="_toggled" qualifiers="virtual"> <return type="void"> </return> - <argument index="0" name="pressed" type="bool"> + <argument index="0" name="button_pressed" type="bool"> </argument> <description> Called when button is toggled (only if toggle_mode is active). @@ -82,7 +82,7 @@ </description> </signal> <signal name="toggled"> - <argument index="0" name="pressed" type="bool"> + <argument index="0" name="button_pressed" type="bool"> </argument> <description> This signal is emitted when the button was just toggled between pressed and normal states (only if toggle_mode is active). The new state is contained in the [i]pressed[/i] argument. diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml index a873bd9a27..c90dfeea27 100644 --- a/doc/classes/Basis.xml +++ b/doc/classes/Basis.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Basis" category="Built-In Types" version="3.0-beta"> +<class name="Basis" category="Built-In Types" version="3.0-stable"> <brief_description> 3x3 matrix datatype. </brief_description> @@ -38,7 +38,7 @@ <argument index="1" name="phi" type="float"> </argument> <description> - Create a rotation matrix which rotates around the given axis by the specified angle. The axis must be a normalized vector. + Create a rotation matrix which rotates around the given axis by the specified angle, in radians. The axis must be a normalized vector. </description> </method> <method name="Basis"> diff --git a/doc/classes/BitMap.xml b/doc/classes/BitMap.xml index 39bf46ac3d..f85c538456 100644 --- a/doc/classes/BitMap.xml +++ b/doc/classes/BitMap.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BitMap" inherits="Resource" category="Core" version="3.0-beta"> +<class name="BitMap" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Boolean matrix. </brief_description> diff --git a/doc/classes/BitmapFont.xml b/doc/classes/BitmapFont.xml index 2fb7d7d87a..77c1e0949c 100644 --- a/doc/classes/BitmapFont.xml +++ b/doc/classes/BitmapFont.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BitmapFont" inherits="Font" category="Core" version="3.0-beta"> +<class name="BitmapFont" inherits="Font" category="Core" version="3.0-stable"> <brief_description> Renders text using [code]*.fnt[/code] fonts. </brief_description> diff --git a/doc/classes/BoneAttachment.xml b/doc/classes/BoneAttachment.xml index b7f21ebf0c..77c8bd603e 100644 --- a/doc/classes/BoneAttachment.xml +++ b/doc/classes/BoneAttachment.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BoneAttachment" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="BoneAttachment" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> A node that will attach to a bone. </brief_description> @@ -11,23 +11,12 @@ <demos> </demos> <methods> - <method name="get_bone_name" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the name of the bone node attached to. - </description> - </method> - <method name="set_bone_name"> - <return type="void"> - </return> - <argument index="0" name="bone_name" type="String"> - </argument> - <description> - Changes the name of the bone node - </description> - </method> </methods> + <members> + <member name="bone_name" type="String" setter="set_bone_name" getter="get_bone_name"> + The name of the attached bone. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/BoxContainer.xml b/doc/classes/BoxContainer.xml index 7003158387..b509e83985 100644 --- a/doc/classes/BoxContainer.xml +++ b/doc/classes/BoxContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BoxContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="BoxContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> Base class for box containers. </brief_description> diff --git a/doc/classes/BoxShape.xml b/doc/classes/BoxShape.xml index 4a4b528449..00b4b6bdbb 100644 --- a/doc/classes/BoxShape.xml +++ b/doc/classes/BoxShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BoxShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="BoxShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> Box shape resource. </brief_description> diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml index 854f1cc7c3..bc1608baf8 100644 --- a/doc/classes/Button.xml +++ b/doc/classes/Button.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Button" inherits="BaseButton" category="Core" version="3.0-beta"> +<class name="Button" inherits="BaseButton" category="Core" version="3.0-stable"> <brief_description> Standard themed Button. </brief_description> diff --git a/doc/classes/ButtonGroup.xml b/doc/classes/ButtonGroup.xml index 2c857371f9..19a75843e1 100644 --- a/doc/classes/ButtonGroup.xml +++ b/doc/classes/ButtonGroup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ButtonGroup" inherits="Resource" category="Core" version="3.0-beta"> +<class name="ButtonGroup" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Group of Buttons. </brief_description> diff --git a/doc/classes/Camera.xml b/doc/classes/Camera.xml index 91c9ecc774..e481799c5c 100644 --- a/doc/classes/Camera.xml +++ b/doc/classes/Camera.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Camera" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Camera" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Camera node, displays from a point of view. </brief_description> @@ -150,9 +150,6 @@ <member name="v_offset" type="float" setter="set_v_offset" getter="get_v_offset"> The horizontal (Y) offset of the Camear viewport. </member> - <member name="vaspect" type="bool" setter="set_vaspect" getter="get_vaspect"> - A boolean representation of [member keep_aspect] in which [code]true[/code] is equivalent to [code]KEEP_WIDTH[/code]. - </member> </members> <constants> <constant name="PROJECTION_PERSPECTIVE" value="0" enum="Projection"> diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml index c95691d07f..f3825019a2 100644 --- a/doc/classes/Camera2D.xml +++ b/doc/classes/Camera2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Camera2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Camera2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Camera node for 2D scenes. </brief_description> @@ -47,27 +47,6 @@ Returns the location of the [code]Camera2D[/code]'s screen-center, relative to the origin. </description> </method> - <method name="get_custom_viewport" qualifiers="const"> - <return type="Node"> - </return> - <description> - Returns the [Viewport] used by the camera if it is not using the default viewport. - </description> - </method> - <method name="get_h_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the horizontal offset of the camera. - </description> - </method> - <method name="get_v_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the vertical offset of the camera. - </description> - </method> <method name="make_current"> <return type="void"> </return> @@ -83,33 +62,6 @@ This has no effect if smoothing is disabled. </description> </method> - <method name="set_custom_viewport"> - <return type="void"> - </return> - <argument index="0" name="viewport" type="Node"> - </argument> - <description> - Assigns a custom [Viewport] node to the [code]Camera2D[/code]. If [code]viewport[/code] is not a [Viewport], it re-assigns the default viewport instead. - </description> - </method> - <method name="set_h_offset"> - <return type="void"> - </return> - <argument index="0" name="ofs" type="float"> - </argument> - <description> - The camera's horizontal offset is set to [code]ofs[/code]. - </description> - </method> - <method name="set_v_offset"> - <return type="void"> - </return> - <argument index="0" name="ofs" type="float"> - </argument> - <description> - The camera's vertical offset is set to [code]ofs[/code]. - </description> - </method> </methods> <members> <member name="anchor_mode" type="int" setter="set_anchor_mode" getter="get_anchor_mode" enum="Camera2D.AnchorMode"> @@ -118,6 +70,9 @@ <member name="current" type="bool" setter="_set_current" getter="is_current"> 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. </member> + <member name="custom_viewport" type="Node" setter="set_custom_viewport" getter="get_custom_viewport"> + The custom [Viewport] node attached to the [code]Camera2D[/code]. If null or not a [Viewport], uses the default viewport instead. + </member> <member name="drag_margin_bottom" type="float" setter="set_drag_margin" getter="get_drag_margin"> Bottom margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the edge of the screen. </member> @@ -163,6 +118,12 @@ <member name="offset" type="Vector2" setter="set_offset" getter="get_offset"> The camera's offset, useful for looking around or camera shake animations. </member> + <member name="offset_h" type="float" setter="set_h_offset" getter="get_h_offset"> + The horizontal offset of the camera, relative to the drag margins. Default value: [code]0[/code] + </member> + <member name="offset_v" type="float" setter="set_v_offset" getter="get_v_offset"> + The vertical offset of the camera, relative to the drag margins. Default value: [code]0[/code] + </member> <member name="rotating" type="bool" setter="set_rotating" getter="is_rotating"> If [code]true[/code] the camera rotates with the target. Default value: [code]false[/code] </member> diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml index bd20cfcf5d..bb3d4938b8 100644 --- a/doc/classes/CanvasItem.xml +++ b/doc/classes/CanvasItem.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CanvasItem" inherits="Node" category="Core" version="3.0-beta"> +<class name="CanvasItem" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Base class of anything 2D. </brief_description> @@ -11,6 +11,8 @@ Ultimately, a transform notification can be requested, which will notify the node that its global position changed in case the parent tree changed. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html + http://docs.godotengine.org/en/3.0/tutorials/2d/custom_drawing_in_2d.html </tutorials> <demos> </demos> @@ -413,7 +415,7 @@ <return type="bool"> </return> <description> - Returns [code]true[/code] if the node is in the [SceneTree] and is visible on-screen. + Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and its inherited visibility is also [code]true[/code]. </description> </method> <method name="make_canvas_position_local" qualifiers="const"> diff --git a/doc/classes/CanvasItemMaterial.xml b/doc/classes/CanvasItemMaterial.xml index 81709227ad..5ec32bc63d 100644 --- a/doc/classes/CanvasItemMaterial.xml +++ b/doc/classes/CanvasItemMaterial.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CanvasItemMaterial" inherits="Material" category="Core" version="3.0-beta"> +<class name="CanvasItemMaterial" inherits="Material" category="Core" version="3.0-stable"> <brief_description> A material for [CanvasItem]s. </brief_description> diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml index 01c2dd6ba9..3b7ba5b1ad 100644 --- a/doc/classes/CanvasLayer.xml +++ b/doc/classes/CanvasLayer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CanvasLayer" inherits="Node" category="Core" version="3.0-beta"> +<class name="CanvasLayer" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Canvas drawing layer. </brief_description> @@ -7,31 +7,12 @@ Canvas drawing layer. [CanvasItem] nodes that are direct or indirect children of a [code]CanvasLayer[/code] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [code]CanvasLayer[/code] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below). </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html + http://docs.godotengine.org/en/3.0/tutorials/2d/canvas_layers.html </tutorials> <demos> </demos> <methods> - <method name="get_custom_viewport" qualifiers="const"> - <return type="Node"> - </return> - <description> - Returns the [Viewport] used by the camera if it is not using the default viewport. - </description> - </method> - <method name="get_rotation" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the base rotation for this layer in radians (helper). - </description> - </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform2D"> - </return> - <description> - Return the base transform for this layer. - </description> - </method> <method name="get_world_2d" qualifiers="const"> <return type="World2D"> </return> @@ -39,47 +20,29 @@ Return the [World2D] used by this layer. </description> </method> - <method name="set_custom_viewport"> - <return type="void"> - </return> - <argument index="0" name="viewport" type="Node"> - </argument> - <description> - Assigns a custom [Viewport] node to the [code]CanvasLayer[/code]. If [code]viewport[/code] is not a [Viewport], it re-assigns the default viewport instead. - </description> - </method> - <method name="set_rotation"> - <return type="void"> - </return> - <argument index="0" name="radians" type="float"> - </argument> - <description> - Set the base rotation for this layer in radians (helper). - </description> - </method> - <method name="set_transform"> - <return type="void"> - </return> - <argument index="0" name="transform" type="Transform2D"> - </argument> - <description> - Set the base transform for this layer. - </description> - </method> </methods> <members> + <member name="custom_viewport" type="Node" setter="set_custom_viewport" getter="get_custom_viewport"> + The custom [Viewport] node assigned to the [code]CanvasLayer[/code]. If null, uses the default viewport instead. + </member> <member name="layer" type="int" setter="set_layer" getter="get_layer"> Layer index for draw order. Lower values are drawn first. Default value: [code]1[/code]. </member> <member name="offset" type="Vector2" setter="set_offset" getter="get_offset"> The layer's base offset. </member> - <member name="rotation" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees"> + <member name="rotation" type="float" setter="set_rotation" getter="get_rotation"> + The layer's rotation in radians. + </member> + <member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees"> The layer's rotation in degrees. </member> <member name="scale" type="Vector2" setter="set_scale" getter="get_scale"> The layer's scale. </member> + <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform"> + The layer's transform. + </member> </members> <constants> </constants> diff --git a/doc/classes/CanvasModulate.xml b/doc/classes/CanvasModulate.xml index 117230db1c..827502d6c0 100644 --- a/doc/classes/CanvasModulate.xml +++ b/doc/classes/CanvasModulate.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CanvasModulate" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="CanvasModulate" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Tint the entire canvas. </brief_description> diff --git a/doc/classes/CapsuleMesh.xml b/doc/classes/CapsuleMesh.xml index 715bd7ac5a..3a291128c7 100644 --- a/doc/classes/CapsuleMesh.xml +++ b/doc/classes/CapsuleMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CapsuleMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="CapsuleMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Class representing a capsule-shaped [PrimitiveMesh]. </brief_description> diff --git a/doc/classes/CapsuleShape.xml b/doc/classes/CapsuleShape.xml index 25f5b8eb35..1ff4f5aa00 100644 --- a/doc/classes/CapsuleShape.xml +++ b/doc/classes/CapsuleShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CapsuleShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="CapsuleShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> Capsule shape for collisions. </brief_description> diff --git a/doc/classes/CapsuleShape2D.xml b/doc/classes/CapsuleShape2D.xml index 75a69546aa..0b306643b9 100644 --- a/doc/classes/CapsuleShape2D.xml +++ b/doc/classes/CapsuleShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CapsuleShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="CapsuleShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Capsule shape for 2D collisions. </brief_description> diff --git a/doc/classes/CenterContainer.xml b/doc/classes/CenterContainer.xml index 6235a3fec4..a4e17bf0b6 100644 --- a/doc/classes/CenterContainer.xml +++ b/doc/classes/CenterContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CenterContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="CenterContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> Keeps children controls centered. </brief_description> diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index f38b43cf8c..25340ed284 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CheckBox" inherits="Button" category="Core" version="3.0-beta"> +<class name="CheckBox" inherits="Button" category="Core" version="3.0-stable"> <brief_description> Binary choice user interface widget </brief_description> diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index 77de3c17fc..ec214fc498 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CheckButton" inherits="Button" category="Core" version="3.0-beta"> +<class name="CheckButton" inherits="Button" category="Core" version="3.0-stable"> <brief_description> Checkable button. </brief_description> diff --git a/doc/classes/CircleShape2D.xml b/doc/classes/CircleShape2D.xml index 1018790803..0c8b2088b3 100644 --- a/doc/classes/CircleShape2D.xml +++ b/doc/classes/CircleShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CircleShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="CircleShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Circular shape for 2D collisions. </brief_description> diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml index b4d4d0b448..e90a84f07c 100644 --- a/doc/classes/ClassDB.xml +++ b/doc/classes/ClassDB.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ClassDB" inherits="Object" category="Core" version="3.0-beta"> +<class name="ClassDB" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Class information repository. </brief_description> diff --git a/doc/classes/CollisionObject.xml b/doc/classes/CollisionObject.xml index 5d0984bcdf..8b397f3227 100644 --- a/doc/classes/CollisionObject.xml +++ b/doc/classes/CollisionObject.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CollisionObject" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="CollisionObject" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Base node for collision objects. </brief_description> diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml index 086513cad5..5b4ab46fd9 100644 --- a/doc/classes/CollisionObject2D.xml +++ b/doc/classes/CollisionObject2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CollisionObject2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="CollisionObject2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Base node for 2D collision objects. </brief_description> diff --git a/doc/classes/CollisionPolygon.xml b/doc/classes/CollisionPolygon.xml index ff689e36f4..79c41e632e 100644 --- a/doc/classes/CollisionPolygon.xml +++ b/doc/classes/CollisionPolygon.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CollisionPolygon" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="CollisionPolygon" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Editor-only class for defining a collision polygon in 3D space. </brief_description> diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml index 995b868f89..0b17e6d26e 100644 --- a/doc/classes/CollisionPolygon2D.xml +++ b/doc/classes/CollisionPolygon2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CollisionPolygon2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="CollisionPolygon2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Defines a 2D collision polygon. </brief_description> diff --git a/doc/classes/CollisionShape.xml b/doc/classes/CollisionShape.xml index b893ee79ad..36a015ce80 100644 --- a/doc/classes/CollisionShape.xml +++ b/doc/classes/CollisionShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CollisionShape" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="CollisionShape" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Node that represents collision shape data in 3D space. </brief_description> @@ -7,6 +7,7 @@ Editor facility for creating and editing collision shapes in 3D space. You can use this node to represent all sorts of collision shapes, for example, add this to an [Area] to give it a detection shape, or add it to a [PhysicsBody] to give create solid object. [b]IMPORTANT[/b]: this is an Editor-only helper to create shapes, use [method get_shape] to get the actual shape. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml index 2ab9540196..ed5a094996 100644 --- a/doc/classes/CollisionShape2D.xml +++ b/doc/classes/CollisionShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CollisionShape2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="CollisionShape2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Node that represents collision shape data in 2D space. </brief_description> @@ -7,6 +7,7 @@ Editor facility for creating and editing collision shapes in 2D space. You can use this node to represent all sorts of collision shapes, for example, add this to an [Area2D] to give it a detection shape, or add it to a [PhysicsBody2D] to give create solid object. [b]IMPORTANT[/b]: this is an Editor-only helper to create shapes, use [method get_shape] to get the actual shape. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml index 6fa7ed0a86..11c59531a8 100644 --- a/doc/classes/Color.xml +++ b/doc/classes/Color.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Color" category="Built-In Types" version="3.0-beta"> +<class name="Color" category="Built-In Types" version="3.0-stable"> <brief_description> Color in RGBA format with some support for ARGB format. </brief_description> <description> A color is represented as red, green and blue (r,g,b) components. Additionally, "a" represents the alpha component, often used for transparency. Values are in floating point and usually range from 0 to 1. Some methods (such as set_modulate(color)) may accept values > 1. + You can also create a color from standardised color names with [method @GDScript.ColorN]. </description> <tutorials> </tutorials> @@ -63,7 +64,7 @@ <argument index="0" name="from" type="String"> </argument> <description> - Constructs a color from an HTML hexadecimal color string in ARGB or RGB format. + Constructs a color from an HTML hexadecimal color string in ARGB or RGB format. See also [method @GDScript.ColorN]. The following string formats are supported: [code]"#ff00ff00"[/code] - ARGB format with '#' [code]"ff00ff00"[/code] - ARGB format @@ -203,8 +204,7 @@ var c = Color(1, .5, .2) print(str(c.to_32())) # prints 4294934323 [/codeblock] - - [i]This is same as [method to_ARGB32] but may be changed later to support RGBA format instead[/i]. + [i]This is same as [method to_argb32] but may be changed later to support RGBA format instead[/i]. </description> </method> </methods> diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml index 192f139ba9..c69fc360a8 100644 --- a/doc/classes/ColorPicker.xml +++ b/doc/classes/ColorPicker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ColorPicker" inherits="BoxContainer" category="Core" version="3.0-beta"> +<class name="ColorPicker" inherits="BoxContainer" category="Core" version="3.0-stable"> <brief_description> Color picker control. </brief_description> @@ -20,55 +20,18 @@ Adds the current selected to color to a list of colors (presets), the presets will be displayed in the color picker and the user will be able to select them, notice that the presets list is only for this color picker. </description> </method> - <method name="get_pick_color" qualifiers="const"> - <return type="Color"> - </return> - <description> - Gets the current color. - </description> - </method> - <method name="is_editing_alpha" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether the color has transparency or not. - </description> - </method> - <method name="is_raw_mode" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether this color picker is in raw mode or not, raw mode will allow the color R, G, B component values to go beyond 1, you have to consider that the max value for color components is 1, going beyond that value will not have effect in the color, but can be used for special operations that require it (like tinting without darkening or rendering sprites in HDR). - </description> - </method> - <method name="set_edit_alpha"> - <return type="void"> - </return> - <argument index="0" name="show" type="bool"> - </argument> - <description> - Set true if you want the color to have an alpha channel (transparency), or false if you want a solid color. - </description> - </method> - <method name="set_pick_color"> - <return type="void"> - </return> - <argument index="0" name="color" type="Color"> - </argument> - <description> - Select the current color. - </description> - </method> - <method name="set_raw_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="bool"> - </argument> - <description> - Set whether this color picker is using raw mode or not, see [method is_raw_mode]. - </description> - </method> </methods> + <members> + <member name="color" type="Color" setter="set_pick_color" getter="get_pick_color"> + The currently selected color. + </member> + <member name="edit_alpha" type="bool" setter="set_edit_alpha" getter="is_editing_alpha"> + If [code]true[/code], shows an alpha channel slider (transparency). + </member> + <member name="raw_mode" type="bool" setter="set_raw_mode" getter="is_raw_mode"> + If [code]true[/code], allows the color R, G, B component values to go beyond 1.0, which can be used for certain special operations that require it (like tinting without darkening or rendering sprites in HDR). + </member> + </members> <signals> <signal name="color_changed"> <argument index="0" name="color" type="Color"> diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml index 87d00b7600..47fc198638 100644 --- a/doc/classes/ColorPickerButton.xml +++ b/doc/classes/ColorPickerButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ColorPickerButton" inherits="Button" category="Core" version="3.0-beta"> +<class name="ColorPickerButton" inherits="Button" category="Core" version="3.0-stable"> <brief_description> Button that pops out a [ColorPicker] </brief_description> diff --git a/doc/classes/ColorRect.xml b/doc/classes/ColorRect.xml index af1b0f57e2..332d0f573f 100644 --- a/doc/classes/ColorRect.xml +++ b/doc/classes/ColorRect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ColorRect" inherits="Control" category="Core" version="3.0-beta"> +<class name="ColorRect" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Colored rect for canvas. </brief_description> diff --git a/doc/classes/ConcavePolygonShape.xml b/doc/classes/ConcavePolygonShape.xml index bae86d5b22..4700491921 100644 --- a/doc/classes/ConcavePolygonShape.xml +++ b/doc/classes/ConcavePolygonShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConcavePolygonShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="ConcavePolygonShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> Concave polygon shape. </brief_description> diff --git a/doc/classes/ConcavePolygonShape2D.xml b/doc/classes/ConcavePolygonShape2D.xml index 1d2aabd6ea..c339ee65a0 100644 --- a/doc/classes/ConcavePolygonShape2D.xml +++ b/doc/classes/ConcavePolygonShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConcavePolygonShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="ConcavePolygonShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Concave polygon 2D shape resource for physics. </brief_description> diff --git a/doc/classes/ConeTwistJoint.xml b/doc/classes/ConeTwistJoint.xml index 4fcacb6d46..b7a4894ea7 100644 --- a/doc/classes/ConeTwistJoint.xml +++ b/doc/classes/ConeTwistJoint.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConeTwistJoint" inherits="Joint" category="Core" version="3.0-beta"> +<class name="ConeTwistJoint" inherits="Joint" category="Core" version="3.0-stable"> <brief_description> A twist joint between two 3D bodies </brief_description> diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml index fcd8834b0c..17243b2100 100644 --- a/doc/classes/ConfigFile.xml +++ b/doc/classes/ConfigFile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConfigFile" inherits="Reference" category="Core" version="3.0-beta"> +<class name="ConfigFile" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Helper class to handle INI-style files. </brief_description> diff --git a/doc/classes/ConfirmationDialog.xml b/doc/classes/ConfirmationDialog.xml index 77eb1bfc2c..2759c1b883 100644 --- a/doc/classes/ConfirmationDialog.xml +++ b/doc/classes/ConfirmationDialog.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConfirmationDialog" inherits="AcceptDialog" category="Core" version="3.0-beta"> +<class name="ConfirmationDialog" inherits="AcceptDialog" category="Core" version="3.0-stable"> <brief_description> Dialog for confirmation of actions. </brief_description> diff --git a/doc/classes/Container.xml b/doc/classes/Container.xml index a2aa39414c..0447c80887 100644 --- a/doc/classes/Container.xml +++ b/doc/classes/Container.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Container" inherits="Control" category="Core" version="3.0-beta"> +<class name="Container" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Base node for containers. </brief_description> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index 6c30a92ed5..603faf6beb 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Control" inherits="CanvasItem" category="Core" version="3.0-beta"> +<class name="Control" inherits="CanvasItem" category="Core" version="3.0-stable"> <brief_description> All User Interface nodes inherit from Control. Features anchors and margins to adapt its position and size to its parent. </brief_description> @@ -8,11 +8,13 @@ For more information on Godot's UI system, anchors, margins, and containers, see the related tutorials in the manual. To build flexible UIs, you'll need a mix of UI elements that inherit from [code]Control[/code] and [Container] nodes. [b]User Interface nodes and input[/b] Godot sends input events to the scene's root node first, by calling [method Node._input]. [method Node._input] forwards the event down the node tree to the nodes under the mouse cursor, or on keyboard focus. To do so, it calls [method MainLoop._input_event]. Call [method accept_event] so no other node receives the event. Once you accepted an input, it becomes handled so [method Node._unhandled_input] will not process it. - Only one [code]Control[/code] node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the foucs, call [method set_focus_mode]. [code]Control[/code] nodes lose focus when another node grabs it, or if you hide the node in focus. + Only one [code]Control[/code] node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the focus, call [method set_focus_mode]. [code]Control[/code] nodes lose focus when another node grabs it, or if you hide the node in focus. Call [method set_ignore_mouse] to tell a [code]Control[/code] node to ignore mouse or touch events. You'll need it if you place an icon on top of a button. [Theme] resources change the Control's appearance. If you change the [Theme] on a [code]Control[/code] node, it affects all of its children. To override some of the theme's parameters, call one of the [code]add_*_override[/code] methods, like [method add_font_override]. You can override the theme with the inspector. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/gui/index.html + http://docs.godotengine.org/en/3.0/tutorials/2d/custom_drawing_in_2d.html </tutorials> <demos> </demos> @@ -96,7 +98,7 @@ Overrides the [code]name[/code] shader in the [theme] resource the node uses. If [code]shader[/code] is empty, Godot clears the override. </description> </method> - <method name="add_style_override"> + <method name="add_stylebox_override"> <return type="void"> </return> <argument index="0" name="name" type="String"> @@ -178,13 +180,6 @@ Returns the mouse cursor shape the control displays on mouse hover, one of the [code]CURSOR_*[/code] constants. </description> </method> - <method name="get_default_cursor_shape" qualifiers="const"> - <return type="int" enum="Control.CursorShape"> - </return> - <description> - Returns the default cursor shape for this control. See enum [code]CURSOR_*[/code] for the list of shapes. - </description> - </method> <method name="get_drag_data" qualifiers="virtual"> <return type="Object"> </return> @@ -200,13 +195,6 @@ Returns MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="get_focus_mode" qualifiers="const"> - <return type="int" enum="Control.FocusMode"> - </return> - <description> - Returns the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL) (see [method set_focus_mode]). - </description> - </method> <method name="get_focus_owner" qualifiers="const"> <return type="Control"> </return> @@ -224,13 +212,6 @@ <description> </description> </method> - <method name="get_global_position" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Returns the Control position, relative to the top-left corner of the parent Control and independent of the anchor mode. - </description> - </method> <method name="get_global_rect" qualifiers="const"> <return type="Rect2"> </return> @@ -400,6 +381,14 @@ <description> </description> </method> + <method name="has_shader_override" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <description> + </description> + </method> <method name="has_stylebox" qualifiers="const"> <return type="bool"> </return> @@ -490,15 +479,6 @@ Sets MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="set_default_cursor_shape"> - <return type="void"> - </return> - <argument index="0" name="shape" type="int" enum="Control.CursorShape"> - </argument> - <description> - Sets the default cursor shape for this control. See [code]CURSOR_*[/code] for the list of available cursor shapes. Useful for Godot plugins and applications or games that use the system's mouse cursors. - </description> - </method> <method name="set_drag_forwarding"> <return type="void"> </return> @@ -524,24 +504,6 @@ Sets MARGIN_RIGHT and MARGIN_BOTTOM at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="set_focus_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="Control.FocusMode"> - </argument> - <description> - Set the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL). Only one Control can be focused at the same time, and it will receive keyboard signals. - </description> - </method> - <method name="set_global_position"> - <return type="void"> - </return> - <argument index="0" name="position" type="Vector2"> - </argument> - <description> - Move the Control to a new position, relative to the top-left corner of the [i]window[/i] Control, and without changing current anchor mode. (see [method set_margin]). - </description> - </method> <method name="set_margins_preset"> <return type="void"> </return> @@ -594,6 +556,9 @@ <member name="anchor_top" type="float" setter="_set_anchor" getter="get_anchor"> Anchors the top edge of the node to the origin, the center or the end of its parent container. It changes how the top margin updates when the node moves or changes size. Use one of the [code]ANCHOR_*[/code] constants. Default value: [code]ANCHOR_BEGIN[/code]. </member> + <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode"> + The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard signals. + </member> <member name="focus_neighbour_bottom" type="NodePath" setter="set_focus_neighbour" getter="get_focus_neighbour"> Tells Godot which node it should give keyboard focus to if the user presses Tab, the down arrow on the keyboard, or down on a gamepad. The node must be a [code]Control[/code]. If this property is not set, Godot will give focus to the closest [code]Control[/code] to the bottom of this one. If the user presses Tab, Godot will give focus to the closest node to the right first, then to the bottom. If the user presses Shift+Tab, Godot will look to the left of the node, then above it. @@ -631,10 +596,17 @@ <member name="margin_top" type="float" setter="set_margin" getter="get_margin"> Distance between the node's top edge and its parent container, based on [member anchor_top]. </member> + <member name="mouse_default_cursor_shape" type="int" setter="set_default_cursor_shape" getter="get_default_cursor_shape" enum="Control.CursorShape"> + The default cursor shape for this control. Useful for Godot plugins and applications or games that use the system's mouse cursors. + </member> <member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" enum="Control.MouseFilter"> + Controls whether the control will be able to receive mouse button input events through [method _gui_input] and how these events should be handled. Use one of the [code]MOUSE_FILTER_*[/code] constants. See the constants to learn what each does. </member> <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents"> </member> + <member name="rect_global_position" type="Vector2" setter="set_global_position" getter="get_global_position"> + The node's global position, relative to the world (usually to the top-left corner of the window). + </member> <member name="rect_min_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size"> The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes. </member> @@ -696,12 +668,12 @@ </signal> <signal name="mouse_entered"> <description> - Emitted when the mouse enters the control's [code]Rect[/code] area. + Emitted when the mouse enters the control's [code]Rect[/code] area, provided its [member mouse_filter] lets the event reach it. </description> </signal> <signal name="mouse_exited"> <description> - Emitted when the mouse leaves the control's [code]Rect[/code] area. + Emitted when the mouse leaves the control's [code]Rect[/code] area, provided its [member mouse_filter] lets the event reach it. </description> </signal> <signal name="resized"> @@ -869,10 +841,13 @@ Tells the parent [Container] to align the node with its end, either the bottom or the right edge. It doesn't work with the fill or expand size flags. Use with [member size_flags_horizontal] and [member size_flags_vertical]. </constant> <constant name="MOUSE_FILTER_STOP" value="0" enum="MouseFilter"> + The control will receive mouse button input events through [method _gui_input] if clicked on. These events are automatically marked as handled and they will not propagate further to other controls. </constant> <constant name="MOUSE_FILTER_PASS" value="1" enum="MouseFilter"> + The control will receive mouse button input events through [method _gui_input] if clicked on. If this control does not handle the event, the parent control (if any) will be considered for a mouse click, and so on until there is no more parent control to potentially handle it. Even if no control handled it at all, the event will still be handled automatically. </constant> <constant name="MOUSE_FILTER_IGNORE" value="2" enum="MouseFilter"> + The control will not receive mouse button input events through [method _gui_input] and will not block other controls from receiving these events. These events will also not be handled automatically. </constant> <constant name="GROW_DIRECTION_BEGIN" value="0" enum="GrowDirection"> </constant> diff --git a/doc/classes/ConvexPolygonShape.xml b/doc/classes/ConvexPolygonShape.xml index 5ed57a5c05..2b809ca80a 100644 --- a/doc/classes/ConvexPolygonShape.xml +++ b/doc/classes/ConvexPolygonShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConvexPolygonShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="ConvexPolygonShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> Convex polygon shape for 3D physics. </brief_description> diff --git a/doc/classes/ConvexPolygonShape2D.xml b/doc/classes/ConvexPolygonShape2D.xml index a670ddc9cd..b5ce052b4b 100644 --- a/doc/classes/ConvexPolygonShape2D.xml +++ b/doc/classes/ConvexPolygonShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ConvexPolygonShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="ConvexPolygonShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Convex Polygon Shape for 2D physics. </brief_description> diff --git a/doc/classes/CubeMap.xml b/doc/classes/CubeMap.xml index 30022efd38..26fda49803 100644 --- a/doc/classes/CubeMap.xml +++ b/doc/classes/CubeMap.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CubeMap" inherits="Resource" category="Core" version="3.0-beta"> +<class name="CubeMap" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> A CubeMap is a 6 sided 3D texture. </brief_description> @@ -11,13 +11,6 @@ <demos> </demos> <methods> - <method name="get_flags" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the render flags for the [code]CubeMap[/code]. See the [code]FLAG_*[/code] constants for details. - </description> - </method> <method name="get_height" qualifiers="const"> <return type="int"> </return> @@ -41,15 +34,6 @@ Returns the [code]CubeMap[/code]'s width. </description> </method> - <method name="set_flags"> - <return type="void"> - </return> - <argument index="0" name="flags" type="int"> - </argument> - <description> - Returns the render flags for the [code]CubeMap[/code]. See the [code]FLAG_*[/code] constants for details. - </description> - </method> <method name="set_side"> <return type="void"> </return> @@ -63,6 +47,9 @@ </method> </methods> <members> + <member name="flags" type="int" setter="set_flags" getter="get_flags"> + The render flags for the [code]CubeMap[/code]. See the [code]FLAG_*[/code] constants for details. + </member> <member name="lossy_storage_quality" type="float" setter="set_lossy_storage_quality" getter="get_lossy_storage_quality"> The lossy storage quality of the [code]CubeMap[/code] if the storage mode is set to STORAGE_COMPRESS_LOSSY. </member> diff --git a/doc/classes/CubeMesh.xml b/doc/classes/CubeMesh.xml index 56ca64e10a..c7ec4d9dfe 100644 --- a/doc/classes/CubeMesh.xml +++ b/doc/classes/CubeMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CubeMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="CubeMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Generate an axis-aligned cuboid [PrimitiveMesh]. </brief_description> diff --git a/doc/classes/Curve.xml b/doc/classes/Curve.xml index 8a007cc5cc..388d8ab54f 100644 --- a/doc/classes/Curve.xml +++ b/doc/classes/Curve.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Curve" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Curve" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> A mathematic curve. </brief_description> diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml index 8a857799e6..2dbfcbc6ec 100644 --- a/doc/classes/Curve2D.xml +++ b/doc/classes/Curve2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Curve2D" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Curve2D" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Describes a Bezier curve in 2D space. </brief_description> diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml index 91d7a9bed8..acb6b0d72f 100644 --- a/doc/classes/Curve3D.xml +++ b/doc/classes/Curve3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Curve3D" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Curve3D" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Describes a Bezier curve in 3D space. </brief_description> diff --git a/doc/classes/CurveTexture.xml b/doc/classes/CurveTexture.xml index f62da8a135..bc090d623a 100644 --- a/doc/classes/CurveTexture.xml +++ b/doc/classes/CurveTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CurveTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="CurveTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> A texture that shows a curve. </brief_description> diff --git a/doc/classes/CylinderMesh.xml b/doc/classes/CylinderMesh.xml index 57c0027c4c..e57ffd2841 100644 --- a/doc/classes/CylinderMesh.xml +++ b/doc/classes/CylinderMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CylinderMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="CylinderMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Class representing a cylindrical [PrimitiveMesh]. </brief_description> diff --git a/doc/classes/DampedSpringJoint2D.xml b/doc/classes/DampedSpringJoint2D.xml index a49f03eb07..950817dc04 100644 --- a/doc/classes/DampedSpringJoint2D.xml +++ b/doc/classes/DampedSpringJoint2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="DampedSpringJoint2D" inherits="Joint2D" category="Core" version="3.0-beta"> +<class name="DampedSpringJoint2D" inherits="Joint2D" category="Core" version="3.0-stable"> <brief_description> Damped spring constraint for 2D physics. </brief_description> diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml index 08c01c1d85..37845dbae4 100644 --- a/doc/classes/Dictionary.xml +++ b/doc/classes/Dictionary.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Dictionary" category="Built-In Types" version="3.0-beta"> +<class name="Dictionary" category="Built-In Types" version="3.0-stable"> <brief_description> Dictionary type. </brief_description> diff --git a/doc/classes/DirectionalLight.xml b/doc/classes/DirectionalLight.xml index 287c98e715..bbb8936a12 100644 --- a/doc/classes/DirectionalLight.xml +++ b/doc/classes/DirectionalLight.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="DirectionalLight" inherits="Light" category="Core" version="3.0-beta"> +<class name="DirectionalLight" inherits="Light" category="Core" version="3.0-stable"> <brief_description> Directional Light, such as the Sun or the Moon. </brief_description> @@ -7,6 +7,7 @@ A DirectionalLight is a type of [Light] node that emits light constantly in one direction (the negative z axis of the node). It is used lights with strong intensity that are located far away from the scene to model sunlight or moonlight. The worldspace location of the DirectionalLight transform (origin) is ignored, only the basis is used do determine light direction. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html </tutorials> <demos> </demos> diff --git a/doc/classes/Directory.xml b/doc/classes/Directory.xml index c87d1ef006..bfd1e2872d 100644 --- a/doc/classes/Directory.xml +++ b/doc/classes/Directory.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Directory" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Directory" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Type used to handle the filesystem. </brief_description> @@ -23,6 +23,7 @@ [/codeblock] </description> <tutorials> + http://docs.godotengine.org/en/3.0/getting_started/step_by_step/filesystem.html </tutorials> <demos> </demos> diff --git a/doc/classes/DynamicFont.xml b/doc/classes/DynamicFont.xml index eae7a1b02b..06291c1e61 100644 --- a/doc/classes/DynamicFont.xml +++ b/doc/classes/DynamicFont.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="DynamicFont" inherits="Font" category="Core" version="3.0-beta"> +<class name="DynamicFont" inherits="Font" category="Core" version="3.0-stable"> <brief_description> DynamicFont renders vector font files at runtime. </brief_description> diff --git a/doc/classes/DynamicFontData.xml b/doc/classes/DynamicFontData.xml index 360f0cb0d8..5f4e598f36 100644 --- a/doc/classes/DynamicFontData.xml +++ b/doc/classes/DynamicFontData.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="DynamicFontData" inherits="Resource" category="Core" version="3.0-beta"> +<class name="DynamicFontData" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Used with [DynamicFont] to describe the location of a font file. </brief_description> diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml index ef430d31be..ede892e7ef 100644 --- a/doc/classes/EditorExportPlugin.xml +++ b/doc/classes/EditorExportPlugin.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorExportPlugin" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorExportPlugin" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/EditorFileDialog.xml b/doc/classes/EditorFileDialog.xml index 1a1c382e59..b3a12dbede 100644 --- a/doc/classes/EditorFileDialog.xml +++ b/doc/classes/EditorFileDialog.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorFileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-beta"> +<class name="EditorFileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/EditorFileSystem.xml b/doc/classes/EditorFileSystem.xml index 54b3accb19..1eda817d33 100644 --- a/doc/classes/EditorFileSystem.xml +++ b/doc/classes/EditorFileSystem.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorFileSystem" inherits="Node" category="Core" version="3.0-beta"> +<class name="EditorFileSystem" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Resource filesystem, as the editor sees it. </brief_description> diff --git a/doc/classes/EditorFileSystemDirectory.xml b/doc/classes/EditorFileSystemDirectory.xml index 1a2f73a683..005bebaca8 100644 --- a/doc/classes/EditorFileSystemDirectory.xml +++ b/doc/classes/EditorFileSystemDirectory.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorFileSystemDirectory" inherits="Object" category="Core" version="3.0-beta"> +<class name="EditorFileSystemDirectory" inherits="Object" category="Core" version="3.0-stable"> <brief_description> A diretory for the resource filesystem. </brief_description> diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml index f9e3c288e7..07d6f92274 100644 --- a/doc/classes/EditorImportPlugin.xml +++ b/doc/classes/EditorImportPlugin.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorImportPlugin" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorImportPlugin" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Registers a custom resource importer in the editor. Use the class to parse any file and import it as a new resource type. </brief_description> diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index 4bbbac8cf7..61c93becde 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorInterface" inherits="Node" category="Core" version="3.0-beta"> +<class name="EditorInterface" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Editor interface and main components. </brief_description> @@ -76,6 +76,12 @@ Returns the [ScriptEditor]. </description> </method> + <method name="get_selected_path" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> <method name="get_selection"> <return type="EditorSelection"> </return> @@ -94,6 +100,15 @@ Shows the given property on the given [code]object[/code] in the Editor's Inspector dock. </description> </method> + <method name="is_plugin_enabled" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="plugin" type="String"> + </argument> + <description> + Returns the enabled status of a plugin. The plugin name is the same as its directory name. + </description> + </method> <method name="make_mesh_previews"> <return type="Array"> </return> @@ -141,6 +156,25 @@ Saves the scene as a file at [code]path[/code]. </description> </method> + <method name="select_file"> + <return type="void"> + </return> + <argument index="0" name="p_file" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_plugin_enabled"> + <return type="void"> + </return> + <argument index="0" name="plugin" type="String"> + </argument> + <argument index="1" name="enabled" type="bool"> + </argument> + <description> + Sets the enabled status of a plugin. The plugin name is the same as its directory name. + </description> + </method> </methods> <constants> </constants> diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml index ada0ee56a8..8f4784334d 100644 --- a/doc/classes/EditorPlugin.xml +++ b/doc/classes/EditorPlugin.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorPlugin" inherits="Node" category="Core" version="3.0-beta"> +<class name="EditorPlugin" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Used by the editor to extend its functionality. </brief_description> @@ -7,6 +7,7 @@ Plugins are used by the editor to extend functionality. The most common types of plugins are those which edit a given node or resource type, import plugins and export plugins. </description> <tutorials> + http://docs.godotengine.org/en/3.0/development/plugins/index.html </tutorials> <demos> </demos> @@ -136,9 +137,7 @@ <method name="forward_canvas_gui_input" qualifiers="virtual"> <return type="bool"> </return> - <argument index="0" name="canvas_xform" type="Transform2D"> - </argument> - <argument index="1" name="event" type="InputEvent"> + <argument index="0" name="event" type="InputEvent"> </argument> <description> </description> diff --git a/doc/classes/EditorResourceConversionPlugin.xml b/doc/classes/EditorResourceConversionPlugin.xml index 8d6aa3a605..9facba18b0 100644 --- a/doc/classes/EditorResourceConversionPlugin.xml +++ b/doc/classes/EditorResourceConversionPlugin.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorResourceConversionPlugin" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorResourceConversionPlugin" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/EditorResourcePreview.xml b/doc/classes/EditorResourcePreview.xml index 481ffed70b..9b14771f0f 100644 --- a/doc/classes/EditorResourcePreview.xml +++ b/doc/classes/EditorResourcePreview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorResourcePreview" inherits="Node" category="Core" version="3.0-beta"> +<class name="EditorResourcePreview" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Helper to generate previews of resources or files. </brief_description> diff --git a/doc/classes/EditorResourcePreviewGenerator.xml b/doc/classes/EditorResourcePreviewGenerator.xml index 03cb232619..d116e56cf7 100644 --- a/doc/classes/EditorResourcePreviewGenerator.xml +++ b/doc/classes/EditorResourcePreviewGenerator.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorResourcePreviewGenerator" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorResourcePreviewGenerator" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Custom generator of previews. </brief_description> diff --git a/doc/classes/EditorSceneImporter.xml b/doc/classes/EditorSceneImporter.xml index 69fe4050f4..31846ed401 100644 --- a/doc/classes/EditorSceneImporter.xml +++ b/doc/classes/EditorSceneImporter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorSceneImporter" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorSceneImporter" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/EditorScenePostImport.xml b/doc/classes/EditorScenePostImport.xml index a9bc659e7d..4c0709249e 100644 --- a/doc/classes/EditorScenePostImport.xml +++ b/doc/classes/EditorScenePostImport.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorScenePostImport" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorScenePostImport" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml index 97f126e7f7..a3cd12ab50 100644 --- a/doc/classes/EditorScript.xml +++ b/doc/classes/EditorScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorScript" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EditorScript" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Base script that can be used to add extension functions to the editor. </brief_description> diff --git a/doc/classes/EditorSelection.xml b/doc/classes/EditorSelection.xml index 31e27a1b01..0424ab5e43 100644 --- a/doc/classes/EditorSelection.xml +++ b/doc/classes/EditorSelection.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorSelection" inherits="Object" category="Core" version="3.0-beta"> +<class name="EditorSelection" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Manages the SceneTree selection in the editor. </brief_description> diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index 174b62fde0..a37ea0fec7 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorSettings" inherits="Resource" category="Core" version="3.0-beta"> +<class name="EditorSettings" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Object that holds the project-independent editor settings. </brief_description> @@ -126,6 +126,8 @@ </argument> <argument index="1" name="value" type="Variant"> </argument> + <argument index="2" name="update_current" type="bool"> + </argument> <description> </description> </method> diff --git a/doc/classes/EditorSpatialGizmo.xml b/doc/classes/EditorSpatialGizmo.xml index e55cdd0ca7..ba026166bb 100644 --- a/doc/classes/EditorSpatialGizmo.xml +++ b/doc/classes/EditorSpatialGizmo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EditorSpatialGizmo" inherits="SpatialGizmo" category="Core" version="3.0-beta"> +<class name="EditorSpatialGizmo" inherits="SpatialGizmo" category="Core" version="3.0-stable"> <brief_description> Custom gizmo for editing Spatial objects. </brief_description> diff --git a/doc/classes/EncodedObjectAsID.xml b/doc/classes/EncodedObjectAsID.xml index b60f2fc2bd..604ce42516 100644 --- a/doc/classes/EncodedObjectAsID.xml +++ b/doc/classes/EncodedObjectAsID.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="EncodedObjectAsID" inherits="Reference" category="Core" version="3.0-beta"> +<class name="EncodedObjectAsID" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml index 0fd5892860..ad5e75bad5 100644 --- a/doc/classes/Engine.xml +++ b/doc/classes/Engine.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Engine" inherits="Object" category="Core" version="3.0-beta"> +<class name="Engine" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Access to basic engine properties. </brief_description> @@ -25,13 +25,6 @@ Returns the frames per second of the running game. </description> </method> - <method name="get_iterations_per_second" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the number of fixed iterations per second (for fixed process and physics). - </description> - </method> <method name="get_main_loop" qualifiers="const"> <return type="MainLoop"> </return> @@ -47,20 +40,6 @@ <description> </description> </method> - <method name="get_target_fps" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the desired frames per second. If the hardware cannot keep up, this setting may not be respected. It defaults to 0, which indicates no limit. - </description> - </method> - <method name="get_time_scale"> - <return type="float"> - </return> - <description> - Returns how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed. - </description> - </method> <method name="get_version_info" qualifiers="const"> <return type="Dictionary"> </return> @@ -83,13 +62,6 @@ <description> </description> </method> - <method name="is_editor_hint" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the editor is running. - </description> - </method> <method name="is_in_physics_frame" qualifiers="const"> <return type="bool"> </return> @@ -97,43 +69,21 @@ Returns [code]true[/code] if the game is inside the fixed process and physics phase of the game loop. </description> </method> - <method name="set_editor_hint"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Sets the running inside the editor hint if [code]enabled[/code] is [code]true[/code]. - </description> - </method> - <method name="set_iterations_per_second"> - <return type="void"> - </return> - <argument index="0" name="iterations_per_second" type="int"> - </argument> - <description> - Sets the number of fixed iterations per second (for fixed process and physics). - </description> - </method> - <method name="set_target_fps"> - <return type="void"> - </return> - <argument index="0" name="target_fps" type="int"> - </argument> - <description> - Sets the target frames per second. - </description> - </method> - <method name="set_time_scale"> - <return type="void"> - </return> - <argument index="0" name="time_scale" type="float"> - </argument> - <description> - Sets the time scale. - </description> - </method> </methods> + <members> + <member name="editor_hint" type="bool" setter="set_editor_hint" getter="is_editor_hint"> + If [code]true[/code], it is running inside the editor. Useful for tool scripts. + </member> + <member name="iterations_per_second" type="int" setter="set_iterations_per_second" getter="get_iterations_per_second"> + The number of fixed iterations per second (for fixed process and physics). + </member> + <member name="target_fps" type="int" setter="set_target_fps" getter="get_target_fps"> + The desired frames per second. If the hardware cannot keep up, this setting may not be respected. Defaults to 0, which indicates no limit. + </member> + <member name="time_scale" type="float" setter="set_time_scale" getter="get_time_scale"> + Controls how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index e252f67774..ea35ef89f3 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Environment" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Environment" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Resource for environment nodes (like [WorldEnvironment]) that define multiple rendering options. </brief_description> @@ -12,6 +12,8 @@ - Adjustments </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/environment_and_post_processing.html + http://docs.godotengine.org/en/3.0/tutorials/3d/high_dynamic_range.html </tutorials> <demos> </demos> diff --git a/doc/classes/File.xml b/doc/classes/File.xml index 8c270ece4b..3ac2a7e643 100644 --- a/doc/classes/File.xml +++ b/doc/classes/File.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="File" inherits="Reference" category="Core" version="3.0-beta"> +<class name="File" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Type to handle file reading and writing operations. </brief_description> @@ -22,6 +22,7 @@ [/codeblock] </description> <tutorials> + http://docs.godotengine.org/en/3.0/getting_started/step_by_step/filesystem.html </tutorials> <demos> </demos> @@ -109,13 +110,6 @@ Returns the next 64 bits from the file as a floating point number. </description> </method> - <method name="get_endian_swap"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if endian swap is enabled for this file. - </description> - </method> <method name="get_error" qualifiers="const"> <return type="int" enum="Error"> </return> @@ -274,16 +268,6 @@ Changes the file reading/writing cursor to the specified position (in bytes from the end of the file). Note that this is an offset, so you should use negative numbers or the cursor will be at the end of the file. </description> </method> - <method name="set_endian_swap"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If [code]true[/code] the file's endianness is swapped. Use this if you're dealing with files written in big endian machines. - Note that this is about the file format, not CPU type. This is always reseted to [code]false[/code] whenever you open the file. - </description> - </method> <method name="store_16"> <return type="void"> </return> @@ -393,6 +377,12 @@ </description> </method> </methods> + <members> + <member name="endian_swap" type="bool" setter="set_endian_swap" getter="get_endian_swap"> + If [code]true[/code] the file's endianness is swapped. Use this if you're dealing with files written in big endian machines. + Note that this is about the file format, not CPU type. This is always reseted to [code]false[/code] whenever you open the file. + </member> + </members> <constants> <constant name="READ" value="1" enum="ModeFlags"> Opens the file for read operations. diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml index 3387b4a2ed..cee64b7ade 100644 --- a/doc/classes/FileDialog.xml +++ b/doc/classes/FileDialog.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="FileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-beta"> +<class name="FileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-stable"> <brief_description> Dialog for selecting files or directories in the filesystem. </brief_description> @@ -33,27 +33,6 @@ <description> </description> </method> - <method name="get_current_dir" qualifiers="const"> - <return type="String"> - </return> - <description> - Get the current working directory of the file dialog. - </description> - </method> - <method name="get_current_file" qualifiers="const"> - <return type="String"> - </return> - <description> - Get the current selected file of the file dialog (empty if none). - </description> - </method> - <method name="get_current_path" qualifiers="const"> - <return type="String"> - </return> - <description> - Get the current selected path (directory and file) of the file dialog (empty if none). - </description> - </method> <method name="get_vbox"> <return type="VBoxContainer"> </return> @@ -68,37 +47,19 @@ Invalidate and update the current dialog content list. </description> </method> - <method name="set_current_dir"> - <return type="void"> - </return> - <argument index="0" name="dir" type="String"> - </argument> - <description> - Set the current working directory of the file dialog. - </description> - </method> - <method name="set_current_file"> - <return type="void"> - </return> - <argument index="0" name="file" type="String"> - </argument> - <description> - Set the current selected file name of the file dialog. - </description> - </method> - <method name="set_current_path"> - <return type="void"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - Set the current selected file path of the file dialog. - </description> - </method> </methods> <members> <member name="access" type="int" setter="set_access" getter="get_access" enum="FileDialog.Access"> </member> + <member name="current_dir" type="String" setter="set_current_dir" getter="get_current_dir"> + The current working directory of the file dialog. + </member> + <member name="current_file" type="String" setter="set_current_file" getter="get_current_file"> + The currently selected file of the file dialog. + </member> + <member name="current_path" type="String" setter="set_current_path" getter="get_current_path"> + The currently selected file path of the file dialog. + </member> <member name="filters" type="PoolStringArray" setter="set_filters" getter="get_filters"> </member> <member name="mode" type="int" setter="set_mode" getter="get_mode" enum="FileDialog.Mode"> diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml index bc4557a171..7190067b09 100644 --- a/doc/classes/Font.xml +++ b/doc/classes/Font.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Font" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Font" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Internationalized font and text drawing support. </brief_description> diff --git a/doc/classes/FuncRef.xml b/doc/classes/FuncRef.xml index 802f35dd10..8ad6da9adc 100644 --- a/doc/classes/FuncRef.xml +++ b/doc/classes/FuncRef.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="FuncRef" inherits="Reference" category="Core" version="3.0-beta"> +<class name="FuncRef" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Reference to a function in an object. </brief_description> diff --git a/doc/classes/GIProbe.xml b/doc/classes/GIProbe.xml index 0644e3f24e..e9f1dfecaf 100644 --- a/doc/classes/GIProbe.xml +++ b/doc/classes/GIProbe.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GIProbe" inherits="VisualInstance" category="Core" version="3.0-beta"> +<class name="GIProbe" inherits="VisualInstance" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/gi_probes.html </tutorials> <demos> </demos> diff --git a/doc/classes/GIProbeData.xml b/doc/classes/GIProbeData.xml index aba59f57ea..32a891e277 100644 --- a/doc/classes/GIProbeData.xml +++ b/doc/classes/GIProbeData.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GIProbeData" inherits="Resource" category="Core" version="3.0-beta"> +<class name="GIProbeData" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,161 +9,31 @@ <demos> </demos> <methods> - <method name="get_bias" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_bounds" qualifiers="const"> - <return type="AABB"> - </return> - <description> - </description> - </method> - <method name="get_cell_size" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_dynamic_data" qualifiers="const"> - <return type="PoolIntArray"> - </return> - <description> - </description> - </method> - <method name="get_dynamic_range" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_energy" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_normal_bias" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_propagation" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_to_cell_xform" qualifiers="const"> - <return type="Transform"> - </return> - <description> - </description> - </method> - <method name="is_compressed" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="is_interior" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_bias"> - <return type="void"> - </return> - <argument index="0" name="bias" type="float"> - </argument> - <description> - </description> - </method> - <method name="set_bounds"> - <return type="void"> - </return> - <argument index="0" name="bounds" type="AABB"> - </argument> - <description> - </description> - </method> - <method name="set_cell_size"> - <return type="void"> - </return> - <argument index="0" name="cell_size" type="float"> - </argument> - <description> - </description> - </method> - <method name="set_compress"> - <return type="void"> - </return> - <argument index="0" name="compress" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_dynamic_data"> - <return type="void"> - </return> - <argument index="0" name="dynamic_data" type="PoolIntArray"> - </argument> - <description> - </description> - </method> - <method name="set_dynamic_range"> - <return type="void"> - </return> - <argument index="0" name="dynamic_range" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_energy"> - <return type="void"> - </return> - <argument index="0" name="energy" type="float"> - </argument> - <description> - </description> - </method> - <method name="set_interior"> - <return type="void"> - </return> - <argument index="0" name="interior" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_normal_bias"> - <return type="void"> - </return> - <argument index="0" name="bias" type="float"> - </argument> - <description> - </description> - </method> - <method name="set_propagation"> - <return type="void"> - </return> - <argument index="0" name="propagation" type="float"> - </argument> - <description> - </description> - </method> - <method name="set_to_cell_xform"> - <return type="void"> - </return> - <argument index="0" name="to_cell_xform" type="Transform"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="bias" type="float" setter="set_bias" getter="get_bias"> + </member> + <member name="bounds" type="AABB" setter="set_bounds" getter="get_bounds"> + </member> + <member name="cell_size" type="float" setter="set_cell_size" getter="get_cell_size"> + </member> + <member name="compress" type="bool" setter="set_compress" getter="is_compressed"> + </member> + <member name="dynamic_data" type="PoolIntArray" setter="set_dynamic_data" getter="get_dynamic_data"> + </member> + <member name="dynamic_range" type="int" setter="set_dynamic_range" getter="get_dynamic_range"> + </member> + <member name="energy" type="float" setter="set_energy" getter="get_energy"> + </member> + <member name="interior" type="bool" setter="set_interior" getter="is_interior"> + </member> + <member name="normal_bias" type="float" setter="set_normal_bias" getter="get_normal_bias"> + </member> + <member name="propagation" type="float" setter="set_propagation" getter="get_propagation"> + </member> + <member name="to_cell_xform" type="Transform" setter="set_to_cell_xform" getter="get_to_cell_xform"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/Generic6DOFJoint.xml b/doc/classes/Generic6DOFJoint.xml index e44ae867d4..4be44b3819 100644 --- a/doc/classes/Generic6DOFJoint.xml +++ b/doc/classes/Generic6DOFJoint.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Generic6DOFJoint" inherits="Joint" category="Core" version="3.0-beta"> +<class name="Generic6DOFJoint" inherits="Joint" category="Core" version="3.0-stable"> <brief_description> The generic 6 degrees of freedom joint can implement a variety of joint-types by locking certain axes' rotation or translation. </brief_description> @@ -24,10 +24,10 @@ When rotating across x-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. </member> <member name="angular_limit_x/force_limit" type="float" setter="set_param_x" getter="get_param_x"> - The maximum amount of force that can occur, when rotating arround x-axis. + The maximum amount of force that can occur, when rotating around x-axis. </member> <member name="angular_limit_x/lower_angle" type="float" setter="_set_angular_lo_limit_x" getter="_get_angular_lo_limit_x"> - The minimum rotation in negative direction to break loose and rotate arround the x-axis. + The minimum rotation in negative direction to break loose and rotate around the x-axis. </member> <member name="angular_limit_x/restitution" type="float" setter="set_param_x" getter="get_param_x"> The amount of rotational restitution across the x-axis. The lower, the more restitution occurs. @@ -36,7 +36,7 @@ The speed of all rotations across the x-axis. </member> <member name="angular_limit_x/upper_angle" type="float" setter="_set_angular_hi_limit_x" getter="_get_angular_hi_limit_x"> - The minimum rotation in positive direction to break loose and rotate arround the x-axis. + The minimum rotation in positive direction to break loose and rotate around the x-axis. </member> <member name="angular_limit_y/damping" type="float" setter="set_param_y" getter="get_param_y"> The amount of rotational damping across the y-axis. The lower, the more dampening occurs. @@ -48,10 +48,10 @@ When rotating across y-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. </member> <member name="angular_limit_y/force_limit" type="float" setter="set_param_y" getter="get_param_y"> - The maximum amount of force that can occur, when rotating arround y-axis. + The maximum amount of force that can occur, when rotating around y-axis. </member> <member name="angular_limit_y/lower_angle" type="float" setter="_set_angular_lo_limit_y" getter="_get_angular_lo_limit_y"> - The minimum rotation in negative direction to break loose and rotate arround the y-axis. + The minimum rotation in negative direction to break loose and rotate around the y-axis. </member> <member name="angular_limit_y/restitution" type="float" setter="set_param_y" getter="get_param_y"> The amount of rotational restitution across the y-axis. The lower, the more restitution occurs. @@ -60,7 +60,7 @@ The speed of all rotations across the y-axis. </member> <member name="angular_limit_y/upper_angle" type="float" setter="_set_angular_hi_limit_y" getter="_get_angular_hi_limit_y"> - The minimum rotation in positive direction to break loose and rotate arround the y-axis. + The minimum rotation in positive direction to break loose and rotate around the y-axis. </member> <member name="angular_limit_z/damping" type="float" setter="set_param_z" getter="get_param_z"> The amount of rotational damping across the z-axis. The lower, the more dampening occurs. @@ -72,10 +72,10 @@ When rotating across z-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. </member> <member name="angular_limit_z/force_limit" type="float" setter="set_param_z" getter="get_param_z"> - The maximum amount of force that can occur, when rotating arround z-axis. + The maximum amount of force that can occur, when rotating around z-axis. </member> <member name="angular_limit_z/lower_angle" type="float" setter="_set_angular_lo_limit_z" getter="_get_angular_lo_limit_z"> - The minimum rotation in negative direction to break loose and rotate arround the z-axis. + The minimum rotation in negative direction to break loose and rotate around the z-axis. </member> <member name="angular_limit_z/restitution" type="float" setter="set_param_z" getter="get_param_z"> The amount of rotational restitution across the z-axis. The lower, the more restitution occurs. @@ -84,7 +84,7 @@ The speed of all rotations across the z-axis. </member> <member name="angular_limit_z/upper_angle" type="float" setter="_set_angular_hi_limit_z" getter="_get_angular_hi_limit_z"> - The minimum rotation in positive direction to break loose and rotate arround the z-axis. + The minimum rotation in positive direction to break loose and rotate around the z-axis. </member> <member name="angular_motor_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x"> If [code]true[/code] a rotating motor at the x-axis is enabled. @@ -185,10 +185,10 @@ The amount of damping that happens at the linear motion across the axes. </constant> <constant name="PARAM_ANGULAR_LOWER_LIMIT" value="5" enum="Param"> - The minimum rotation in negative direction to break loose and rotate arround the axes. + The minimum rotation in negative direction to break loose and rotate around the axes. </constant> <constant name="PARAM_ANGULAR_UPPER_LIMIT" value="6" enum="Param"> - The minimum rotation in positive direction to break loose and rotate arround the axes. + The minimum rotation in positive direction to break loose and rotate around the axes. </constant> <constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="7" enum="Param"> The speed of all rotations across the axes. @@ -200,7 +200,7 @@ The amount of rotational restitution across the axes. The lower, the more restitution occurs. </constant> <constant name="PARAM_ANGULAR_FORCE_LIMIT" value="10" enum="Param"> - The maximum amount of force that can occur, when rotating arround the axes. + The maximum amount of force that can occur, when rotating around the axes. </constant> <constant name="PARAM_ANGULAR_ERP" value="11" enum="Param"> When rotating across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. diff --git a/doc/classes/Geometry.xml b/doc/classes/Geometry.xml index 3f25d04f16..b3f63daf9c 100644 --- a/doc/classes/Geometry.xml +++ b/doc/classes/Geometry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Geometry" inherits="Object" category="Core" version="3.0-beta"> +<class name="Geometry" inherits="Object" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/GeometryInstance.xml b/doc/classes/GeometryInstance.xml index 981873b1fe..8dd3c23ee2 100644 --- a/doc/classes/GeometryInstance.xml +++ b/doc/classes/GeometryInstance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GeometryInstance" inherits="VisualInstance" category="Core" version="3.0-beta"> +<class name="GeometryInstance" inherits="VisualInstance" category="Core" version="3.0-stable"> <brief_description> Base node for geometry based visual instances. </brief_description> diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml index b1a723ee47..8b4bf4d448 100644 --- a/doc/classes/Gradient.xml +++ b/doc/classes/Gradient.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Gradient" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Gradient" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Color interpolator node. </brief_description> diff --git a/doc/classes/GradientTexture.xml b/doc/classes/GradientTexture.xml index e28dd2ce42..127a6d8204 100644 --- a/doc/classes/GradientTexture.xml +++ b/doc/classes/GradientTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GradientTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="GradientTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> Gradient filled texture. </brief_description> diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index 3bc7fed1d9..2090155e85 100644 --- a/doc/classes/GraphEdit.xml +++ b/doc/classes/GraphEdit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GraphEdit" inherits="Control" category="Core" version="3.0-beta"> +<class name="GraphEdit" inherits="Control" category="Core" version="3.0-stable"> <brief_description> GraphEdit is an area capable of showing various GraphNodes. It manages connection events between them. </brief_description> @@ -12,6 +12,42 @@ <demos> </demos> <methods> + <method name="add_valid_connection_type"> + <return type="void"> + </return> + <argument index="0" name="from_type" type="int"> + </argument> + <argument index="1" name="to_type" type="int"> + </argument> + <description> + Makes possible the connection between two different slot types. The type is defined with the [method GraphNode.set_slot] method. + </description> + </method> + <method name="add_valid_left_disconnect_type"> + <return type="void"> + </return> + <argument index="0" name="type" type="int"> + </argument> + <description> + Makes possible to disconnect nodes when dragging from the slot at the left if it has the specified type. + </description> + </method> + <method name="add_valid_right_disconnect_type"> + <return type="void"> + </return> + <argument index="0" name="type" type="int"> + </argument> + <description> + Makes possible to disconnect nodes when dragging from the slot at the right if it has the specified type. + </description> + </method> + <method name="clear_connections"> + <return type="void"> + </return> + <description> + Remove all connections between nodes. + </description> + </method> <method name="connect_node"> <return type="int" enum="Error"> </return> @@ -49,26 +85,6 @@ Return an Array containing the list of connections. A connection consists in a structure of the form {from_slot: 0, from: "GraphNode name 0", to_slot: 1, to: "GraphNode name 1" } </description> </method> - <method name="get_scroll_ofs" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the scroll offset. - </description> - </method> - <method name="get_snap" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_zoom" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the current zoom value. - </description> - </method> <method name="is_node_connected"> <return type="bool"> </return> @@ -84,70 +100,73 @@ Return true if the 'from_port' slot of 'from' GraphNode is connected to the 'to_port' slot of 'to' GraphNode. </description> </method> - <method name="is_right_disconnects_enabled" qualifiers="const"> + <method name="is_valid_connection_type" qualifiers="const"> <return type="bool"> </return> - <description> - Return true is the disconnection of connections is enable in the visual GraphEdit. False otherwise. - </description> - </method> - <method name="is_using_snap" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_right_disconnects"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> + <argument index="0" name="from_type" type="int"> </argument> - <description> - Enable the disconnection of existing connections in the visual GraphEdit by left-clicking a connection and releasing into the void. - </description> - </method> - <method name="set_scroll_ofs"> - <return type="void"> - </return> - <argument index="0" name="ofs" type="Vector2"> + <argument index="1" name="to_type" type="int"> </argument> <description> + Returns whether it's possible to connect slots of the specified types. </description> </method> - <method name="set_selected"> + <method name="remove_valid_connection_type"> <return type="void"> </return> - <argument index="0" name="node" type="Node"> + <argument index="0" name="from_type" type="int"> + </argument> + <argument index="1" name="to_type" type="int"> </argument> <description> + Makes it not possible to connect between two different slot types. The type is defined with the [method GraphNode.set_slot] method. </description> </method> - <method name="set_snap"> + <method name="remove_valid_left_disconnect_type"> <return type="void"> </return> - <argument index="0" name="pixels" type="int"> + <argument index="0" name="type" type="int"> </argument> <description> + Removes the possibility to disconnect nodes when dragging from the slot at the left if it has the specified type. </description> </method> - <method name="set_use_snap"> + <method name="remove_valid_right_disconnect_type"> <return type="void"> </return> - <argument index="0" name="enable" type="bool"> + <argument index="0" name="type" type="int"> </argument> <description> + Removes the possibility to disconnect nodes when dragging from the slot at the right if it has the specified type. </description> </method> - <method name="set_zoom"> + <method name="set_selected"> <return type="void"> </return> - <argument index="0" name="p_zoom" type="float"> + <argument index="0" name="node" type="Node"> </argument> <description> - Set the zoom value of the GraphEdit. Zoom value is between [0.01; 1.728]. + Sets the specified [code]node[/code] as the one selected. </description> </method> </methods> + <members> + <member name="right_disconnects" type="bool" setter="set_right_disconnects" getter="is_right_disconnects_enabled"> + If [code]true[/code], enables disconnection of existing connections in the GraphEdit by dragging the right end. + </member> + <member name="scroll_offset" type="Vector2" setter="set_scroll_ofs" getter="get_scroll_ofs"> + The scroll offset. + </member> + <member name="snap_distance" type="int" setter="set_snap" getter="get_snap"> + The snapping distance in pixels. + </member> + <member name="use_snap" type="bool" setter="set_use_snap" getter="is_using_snap"> + If [code]true[/code], enables snapping. + </member> + <member name="zoom" type="float" setter="set_zoom" getter="get_zoom"> + The current zoom value. + </member> + </members> <signals> <signal name="_begin_node_move"> <description> diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml index c1b18e4cd8..ce8cb053ce 100644 --- a/doc/classes/GraphNode.xml +++ b/doc/classes/GraphNode.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GraphNode" inherits="Container" category="Core" version="3.0-beta"> +<class name="GraphNode" inherits="Container" category="Core" version="3.0-stable"> <brief_description> A GraphNode is a container with several input and output slots allowing connections between GraphNodes. Slots can have different, incompatible types. </brief_description> @@ -95,19 +95,6 @@ Return the type of the output connection 'idx'. </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the offset of the GraphNode. - </description> - </method> - <method name="get_overlay" qualifiers="const"> - <return type="int" enum="GraphNode.Overlay"> - </return> - <description> - </description> - </method> <method name="get_slot_color_left" qualifiers="const"> <return type="Color"> </return> @@ -144,18 +131,6 @@ Return the (integer) type of right (output) 'idx' slot. </description> </method> - <method name="is_comment" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="is_selected"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="is_slot_enabled_left" qualifiers="const"> <return type="bool"> </return> @@ -174,39 +149,6 @@ Return true if right (output) slot 'idx' is enabled. False otherwise. </description> </method> - <method name="set_comment"> - <return type="void"> - </return> - <argument index="0" name="comment" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_offset"> - <return type="void"> - </return> - <argument index="0" name="offset" type="Vector2"> - </argument> - <description> - Set the offset of the GraphNode. - </description> - </method> - <method name="set_overlay"> - <return type="void"> - </return> - <argument index="0" name="overlay" type="int" enum="GraphNode.Overlay"> - </argument> - <description> - </description> - </method> - <method name="set_selected"> - <return type="void"> - </return> - <argument index="0" name="selected" type="bool"> - </argument> - <description> - </description> - </method> <method name="set_slot"> <return type="void"> </return> @@ -233,8 +175,17 @@ </method> </methods> <members> + <member name="comment" type="bool" setter="set_comment" getter="is_comment"> + </member> + <member name="offset" type="Vector2" setter="set_offset" getter="get_offset"> + The offset of the GraphNode, relative to the scroll offset of the [GraphEdit]. Note that 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"> + </member> <member name="resizable" type="bool" setter="set_resizable" getter="is_resizable"> </member> + <member name="selected" type="bool" setter="set_selected" getter="is_selected"> + </member> <member name="show_close" type="bool" setter="set_show_close_button" getter="is_close_button_visible"> </member> <member name="title" type="String" setter="set_title" getter="get_title"> diff --git a/doc/classes/GridContainer.xml b/doc/classes/GridContainer.xml index 9deec7e410..8463acc1d4 100644 --- a/doc/classes/GridContainer.xml +++ b/doc/classes/GridContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GridContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="GridContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> Grid container used to arrange elements in a grid like layout </brief_description> diff --git a/doc/classes/GrooveJoint2D.xml b/doc/classes/GrooveJoint2D.xml index 6ccad9a155..c1aa10026c 100644 --- a/doc/classes/GrooveJoint2D.xml +++ b/doc/classes/GrooveJoint2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GrooveJoint2D" inherits="Joint2D" category="Core" version="3.0-beta"> +<class name="GrooveJoint2D" inherits="Joint2D" category="Core" version="3.0-stable"> <brief_description> Groove constraint for 2D physics. </brief_description> diff --git a/doc/classes/HBoxContainer.xml b/doc/classes/HBoxContainer.xml index c94aa709cb..3597b4d2d0 100644 --- a/doc/classes/HBoxContainer.xml +++ b/doc/classes/HBoxContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HBoxContainer" inherits="BoxContainer" category="Core" version="3.0-beta"> +<class name="HBoxContainer" inherits="BoxContainer" category="Core" version="3.0-stable"> <brief_description> Horizontal box container. </brief_description> diff --git a/doc/classes/HScrollBar.xml b/doc/classes/HScrollBar.xml index 0add27d996..ed0a5ae3ad 100644 --- a/doc/classes/HScrollBar.xml +++ b/doc/classes/HScrollBar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HScrollBar" inherits="ScrollBar" category="Core" version="3.0-beta"> +<class name="HScrollBar" inherits="ScrollBar" category="Core" version="3.0-stable"> <brief_description> Horizontal scroll bar. </brief_description> diff --git a/doc/classes/HSeparator.xml b/doc/classes/HSeparator.xml index ee5422592f..ac02f76146 100644 --- a/doc/classes/HSeparator.xml +++ b/doc/classes/HSeparator.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HSeparator" inherits="Separator" category="Core" version="3.0-beta"> +<class name="HSeparator" inherits="Separator" category="Core" version="3.0-stable"> <brief_description> Horizontal separator. </brief_description> diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml index a04ce73fcb..791bc5159b 100644 --- a/doc/classes/HSlider.xml +++ b/doc/classes/HSlider.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HSlider" inherits="Slider" category="Core" version="3.0-beta"> +<class name="HSlider" inherits="Slider" category="Core" version="3.0-stable"> <brief_description> Horizontal slider. </brief_description> diff --git a/doc/classes/HSplitContainer.xml b/doc/classes/HSplitContainer.xml index 4c1528f098..68a794eb9f 100644 --- a/doc/classes/HSplitContainer.xml +++ b/doc/classes/HSplitContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HSplitContainer" inherits="SplitContainer" category="Core" version="3.0-beta"> +<class name="HSplitContainer" inherits="SplitContainer" category="Core" version="3.0-stable"> <brief_description> Horizontal split container. </brief_description> diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml index 80f6966e12..3fa780e892 100644 --- a/doc/classes/HTTPClient.xml +++ b/doc/classes/HTTPClient.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HTTPClient" inherits="Reference" category="Core" version="3.0-beta"> +<class name="HTTPClient" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Hyper-text transfer protocol client. </brief_description> @@ -10,6 +10,8 @@ For more information on HTTP, see https://developer.mozilla.org/en-US/docs/Web/HTTP (or read RFC 2616 to get it straight from the source: https://tools.ietf.org/html/rfc2616). </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/networking/http_client_class.html + http://docs.godotengine.org/en/3.0/tutorials/networking/ssl_certificates.html </tutorials> <demos> </demos> @@ -39,13 +41,6 @@ [code]verify_host[/code] will check the SSL identity of the host if set to [code]true[/code]. </description> </method> - <method name="get_connection" qualifiers="const"> - <return type="StreamPeer"> - </return> - <description> - Returns the current connection. - </description> - </method> <method name="get_response_body_length" qualifiers="const"> <return type="int"> </return> @@ -90,13 +85,6 @@ If [code]true[/code] this [code]HTTPClient[/code] has a response available. </description> </method> - <method name="is_blocking_mode_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - If [code]true[/code] blocking mode is enabled. - </description> - </method> <method name="is_response_chunked" qualifiers="const"> <return type="bool"> </return> @@ -172,24 +160,6 @@ Sends the body data raw, as a byte array and does not encode it in any way. </description> </method> - <method name="set_blocking_mode"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - If set to true, execution will block until all data is read from the response. - </description> - </method> - <method name="set_connection"> - <return type="void"> - </return> - <argument index="0" name="connection" type="StreamPeer"> - </argument> - <description> - Sets connection to use for this client. - </description> - </method> <method name="set_read_chunk_size"> <return type="void"> </return> @@ -200,6 +170,14 @@ </description> </method> </methods> + <members> + <member name="blocking_mode_enabled" type="bool" setter="set_blocking_mode" getter="is_blocking_mode_enabled"> + If [code]true[/code], execution will block until all data is read from the response. + </member> + <member name="connection" type="StreamPeer" setter="set_connection" getter="get_connection"> + The connection to use for this client. + </member> + </members> <constants> <constant name="METHOD_GET" value="0" enum="Method"> HTTP GET method. The GET method requests a representation of the specified resource. Requests using GET should only retrieve data. diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml index 985198c76f..8b8cc6b744 100644 --- a/doc/classes/HTTPRequest.xml +++ b/doc/classes/HTTPRequest.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HTTPRequest" inherits="Node" category="Core" version="3.0-beta"> +<class name="HTTPRequest" inherits="Node" category="Core" version="3.0-stable"> <brief_description> A node with the ability to send HTTP requests. </brief_description> @@ -8,6 +8,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content via HTTP. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/networking/ssl_certificates.html </tutorials> <demos> </demos> @@ -26,13 +27,6 @@ Returns the response body length. </description> </method> - <method name="get_download_file" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the file this request will download into. - </description> - </method> <method name="get_downloaded_bytes" qualifiers="const"> <return type="int"> </return> @@ -63,20 +57,14 @@ <description> </description> </method> - <method name="set_download_file"> - <return type="void"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - Sets the file to download into. Outputs the response body into the file if set. - </description> - </method> </methods> <members> <member name="body_size_limit" type="int" setter="set_body_size_limit" getter="get_body_size_limit"> Maximum allowed size for response bodies. </member> + <member name="download_file" type="String" setter="set_download_file" getter="get_download_file"> + The file to download into. Will output any received file into it. + </member> <member name="max_redirects" type="int" setter="set_max_redirects" getter="get_max_redirects"> Maximum number of allowed redirects. </member> diff --git a/doc/classes/HingeJoint.xml b/doc/classes/HingeJoint.xml index 4a23f63d5a..367867dd00 100644 --- a/doc/classes/HingeJoint.xml +++ b/doc/classes/HingeJoint.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="HingeJoint" inherits="Joint" category="Core" version="3.0-beta"> +<class name="HingeJoint" inherits="Joint" category="Core" version="3.0-stable"> <brief_description> A hinge between two 3D bodies. </brief_description> <description> - Normaly uses the z-axis of body A as the hinge axis, another axis can be specified when adding it manually though. + Normally uses the z-axis of body A as the hinge axis, another axis can be specified when adding it manually though. </description> <tutorials> </tutorials> @@ -40,12 +40,12 @@ Target speed for the motor. </member> <member name="params/bias" type="float" setter="set_param" getter="get_param"> - The speed with wich the two bodies get pulled together when they move in different directions. + The speed with which the two bodies get pulled together when they move in different directions. </member> </members> <constants> <constant name="PARAM_BIAS" value="0" enum="Param"> - The speed with wich the two bodies get pulled together when they move in different directions. + The speed with which the two bodies get pulled together when they move in different directions. </constant> <constant name="PARAM_LIMIT_UPPER" value="1" enum="Param"> The maximum rotation. only active if [member angular_limit/enable] is [code]true[/code]. diff --git a/doc/classes/IP.xml b/doc/classes/IP.xml index cd669e3de1..d01d88590e 100644 --- a/doc/classes/IP.xml +++ b/doc/classes/IP.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="IP" inherits="Object" category="Core" version="3.0-beta"> +<class name="IP" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Internet protocol (IP) support functions like DNS resolution. </brief_description> diff --git a/doc/classes/IP_Unix.xml b/doc/classes/IP_Unix.xml index 1d376c7233..ba33793d72 100644 --- a/doc/classes/IP_Unix.xml +++ b/doc/classes/IP_Unix.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="IP_Unix" inherits="IP" category="Core" version="3.0-beta"> +<class name="IP_Unix" inherits="IP" category="Core" version="3.0-stable"> <brief_description> Unix IP support. See [IP]. </brief_description> diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml index 54eaf6cc7a..20e41847ce 100644 --- a/doc/classes/Image.xml +++ b/doc/classes/Image.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Image" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Image" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Image datatype. </brief_description> @@ -314,6 +314,22 @@ Loads an image from file [code]path[/code]. </description> </method> + <method name="load_jpg_from_buffer"> + <return type="int" enum="Error"> + </return> + <argument index="0" name="buffer" type="PoolByteArray"> + </argument> + <description> + </description> + </method> + <method name="load_png_from_buffer"> + <return type="int" enum="Error"> + </return> + <argument index="0" name="buffer" type="PoolByteArray"> + </argument> + <description> + </description> + </method> <method name="lock"> <return type="void"> </return> @@ -379,6 +395,7 @@ Sets the [Color] of the pixel at [code](x, y)[/code] if the image is locked. Example: [codeblock] var img = Image.new() + img.create(img_width, img_height, false, Image.FORMAT_RGBA8) img.lock() img.set_pixel(x, y, color) # Works img.unlock() diff --git a/doc/classes/ImageTexture.xml b/doc/classes/ImageTexture.xml index a20af677cb..96261c8e12 100644 --- a/doc/classes/ImageTexture.xml +++ b/doc/classes/ImageTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ImageTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="ImageTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> A [Texture] based on an [Image]. </brief_description> @@ -46,20 +46,6 @@ Return the format of the [code]ImageTexture[/code], one of [Image].FORMAT_*. </description> </method> - <method name="get_lossy_storage_quality" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the storage quality for [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY. - </description> - </method> - <method name="get_storage" qualifiers="const"> - <return type="int" enum="ImageTexture.Storage"> - </return> - <description> - Return the storage type. One of [code]ImageTexture[/code].STORAGE_*. - </description> - </method> <method name="load"> <return type="void"> </return> @@ -78,15 +64,6 @@ Set the [Image] of this [code]ImageTexture[/code]. </description> </method> - <method name="set_lossy_storage_quality"> - <return type="void"> - </return> - <argument index="0" name="quality" type="float"> - </argument> - <description> - Set the storage quality in case of [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY. - </description> - </method> <method name="set_size_override"> <return type="void"> </return> @@ -96,16 +73,15 @@ Resizes the [code]ImageTexture[/code] to the specified dimensions. </description> </method> - <method name="set_storage"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="ImageTexture.Storage"> - </argument> - <description> - Set the storage type. One of [code]ImageTexture[/code].STORAGE_*. - </description> - </method> </methods> + <members> + <member name="lossy_quality" type="float" setter="set_lossy_storage_quality" getter="get_lossy_storage_quality"> + The storage quality for [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY. + </member> + <member name="storage" type="int" setter="set_storage" getter="get_storage" enum="ImageTexture.Storage"> + The storage type (raw, lossy, or compressed). + </member> + </members> <constants> <constant name="STORAGE_RAW" value="0" enum="Storage"> [Image] data is stored raw and unaltered. diff --git a/doc/classes/ImmediateGeometry.xml b/doc/classes/ImmediateGeometry.xml index 11b513fb84..0376854bb6 100644 --- a/doc/classes/ImmediateGeometry.xml +++ b/doc/classes/ImmediateGeometry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ImmediateGeometry" inherits="GeometryInstance" category="Core" version="3.0-beta"> +<class name="ImmediateGeometry" inherits="GeometryInstance" category="Core" version="3.0-stable"> <brief_description> Draws simple geometry from code. </brief_description> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index 1200ac5170..946b7b9bac 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Input" inherits="Object" category="Core" version="3.0-beta"> +<class name="Input" inherits="Object" category="Core" version="3.0-stable"> <brief_description> A Singleton that deals with inputs. </brief_description> @@ -17,7 +17,7 @@ <argument index="0" name="action" type="String"> </argument> <description> - This will simulate pressing the specificed action. + This will simulate pressing the specified action. </description> </method> <method name="action_release"> @@ -275,9 +275,12 @@ </return> <argument index="0" name="image" type="Resource"> </argument> - <argument index="1" name="hotspot" type="Vector2" default="Vector2( 0, 0 )"> + <argument index="1" name="shape" type="int" enum="Input.CursorShape" default="0"> + </argument> + <argument index="2" name="hotspot" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> + Set a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. See enum [code]CURSOR_*[/code] for the list of shapes. </description> </method> <method name="set_mouse_mode"> @@ -347,5 +350,39 @@ </constant> <constant name="MOUSE_MODE_CONFINED" value="3" enum="MouseMode"> </constant> + <constant name="CURSOR_ARROW" value="0" enum="CursorShape"> + </constant> + <constant name="CURSOR_IBEAM" value="1" enum="CursorShape"> + </constant> + <constant name="CURSOR_POINTING_HAND" value="2" enum="CursorShape"> + </constant> + <constant name="CURSOR_CROSS" value="3" enum="CursorShape"> + </constant> + <constant name="CURSOR_WAIT" value="4" enum="CursorShape"> + </constant> + <constant name="CURSOR_BUSY" value="5" enum="CursorShape"> + </constant> + <constant name="CURSOR_DRAG" value="6" enum="CursorShape"> + </constant> + <constant name="CURSOR_CAN_DROP" value="7" enum="CursorShape"> + </constant> + <constant name="CURSOR_FORBIDDEN" value="8" enum="CursorShape"> + </constant> + <constant name="CURSOR_VSIZE" value="9" enum="CursorShape"> + </constant> + <constant name="CURSOR_HSIZE" value="10" enum="CursorShape"> + </constant> + <constant name="CURSOR_BDIAGSIZE" value="11" enum="CursorShape"> + </constant> + <constant name="CURSOR_FDIAGSIZE" value="12" enum="CursorShape"> + </constant> + <constant name="CURSOR_MOVE" value="13" enum="CursorShape"> + </constant> + <constant name="CURSOR_VSPLIT" value="14" enum="CursorShape"> + </constant> + <constant name="CURSOR_HSPLIT" value="15" enum="CursorShape"> + </constant> + <constant name="CURSOR_HELP" value="16" enum="CursorShape"> + </constant> </constants> </class> diff --git a/doc/classes/InputDefault.xml b/doc/classes/InputDefault.xml index 28cba56334..b804c29cd0 100644 --- a/doc/classes/InputDefault.xml +++ b/doc/classes/InputDefault.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputDefault" inherits="Input" category="Core" version="3.0-beta"> +<class name="InputDefault" inherits="Input" category="Core" version="3.0-stable"> <brief_description> Default implementation of the [Input] class. </brief_description> diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml index cc31da0627..07372d382d 100644 --- a/doc/classes/InputEvent.xml +++ b/doc/classes/InputEvent.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEvent" inherits="Resource" category="Core" version="3.0-beta"> +<class name="InputEvent" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Generic input event </brief_description> @@ -7,7 +7,8 @@ Base class of all sort of input event. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html </tutorials> <demos> </demos> @@ -28,13 +29,6 @@ Returns a [String] representation of the event. </description> </method> - <method name="get_id" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the event's ID. - </description> - </method> <method name="is_action" qualifiers="const"> <return type="bool"> </return> @@ -83,14 +77,6 @@ Returns [code]true[/code] if this input event is pressed. Not relevant for the event types [code]MOUSE_MOTION[/code], [code]SCREEN_DRAG[/code] or [code]NONE[/code]. </description> </method> - <method name="set_id"> - <return type="void"> - </return> - <argument index="0" name="id" type="int"> - </argument> - <description> - </description> - </method> <method name="shortcut_match" qualifiers="const"> <return type="bool"> </return> diff --git a/doc/classes/InputEventAction.xml b/doc/classes/InputEventAction.xml index 9d05c44498..5ef1711e75 100644 --- a/doc/classes/InputEventAction.xml +++ b/doc/classes/InputEventAction.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventAction" inherits="InputEvent" category="Core" version="3.0-beta"> +<class name="InputEventAction" inherits="InputEvent" category="Core" version="3.0-stable"> <brief_description> Input event type for actions. </brief_description> @@ -7,7 +7,7 @@ Contains a generic action which can be targeted from several type of inputs. Actions can be created from the project settings menu [code]Project > Project Settings > Input Map[/code]. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html#actions + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html#actions </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventGesture.xml b/doc/classes/InputEventGesture.xml index bf8f9667e3..4d82363b21 100644 --- a/doc/classes/InputEventGesture.xml +++ b/doc/classes/InputEventGesture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventGesture" inherits="InputEventWithModifiers" category="Core" version="3.0-beta"> +<class name="InputEventGesture" inherits="InputEventWithModifiers" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/InputEventJoypadButton.xml b/doc/classes/InputEventJoypadButton.xml index 66c7320369..47ba2f08ca 100644 --- a/doc/classes/InputEventJoypadButton.xml +++ b/doc/classes/InputEventJoypadButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventJoypadButton" inherits="InputEvent" category="Core" version="3.0-beta"> +<class name="InputEventJoypadButton" inherits="InputEvent" category="Core" version="3.0-stable"> <brief_description> Input event for gamepad buttons. </brief_description> @@ -7,7 +7,7 @@ Input event type for gamepad buttons. For joysticks see [InputEventJoypadMotion]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventJoypadMotion.xml b/doc/classes/InputEventJoypadMotion.xml index f52225d302..7d40fcd4b3 100644 --- a/doc/classes/InputEventJoypadMotion.xml +++ b/doc/classes/InputEventJoypadMotion.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventJoypadMotion" inherits="InputEvent" category="Core" version="3.0-beta"> +<class name="InputEventJoypadMotion" inherits="InputEvent" category="Core" version="3.0-stable"> <brief_description> Input event type for gamepad joysticks and other motions. For buttons see [code]InputEventJoypadMotion[/code]. </brief_description> @@ -7,7 +7,7 @@ Stores information about joystick motions. One [code]InputEventJoypadMotion[/code] represents one axis at a time. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml index c8cbab59d4..a930491beb 100644 --- a/doc/classes/InputEventKey.xml +++ b/doc/classes/InputEventKey.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventKey" inherits="InputEventWithModifiers" category="Core" version="3.0-beta"> +<class name="InputEventKey" inherits="InputEventWithModifiers" category="Core" version="3.0-stable"> <brief_description> Input event type for keyboard events. </brief_description> @@ -7,7 +7,7 @@ Stores key presses on the keyboard. Supports key presses, key releases and [member echo] events. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventMagnifyGesture.xml b/doc/classes/InputEventMagnifyGesture.xml index 796f9e6a2f..880da473a6 100644 --- a/doc/classes/InputEventMagnifyGesture.xml +++ b/doc/classes/InputEventMagnifyGesture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventMagnifyGesture" inherits="InputEventGesture" category="Core" version="3.0-beta"> +<class name="InputEventMagnifyGesture" inherits="InputEventGesture" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/InputEventMouse.xml b/doc/classes/InputEventMouse.xml index 748cc4b9f9..ca29c23634 100644 --- a/doc/classes/InputEventMouse.xml +++ b/doc/classes/InputEventMouse.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventMouse" inherits="InputEventWithModifiers" category="Core" version="3.0-beta"> +<class name="InputEventMouse" inherits="InputEventWithModifiers" category="Core" version="3.0-stable"> <brief_description> Base input event type for mouse events. </brief_description> <description> - Stores general mouse events informations. + Stores general mouse events information. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> @@ -21,7 +21,7 @@ Mouse position relative to the current [Viewport] when used in [method Control._gui_input], otherwise is at 0,0. </member> <member name="position" type="Vector2" setter="set_position" getter="get_position"> - Mouse local position relative to the [Viewport]. If used in [method Control._gui_input] the position is relative to the current [Control] wich is under the mouse. + Mouse local position relative to the [Viewport]. If used in [method Control._gui_input] the position is relative to the current [Control] which is under the mouse. </member> </members> <constants> diff --git a/doc/classes/InputEventMouseButton.xml b/doc/classes/InputEventMouseButton.xml index cd1037b022..a8dc087eca 100644 --- a/doc/classes/InputEventMouseButton.xml +++ b/doc/classes/InputEventMouseButton.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventMouseButton" inherits="InputEventMouse" category="Core" version="3.0-beta"> +<class name="InputEventMouseButton" inherits="InputEventMouse" category="Core" version="3.0-stable"> <brief_description> Input event type for mouse button events. </brief_description> <description> - Contains mouse click informations. See [method Node._input]. + Contains mouse click information. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/mouse_and_input_coordinates.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventMouseMotion.xml b/doc/classes/InputEventMouseMotion.xml index 192c8dbe16..2bd175348b 100644 --- a/doc/classes/InputEventMouseMotion.xml +++ b/doc/classes/InputEventMouseMotion.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventMouseMotion" inherits="InputEventMouse" category="Core" version="3.0-beta"> +<class name="InputEventMouseMotion" inherits="InputEventMouse" category="Core" version="3.0-stable"> <brief_description> Input event type for mouse motion events. </brief_description> <description> - Contains mouse motion informations. Supports relative, absolute positions and speed. See [method Node._input]. + Contains mouse motion information. Supports relative, absolute positions and speed. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/mouse_and_input_coordinates.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventPanGesture.xml b/doc/classes/InputEventPanGesture.xml index a17f5823ba..1a16c0f385 100644 --- a/doc/classes/InputEventPanGesture.xml +++ b/doc/classes/InputEventPanGesture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventPanGesture" inherits="InputEventGesture" category="Core" version="3.0-beta"> +<class name="InputEventPanGesture" inherits="InputEventGesture" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/InputEventScreenDrag.xml b/doc/classes/InputEventScreenDrag.xml index 43553f97bd..a9780e280a 100644 --- a/doc/classes/InputEventScreenDrag.xml +++ b/doc/classes/InputEventScreenDrag.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventScreenDrag" inherits="InputEvent" category="Core" version="3.0-beta"> +<class name="InputEventScreenDrag" inherits="InputEvent" category="Core" version="3.0-stable"> <brief_description> Input event type for screen drag events. (only available on mobile devices) </brief_description> <description> - Contains screen drag informations. See [method Node._input]. + Contains screen drag information. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventScreenTouch.xml b/doc/classes/InputEventScreenTouch.xml index 6f5ebc9481..783c36099b 100644 --- a/doc/classes/InputEventScreenTouch.xml +++ b/doc/classes/InputEventScreenTouch.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventScreenTouch" inherits="InputEvent" category="Core" version="3.0-beta"> +<class name="InputEventScreenTouch" inherits="InputEvent" category="Core" version="3.0-stable"> <brief_description> Input event type for screen touch events. (only available on mobile devices) @@ -8,7 +8,7 @@ Stores multi-touch press/release information. Supports touch press, touch release and [member index] for multi-touch count and order. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml index 70d2b57e8d..a1b1b6523f 100644 --- a/doc/classes/InputEventWithModifiers.xml +++ b/doc/classes/InputEventWithModifiers.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputEventWithModifiers" inherits="InputEvent" category="Core" version="3.0-beta"> +<class name="InputEventWithModifiers" inherits="InputEvent" category="Core" version="3.0-stable"> <brief_description> Base class for keys events with modifiers. </brief_description> <description> - Contains keys events informations with modifiers support like [code]SHIFT[/code] or [code]ALT[/code]. See [method Node._input]. + Contains keys events information with modifiers support like [code]SHIFT[/code] or [code]ALT[/code]. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html </tutorials> <demos> </demos> diff --git a/doc/classes/InputMap.xml b/doc/classes/InputMap.xml index ff5491bde2..4cedd94094 100644 --- a/doc/classes/InputMap.xml +++ b/doc/classes/InputMap.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InputMap" inherits="Object" category="Core" version="3.0-beta"> +<class name="InputMap" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Singleton that manages [InputEventAction]. </brief_description> @@ -7,7 +7,7 @@ Manages all [InputEventAction] which can be created/modified from the project settings menu [code]Project > Project Settings > Input Map[/code] or in code with [method add_action] and [method action_add_event]. See [method Node._input]. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html#inputmap + http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html#inputmap </tutorials> <demos> </demos> diff --git a/doc/classes/InstancePlaceholder.xml b/doc/classes/InstancePlaceholder.xml index 570ce239ff..f698551d41 100644 --- a/doc/classes/InstancePlaceholder.xml +++ b/doc/classes/InstancePlaceholder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InstancePlaceholder" inherits="Node" category="Core" version="3.0-beta"> +<class name="InstancePlaceholder" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Placeholder for the root [Node] of a [PackedScene]. </brief_description> diff --git a/doc/classes/InterpolatedCamera.xml b/doc/classes/InterpolatedCamera.xml index b268825efe..de84a7df6e 100644 --- a/doc/classes/InterpolatedCamera.xml +++ b/doc/classes/InterpolatedCamera.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="InterpolatedCamera" inherits="Camera" category="Core" version="3.0-beta"> +<class name="InterpolatedCamera" inherits="Camera" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index f3d0c271ac..bc95472ea8 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ItemList" inherits="Control" category="Core" version="3.0-beta"> +<class name="ItemList" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Control that provides a list of selectable items (and/or icons) in a single column, or optionally in multiple columns. </brief_description> @@ -53,12 +53,6 @@ Ensure selection is visible, adjusting the scroll position as necessary. </description> </method> - <method name="get_fixed_icon_size" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> <method name="get_item_at_position" qualifiers="const"> <return type="int"> </return> @@ -198,14 +192,6 @@ Note: This method does not trigger the item selection signal. </description> </method> - <method name="set_fixed_icon_size"> - <return type="void"> - </return> - <argument index="0" name="size" type="Vector2"> - </argument> - <description> - </description> - </method> <method name="set_item_custom_bg_color"> <return type="void"> </return> @@ -328,6 +314,8 @@ </member> <member name="fixed_column_width" type="int" setter="set_fixed_column_width" getter="get_fixed_column_width"> </member> + <member name="fixed_icon_size" type="Vector2" setter="set_fixed_icon_size" getter="get_fixed_icon_size"> + </member> <member name="icon_mode" type="int" setter="set_icon_mode" getter="get_icon_mode" enum="ItemList.IconMode"> </member> <member name="icon_scale" type="float" setter="set_icon_scale" getter="get_icon_scale"> diff --git a/doc/classes/JSON.xml b/doc/classes/JSON.xml index 28f04c3eb0..e69c05c3df 100644 --- a/doc/classes/JSON.xml +++ b/doc/classes/JSON.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="JSON" inherits="Object" category="Core" version="3.0-beta"> +<class name="JSON" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Helper class for parsing JSON data. </brief_description> diff --git a/doc/classes/JSONParseResult.xml b/doc/classes/JSONParseResult.xml index 835920818a..424720a871 100644 --- a/doc/classes/JSONParseResult.xml +++ b/doc/classes/JSONParseResult.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="JSONParseResult" inherits="Reference" category="Core" version="3.0-beta"> +<class name="JSONParseResult" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Data class wrapper for decoded JSON. </brief_description> diff --git a/doc/classes/JavaScript.xml b/doc/classes/JavaScript.xml index 027e4764ac..8183b48ece 100644 --- a/doc/classes/JavaScript.xml +++ b/doc/classes/JavaScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="JavaScript" inherits="Object" category="Core" version="3.0-beta"> +<class name="JavaScript" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Singleton that connects the engine with the browser's JavaScript context in HTML5 export. </brief_description> @@ -7,7 +7,7 @@ The JavaScript singleton is implemented only in HTML5 export. It's used to access the browser's JavaScript context. This allows interaction with embedding pages or calling third-party JavaScript APIs. </description> <tutorials> - http://docs.godotengine.org/en/stable/learning/workflow/export/exporting_for_web.html#calling-javascript-from-script + http://docs.godotengine.org/en/3.0/getting_started/workflow/export/exporting_for_web.html#calling-javascript-from-script </tutorials> <demos> </demos> diff --git a/doc/classes/Joint.xml b/doc/classes/Joint.xml index 443aec21a8..8ead75d556 100644 --- a/doc/classes/Joint.xml +++ b/doc/classes/Joint.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Joint" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Joint" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Base class for all 3D joints </brief_description> @@ -23,7 +23,7 @@ The [Node], the second side of the Joint attaches to. </member> <member name="solver/priority" type="int" setter="set_solver_priority" getter="get_solver_priority"> - The order in wich the solver is executed compared to the other [Joints], the lower, the earlier. + The order in which the solver is executed compared to the other [Joints], the lower, the earlier. </member> </members> <constants> diff --git a/doc/classes/Joint2D.xml b/doc/classes/Joint2D.xml index dec965cd09..22f267f26f 100644 --- a/doc/classes/Joint2D.xml +++ b/doc/classes/Joint2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Joint2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Joint2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Base node for all joint constraints in 2D physics. </brief_description> diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml index d1dc236d40..2c22ae4f93 100644 --- a/doc/classes/KinematicBody.xml +++ b/doc/classes/KinematicBody.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="KinematicBody" inherits="PhysicsBody" category="Core" version="3.0-beta"> +<class name="KinematicBody" inherits="PhysicsBody" category="Core" version="3.0-stable"> <brief_description> Kinematic body 3D node. </brief_description> @@ -9,6 +9,7 @@ Kinematic Characters: KinematicBody also has an API for moving objects (the [method move_and_collide] and [method move_and_slide] methods) while performing collision tests. This makes them really useful to implement characters that collide against a world, but that don't require advanced physics. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/kinematic_character_2d.html </tutorials> <demos> </demos> @@ -26,7 +27,7 @@ <argument index="0" name="slide_idx" type="int"> </argument> <description> - Returns a [KinematicCollision], which contains information about a collision that occured during the last [method move_and_slide] call. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1). + Returns a [KinematicCollision], which contains information about a collision that occurred during the last [method move_and_slide] call. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1). </description> </method> <method name="get_slide_count" qualifiers="const"> @@ -82,11 +83,11 @@ <description> Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [code]KinematicBody[/code] or [RigidBody], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes. [code]linear_velocity[/code] is a value in pixels per second. Unlike in for example [method move_and_collide], you should [i]not[/i] multiply it with [code]delta[/code] — this is done by the method. - [code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector2(0, 0)[/code], everything is considered a wall. This is useful for topdown games. + [code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector3(0, 0, 0)[/code], everything is considered a wall. This is useful for topdown games. If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes. If the body collides, it will change direction a maximum of [code]max_bounces[/code] times before it stops. [code]floor_max_angle[/code] is the maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall. The default value equals 45 degrees. - Returns the movement that remained when the body stopped. To get more detailed information about collisions that occured, use [method get_slide_collision]. + Returns the movement that remained when the body stopped. To get more detailed information about collisions that occurred, use [method get_slide_collision]. </description> </method> <method name="test_move"> diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml index 8563b059f2..f7303c19c4 100644 --- a/doc/classes/KinematicBody2D.xml +++ b/doc/classes/KinematicBody2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="KinematicBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-beta"> +<class name="KinematicBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-stable"> <brief_description> Kinematic body 2D node. </brief_description> @@ -26,7 +26,7 @@ <argument index="0" name="slide_idx" type="int"> </argument> <description> - Returns a [KinematicCollision2D], which contains information about a collision that occured during the last [method move_and_slide] call. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1). + Returns a [KinematicCollision2D], which contains information about a collision that occurred during the last [method move_and_slide] call. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1). </description> </method> <method name="get_slide_count" qualifiers="const"> @@ -86,7 +86,7 @@ If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes. If the body collides, it will change direction a maximum of [code]max_bounces[/code] times before it stops. [code]floor_max_angle[/code] is the maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall. The default value equals 45 degrees. - Returns the movement that remained when the body stopped. To get more detailed information about collisions that occured, use [method get_slide_collision]. + Returns the movement that remained when the body stopped. To get more detailed information about collisions that occurred, use [method get_slide_collision]. </description> </method> <method name="test_move"> diff --git a/doc/classes/KinematicCollision.xml b/doc/classes/KinematicCollision.xml index 9f25bece2c..613b135578 100644 --- a/doc/classes/KinematicCollision.xml +++ b/doc/classes/KinematicCollision.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="KinematicCollision" inherits="Reference" category="Core" version="3.0-beta"> +<class name="KinematicCollision" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Collision data for KinematicBody collisions. </brief_description> diff --git a/doc/classes/KinematicCollision2D.xml b/doc/classes/KinematicCollision2D.xml index 01b09f1c01..bb949877ad 100644 --- a/doc/classes/KinematicCollision2D.xml +++ b/doc/classes/KinematicCollision2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="KinematicCollision2D" inherits="Reference" category="Core" version="3.0-beta"> +<class name="KinematicCollision2D" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Collision data for KinematicBody2D collisions. </brief_description> diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml index 089b81164b..bbf83308de 100644 --- a/doc/classes/Label.xml +++ b/doc/classes/Label.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Label" inherits="Control" category="Core" version="3.0-beta"> +<class name="Label" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Displays plain text in a line or wrapped inside a rectangle. For formatted text, use [RichTextLabel]. </brief_description> <description> Label displays plain text on the screen. It gives you control over the horizontal and vertical alignment, and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics or other formatting. For that, use [RichTextLabel] instead. + Note that contrarily to most other [Control]s, Label's [member Control.mouse_filter] defaults to MOUSE_FILTER_IGNORE (i.e. it doesn't react to mouse input events). </description> <tutorials> </tutorials> @@ -32,13 +33,6 @@ Returns the total length of the text. </description> </method> - <method name="get_visible_characters" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the restricted number of characters to display. Returns -1 if unrestricted. - </description> - </method> <method name="get_visible_line_count" qualifiers="const"> <return type="int"> </return> @@ -46,15 +40,6 @@ Returns the number of lines shown. Useful if the [code]Label[/code] 's height cannot currently display all lines. </description> </method> - <method name="set_visible_characters"> - <return type="void"> - </return> - <argument index="0" name="amount" type="int"> - </argument> - <description> - Restricts the number of characters to display. Set to -1 to disable. - </description> - </method> </methods> <members> <member name="align" type="int" setter="set_align" getter="get_align" enum="Label.Align"> @@ -84,6 +69,9 @@ <member name="valign" type="int" setter="set_valign" getter="get_valign" enum="Label.VAlign"> Controls the text's vertical align. Supports top, center, bottom, and fill. Set it to one of the [code]VALIGN_*[/code] constants. </member> + <member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters"> + Restricts the number of characters to display. Set to -1 to disable. + </member> </members> <constants> <constant name="ALIGN_LEFT" value="0" enum="Align"> diff --git a/doc/classes/LargeTexture.xml b/doc/classes/LargeTexture.xml index 9d79034dea..219943f021 100644 --- a/doc/classes/LargeTexture.xml +++ b/doc/classes/LargeTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="LargeTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="LargeTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> A Texture capable of storing many smaller Textures with offsets. </brief_description> diff --git a/doc/classes/Light.xml b/doc/classes/Light.xml index 4aa39ffff6..30722919d5 100644 --- a/doc/classes/Light.xml +++ b/doc/classes/Light.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Light" inherits="VisualInstance" category="Core" version="3.0-beta"> +<class name="Light" inherits="VisualInstance" category="Core" version="3.0-stable"> <brief_description> Provides a base class for different kinds of light nodes. </brief_description> @@ -7,6 +7,7 @@ Light is the abstract base class for light nodes, so it shouldn't be used directly (It can't be instanced). Other types of light nodes inherit from it. Light contains the common variables and parameters used for lighting. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html </tutorials> <demos> </demos> diff --git a/doc/classes/Light2D.xml b/doc/classes/Light2D.xml index fe1f25ad9e..019bf48082 100644 --- a/doc/classes/Light2D.xml +++ b/doc/classes/Light2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Light2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Light2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Casts light in a 2D environment. </brief_description> diff --git a/doc/classes/LightOccluder2D.xml b/doc/classes/LightOccluder2D.xml index de42b2812c..4ea82918e1 100644 --- a/doc/classes/LightOccluder2D.xml +++ b/doc/classes/LightOccluder2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="LightOccluder2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="LightOccluder2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Occludes light cast by a Light2D, casting shadows. </brief_description> diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml index 9455882f02..a5eadae715 100644 --- a/doc/classes/Line2D.xml +++ b/doc/classes/Line2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Line2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Line2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> A 2D line. </brief_description> @@ -71,7 +71,7 @@ The gradient is drawn through the whole line from start to finish. The default color will not be used if a gradient is set. </member> <member name="joint_mode" type="int" setter="set_joint_mode" getter="get_joint_mode" enum="Line2D.LineJointMode"> - The style for the points inbetween the start and the end. + The style for the points between the start and the end. </member> <member name="points" type="PoolVector2Array" setter="set_points" getter="get_points"> The points that form the lines. The line is drawn between every point set in this array. diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml index 4434a7b7e2..d82fafd4ec 100644 --- a/doc/classes/LineEdit.xml +++ b/doc/classes/LineEdit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="LineEdit" inherits="Control" category="Core" version="3.0-beta"> +<class name="LineEdit" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Control that provides single line string editing. </brief_description> @@ -34,13 +34,6 @@ Clears the current selection. </description> </method> - <method name="get_cursor_position" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the cursor position inside the [code]LineEdit[/code]. - </description> - </method> <method name="get_menu" qualifiers="const"> <return type="PopupMenu"> </return> @@ -81,15 +74,6 @@ Selects the whole [String]. </description> </method> - <method name="set_cursor_position"> - <return type="void"> - </return> - <argument index="0" name="position" type="int"> - </argument> - <description> - Sets the cursor position inside the [code]LineEdit[/code]. The text may scroll if needed. - </description> - </method> </methods> <members> <member name="align" type="int" setter="set_align" getter="get_align" enum="LineEdit.Align"> @@ -101,6 +85,9 @@ <member name="caret_blink_speed" type="float" setter="cursor_set_blink_speed" getter="cursor_get_blink_speed"> Duration (in seconds) of a caret's blinking cycle. </member> + <member name="caret_position" type="int" setter="set_cursor_position" getter="get_cursor_position"> + The cursor's position inside the [code]LineEdit[/code]. When set, the text may scroll to accommodate it. + </member> <member name="context_menu_enabled" type="bool" setter="set_context_menu_enabled" getter="is_context_menu_enabled"> If [code]true[/code] the context menu will appear when right clicked. </member> @@ -131,14 +118,14 @@ </members> <signals> <signal name="text_changed"> - <argument index="0" name="text" type="String"> + <argument index="0" name="new_text" type="String"> </argument> <description> Emitted when the text changes. </description> </signal> <signal name="text_entered"> - <argument index="0" name="text" type="String"> + <argument index="0" name="new_text" type="String"> </argument> <description> Emitted when the user presses KEY_ENTER on the [code]LineEdit[/code]. diff --git a/doc/classes/LineShape2D.xml b/doc/classes/LineShape2D.xml index e55676fd59..a6a1e7eb36 100644 --- a/doc/classes/LineShape2D.xml +++ b/doc/classes/LineShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="LineShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="LineShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Line shape for 2D collisions. </brief_description> diff --git a/doc/classes/LinkButton.xml b/doc/classes/LinkButton.xml index 82b3a90180..37bfb005ab 100644 --- a/doc/classes/LinkButton.xml +++ b/doc/classes/LinkButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="LinkButton" inherits="BaseButton" category="Core" version="3.0-beta"> +<class name="LinkButton" inherits="BaseButton" category="Core" version="3.0-stable"> <brief_description> Simple button used to represent a link to some resource </brief_description> diff --git a/doc/classes/Listener.xml b/doc/classes/Listener.xml index 3b21e3fdac..5765e071a4 100644 --- a/doc/classes/Listener.xml +++ b/doc/classes/Listener.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Listener" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Listener" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/MainLoop.xml b/doc/classes/MainLoop.xml index c5a4e53907..5a49641531 100644 --- a/doc/classes/MainLoop.xml +++ b/doc/classes/MainLoop.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MainLoop" inherits="Object" category="Core" version="3.0-beta"> +<class name="MainLoop" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Main loop is the abstract main loop base class. </brief_description> diff --git a/doc/classes/MarginContainer.xml b/doc/classes/MarginContainer.xml index c56f9a5c58..25ac7c5668 100644 --- a/doc/classes/MarginContainer.xml +++ b/doc/classes/MarginContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MarginContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="MarginContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> Simple margin container. </brief_description> diff --git a/doc/classes/Marshalls.xml b/doc/classes/Marshalls.xml index d83c81a960..554c32c893 100644 --- a/doc/classes/Marshalls.xml +++ b/doc/classes/Marshalls.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Marshalls" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Marshalls" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Data transformation (marshalling) and encoding helpers. </brief_description> diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml index 2b2f45e8be..5c31efc5e0 100644 --- a/doc/classes/Material.xml +++ b/doc/classes/Material.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Material" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Material" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Abstract base [Resource] for coloring and shading geometry. </brief_description> diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml index 22231cfdf3..5b15bba22a 100644 --- a/doc/classes/MenuButton.xml +++ b/doc/classes/MenuButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MenuButton" inherits="Button" category="Core" version="3.0-beta"> +<class name="MenuButton" inherits="Button" category="Core" version="3.0-stable"> <brief_description> Special button that brings up a [PopupMenu] when clicked. </brief_description> @@ -18,6 +18,14 @@ Return the [PopupMenu] contained in this button. </description> </method> + <method name="set_disable_shortcuts"> + <return type="void"> + </return> + <argument index="0" name="disabled" type="bool"> + </argument> + <description> + </description> + </method> </methods> <signals> <signal name="about_to_show"> diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml index 465b68171e..7fbc7768f7 100644 --- a/doc/classes/Mesh.xml +++ b/doc/classes/Mesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Mesh" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Mesh" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> A [Resource] that contains vertex-array based geometry. </brief_description> diff --git a/doc/classes/MeshDataTool.xml b/doc/classes/MeshDataTool.xml index db20179116..720ab6f5d2 100644 --- a/doc/classes/MeshDataTool.xml +++ b/doc/classes/MeshDataTool.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MeshDataTool" inherits="Reference" category="Core" version="3.0-beta"> +<class name="MeshDataTool" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/MeshInstance.xml b/doc/classes/MeshInstance.xml index 9273e87430..3b9ed70e77 100644 --- a/doc/classes/MeshInstance.xml +++ b/doc/classes/MeshInstance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MeshInstance" inherits="GeometryInstance" category="Core" version="3.0-beta"> +<class name="MeshInstance" inherits="GeometryInstance" category="Core" version="3.0-stable"> <brief_description> Node that instances meshes into a scenario. </brief_description> diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml index 3275969e78..774deab0ef 100644 --- a/doc/classes/MeshLibrary.xml +++ b/doc/classes/MeshLibrary.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MeshLibrary" inherits="Resource" category="Core" version="3.0-beta"> +<class name="MeshLibrary" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Library of meshes. </brief_description> diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml index ff2d89b2ca..270da019eb 100644 --- a/doc/classes/MultiMesh.xml +++ b/doc/classes/MultiMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MultiMesh" inherits="Resource" category="Core" version="3.0-beta"> +<class name="MultiMesh" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Provides high performance mesh instancing. </brief_description> diff --git a/doc/classes/MultiMeshInstance.xml b/doc/classes/MultiMeshInstance.xml index bad61fa254..aef372f810 100644 --- a/doc/classes/MultiMeshInstance.xml +++ b/doc/classes/MultiMeshInstance.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MultiMeshInstance" inherits="GeometryInstance" category="Core" version="3.0-beta"> +<class name="MultiMeshInstance" inherits="GeometryInstance" category="Core" version="3.0-stable"> <brief_description> Node that instances a [MultiMesh]. </brief_description> <description> - MultiMeshInstance is a [Node] that takes a [MultiMesh] resource and adds it to the current scenario by creating an instance of it (yes, this is an instance of instances). + [code]MultiMeshInstance[/code] is a specialized node to instance [GeometryInstance]s based on a [MultiMesh] resource. + This is useful to optimize the rendering of a high amount of instances of a given mesh (for example tree in a forest or grass strands). </description> <tutorials> </tutorials> @@ -14,6 +15,7 @@ </methods> <members> <member name="multimesh" type="MultiMesh" setter="set_multimesh" getter="get_multimesh"> + The [MultiMesh] resource that will be used and shared among all instances of the [code]MultiMeshInstance[/code]. </member> </members> <constants> diff --git a/doc/classes/Mutex.xml b/doc/classes/Mutex.xml index 74d59b2dd3..2ed02cad48 100644 --- a/doc/classes/Mutex.xml +++ b/doc/classes/Mutex.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Mutex" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Mutex" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> A synchronization Mutex. </brief_description> diff --git a/doc/classes/Navigation.xml b/doc/classes/Navigation.xml index 8fe520f853..86302694a0 100644 --- a/doc/classes/Navigation.xml +++ b/doc/classes/Navigation.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Navigation" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Navigation" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> A collection of [code]NavigationMesh[/code] resources and methods used for pathfinding. </brief_description> diff --git a/doc/classes/Navigation2D.xml b/doc/classes/Navigation2D.xml index 18c15a616a..80d53c00a5 100644 --- a/doc/classes/Navigation2D.xml +++ b/doc/classes/Navigation2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Navigation2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Navigation2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml index 55a3771d79..5cde8942d1 100644 --- a/doc/classes/NavigationMesh.xml +++ b/doc/classes/NavigationMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NavigationMesh" inherits="Resource" category="Core" version="3.0-beta"> +<class name="NavigationMesh" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NavigationMeshInstance.xml b/doc/classes/NavigationMeshInstance.xml index ddca9d747e..f329bad0eb 100644 --- a/doc/classes/NavigationMeshInstance.xml +++ b/doc/classes/NavigationMeshInstance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NavigationMeshInstance" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="NavigationMeshInstance" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml index 663ac4cd67..6e8154c4e5 100644 --- a/doc/classes/NavigationPolygon.xml +++ b/doc/classes/NavigationPolygon.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NavigationPolygon" inherits="Resource" category="Core" version="3.0-beta"> +<class name="NavigationPolygon" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NavigationPolygonInstance.xml b/doc/classes/NavigationPolygonInstance.xml index ea314667ca..023f13de89 100644 --- a/doc/classes/NavigationPolygonInstance.xml +++ b/doc/classes/NavigationPolygonInstance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NavigationPolygonInstance" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="NavigationPolygonInstance" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NetworkedMultiplayerPeer.xml b/doc/classes/NetworkedMultiplayerPeer.xml index a7350b3863..8f746594bc 100644 --- a/doc/classes/NetworkedMultiplayerPeer.xml +++ b/doc/classes/NetworkedMultiplayerPeer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NetworkedMultiplayerPeer" inherits="PacketPeer" category="Core" version="3.0-beta"> +<class name="NetworkedMultiplayerPeer" inherits="PacketPeer" category="Core" version="3.0-stable"> <brief_description> A high-level network interface to simplify multiplayer interactions. </brief_description> @@ -7,6 +7,7 @@ Manages the connection to network peers. Assigns unique IDs to each client connected to the server. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/networking/high_level_multiplayer.html </tutorials> <demos> </demos> @@ -32,13 +33,6 @@ Returns the ID of this [code]NetworkedMultiplayerPeer[/code]. </description> </method> - <method name="is_refusing_new_connections" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if this [code]NetworkedMultiplayerPeer[/code] refuses new connections. Default value: [code]false[/code]. - </description> - </method> <method name="poll"> <return type="void"> </return> @@ -46,15 +40,6 @@ Waits up to 1 second to receive a new network event. </description> </method> - <method name="set_refuse_new_connections"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If [code]true[/code] this [code]NetworkedMultiplayerPeer[/code] refuses new connections. Default value: [code]false[/code]. - </description> - </method> <method name="set_target_peer"> <return type="void"> </return> @@ -64,16 +49,15 @@ The peer to which packets will be sent. Default value: [code]0[/code]. </description> </method> - <method name="set_transfer_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="NetworkedMultiplayerPeer.TransferMode"> - </argument> - <description> - The manner in which to send packets to the [code]target_peer[/code]. See [enum TransferMode]. - </description> - </method> </methods> + <members> + <member name="refuse_new_connections" type="bool" setter="set_refuse_new_connections" getter="is_refusing_new_connections"> + If [code]true[/code] this [code]NetworkedMultiplayerPeer[/code] refuses new connections. Default value: [code]false[/code]. + </member> + <member name="transfer_mode" type="int" setter="set_transfer_mode" getter="get_transfer_mode" enum="NetworkedMultiplayerPeer.TransferMode"> + The manner in which to send packets to the [code]target_peer[/code]. See [enum TransferMode]. + </member> + </members> <signals> <signal name="connection_failed"> <description> diff --git a/doc/classes/Nil.xml b/doc/classes/Nil.xml index a30dae8af1..2e845d511a 100644 --- a/doc/classes/Nil.xml +++ b/doc/classes/Nil.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Nil" category="Built-In Types" version="3.0-beta"> +<class name="Nil" category="Built-In Types" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NinePatchRect.xml b/doc/classes/NinePatchRect.xml index b7440137c8..e67f0ea4a4 100644 --- a/doc/classes/NinePatchRect.xml +++ b/doc/classes/NinePatchRect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NinePatchRect" inherits="Control" category="Core" version="3.0-beta"> +<class name="NinePatchRect" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Scalable texture-based frame that tiles the texture's centers and sides, but keeps the corners' original size. Perfect for panels and dialog boxes. </brief_description> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index e56733f102..46c8bf01a5 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Node" inherits="Object" category="Core" version="3.0-beta"> +<class name="Node" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Base class for all [i]scene[/i] objects. </brief_description> @@ -16,6 +16,7 @@ [b]Networking with nodes:[/b] After connecting to a server (or making one, see [NetworkedMultiplayerENet]) it is possible to use the built-in RPC (remote procedure call) system to communicate over the network. By calling [method rpc] with a method name, it will be called locally and in all connected peers (peers = clients and the server that accepts connections), with behaviour varying depending on the network mode ([method set_network_mode]) of the receiving peer. To identify which node receives the RPC call Godot will use its [NodePath] (make sure node names are the same on all peers). </description> <tutorials> + http://docs.godotengine.org/en/3.0/getting_started/step_by_step/scenes_and_nodes.html </tutorials> <demos> </demos> @@ -32,8 +33,8 @@ <return type="void"> </return> <description> - Called when the node leaves the [SceneTree] (e.g. upon freeing, scene changing, or after calling [method remove_child] in a script). If the node has children, its [method _exit_tree] callback will be called last, after all its children have left the tree. - Corresponds to the NOTIFICATION_EXIT_TREE notification in [method Object._notification]. + Called when the node is about to leave the [SceneTree] (e.g. upon freeing, scene changing, or after calling [method remove_child] in a script). If the node has children, its [method _exit_tree] callback will be called last, after all its children have left the tree. + Corresponds to the NOTIFICATION_EXIT_TREE notification in [method Object._notification] and signal [signal tree_exiting]. To get notified when the node has already left the active tree, connect to the [signal tree_exited] </description> </method> <method name="_input" qualifiers="virtual"> @@ -43,7 +44,7 @@ </argument> <description> Called when there is an input event. The input event propagates through the node tree until a node consumes it. - It is only called if input processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_process_input]. + It is only called if input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_input]. </description> </method> <method name="_physics_process" qualifiers="virtual"> @@ -53,7 +54,7 @@ </argument> <description> Called during the physics processing step of the main loop. Physics processing means that the frame rate is synced to the physics, i.e. the [code]delta[/code] variable should be constant. - It is only called if physics processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_physics_process]. + It is only called if physics processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_physics_process]. Corresponds to the NOTIFICATION_PHYSICS_PROCESS notification in [method Object._notification]. </description> </method> @@ -64,7 +65,7 @@ </argument> <description> Called during the processing step of the main loop. Processing happens at every frame and as fast as possible, so the [code]delta[/code] time since the previous frame is not constant. - It is only called if processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_process]. + It is only called if processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process]. Corresponds to the NOTIFICATION_PROCESS notification in [method Object._notification]. </description> </method> @@ -83,7 +84,7 @@ </argument> <description> Propagated to all nodes when the previous InputEvent is not consumed by any nodes. - It is only called if unhandled input processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_process_unhandled_input]. + It is only called if unhandled input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_unhandled_input]. </description> </method> <method name="_unhandled_key_input" qualifiers="virtual"> @@ -184,13 +185,6 @@ Returns an array of references to node's children. </description> </method> - <method name="get_filename" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns a filename that may be contained by the node. When a scene is instanced from a file, its topmost node contains the filename from which it was loaded (see [method set_filename]). - </description> - </method> <method name="get_groups" qualifiers="const"> <return type="Array"> </return> @@ -205,13 +199,6 @@ Returns the node's index, i.e. its position among the siblings of its parent. </description> </method> - <method name="get_name" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the name of the node. This name is unique among the siblings (other child nodes from the same parent). - </description> - </method> <method name="get_network_master" qualifiers="const"> <return type="int"> </return> @@ -255,13 +242,6 @@ <description> </description> </method> - <method name="get_owner" qualifiers="const"> - <return type="Node"> - </return> - <description> - Returns the node owner (see [method set_owner]). - </description> - </method> <method name="get_parent" qualifiers="const"> <return type="Node"> </return> @@ -659,24 +639,6 @@ Sets the folded state of the node in the Scene dock. </description> </method> - <method name="set_filename"> - <return type="void"> - </return> - <argument index="0" name="filename" type="String"> - </argument> - <description> - A node can contain a filename. This filename should not be changed by the user, unless writing editors and tools. When a scene is instanced from a file, its topmost node contains the filename from which it was loaded. - </description> - </method> - <method name="set_name"> - <return type="void"> - </return> - <argument index="0" name="name" type="String"> - </argument> - <description> - Sets the name of the node. The name must be unique within the parent. Using an existing name will cause the node to be automatically renamed. - </description> - </method> <method name="set_network_master"> <return type="void"> </return> @@ -688,22 +650,13 @@ Sets the node network master to the peer with the given peer ID. The network master is the peer that has authority over it on the network. Inherited from the parent node by default, which ultimately defaults to peer ID 1 (the server). </description> </method> - <method name="set_owner"> - <return type="void"> - </return> - <argument index="0" name="owner" type="Node"> - </argument> - <description> - Sets the node owner. A node can have any other node as owner (as long as it is a valid parent, grandparent, etc ascending in the tree). When saving a node (using SceneSaver) all the nodes it owns will be saved with it. This allows for the creation of complex [SceneTree]s, with instancing and subinstancing. - </description> - </method> <method name="set_physics_process"> <return type="void"> </return> <argument index="0" name="enable" type="bool"> </argument> <description> - Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a NOTIFICATION_PHYSICS_PROCESS at a fixed (usually 60 fps, see [OS] to change) interval (and the [method _physics_process] callback will be called if exists). Enabled automatically if [method _physics_process] is overriden. Any calls to this before [method _ready] will be ignored. + Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a NOTIFICATION_PHYSICS_PROCESS at a fixed (usually 60 fps, see [OS] to change) interval (and the [method _physics_process] callback will be called if exists). Enabled automatically if [method _physics_process] is overridden. Any calls to this before [method _ready] will be ignored. </description> </method> <method name="set_physics_process_internal"> @@ -720,7 +673,7 @@ <argument index="0" name="enable" type="bool"> </argument> <description> - Enables or disables processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS on every drawn frame (and the [method _process] callback will be called if exists). Enabled automatically if [method _process] is overriden. Any calls to this before [method _ready] will be ignored. + Enables or disables processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS on every drawn frame (and the [method _process] callback will be called if exists). Enabled automatically if [method _process] is overridden. Any calls to this before [method _ready] will be ignored. </description> </method> <method name="set_process_input"> @@ -729,7 +682,7 @@ <argument index="0" name="enable" type="bool"> </argument> <description> - Enables or disables input processing. This is not required for GUI controls! Enabled automatically if [method _input] is overriden. Any calls to this before [method _ready] will be ignored. + Enables or disables input processing. This is not required for GUI controls! Enabled automatically if [method _input] is overridden. Any calls to this before [method _ready] will be ignored. </description> </method> <method name="set_process_internal"> @@ -746,7 +699,7 @@ <argument index="0" name="enable" type="bool"> </argument> <description> - Enables unhandled input processing. This is not required for GUI controls! It enables the node to receive all input that was not previously handled (usually by a [Control]). Enabled automatically if [method _unhandled_input] is overriden. Any calls to this before [method _ready] will be ignored. + Enables unhandled input processing. This is not required for GUI controls! It enables the node to receive all input that was not previously handled (usually by a [Control]). Enabled automatically if [method _unhandled_input] is overridden. Any calls to this before [method _ready] will be ignored. </description> </method> <method name="set_process_unhandled_key_input"> @@ -755,7 +708,7 @@ <argument index="0" name="enable" type="bool"> </argument> <description> - Enables unhandled key input processing. Enabled automatically if [method _unhandled_key_input] is overriden. Any calls to this before [method _ready] will be ignored. + Enables unhandled key input processing. Enabled automatically if [method _unhandled_key_input] is overridden. Any calls to this before [method _ready] will be ignored. </description> </method> <method name="set_scene_instance_load_placeholder"> @@ -768,6 +721,16 @@ </method> </methods> <members> + <member name="filename" type="String" setter="set_filename" getter="get_filename"> + When a scene is instanced from a file, its topmost node contains the filename from which it was loaded. + </member> + <member name="name" type="String" setter="set_name" getter="get_name"> + The name of the node. This name is unique among the siblings (other child nodes from the same parent). + When set to an existing name, the node will be automatically renamed + </member> + <member name="owner" type="Node" setter="set_owner" getter="get_owner"> + The node owner. A node can have any other node as owner (as long as it is a valid parent, grandparent, etc. ascending in the tree). When saving a node (using SceneSaver) all the nodes it owns will be saved with it. This allows for the creation of complex [SceneTree]s, with instancing and subinstancing. + </member> <member name="pause_mode" type="int" setter="set_pause_mode" getter="get_pause_mode" enum="Node.PauseMode"> </member> </members> @@ -784,7 +747,12 @@ </signal> <signal name="tree_exited"> <description> - Emitted when the node exits the tree. + Emitted after the node exits the tree and is no longer active. + </description> + </signal> + <signal name="tree_exiting"> + <description> + Emitted when the node is still active but about to exit the tree. This is the right place for de-initialization. </description> </signal> </signals> @@ -793,7 +761,7 @@ Notification received when the node enters a [SceneTree]. </constant> <constant name="NOTIFICATION_EXIT_TREE" value="11"> - Notification received when the node exits a [SceneTree]. + Notification received when the node is about to exit a [SceneTree]. </constant> <constant name="NOTIFICATION_MOVED_IN_PARENT" value="12"> Notification received when the node is moved in the parent. diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml index 81978809d7..f51c5abe18 100644 --- a/doc/classes/Node2D.xml +++ b/doc/classes/Node2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Node2D" inherits="CanvasItem" category="Core" version="3.0-beta"> +<class name="Node2D" inherits="CanvasItem" category="Core" version="3.0-stable"> <brief_description> A 2D game object, parent of all 2D related nodes. Has a position, rotation, scale and Z-index. </brief_description> @@ -7,6 +7,7 @@ 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. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/2d/custom_drawing_in_2d.html </tutorials> <demos> </demos> @@ -38,12 +39,6 @@ Returns the [Transform2D] relative to this node's parent. </description> </method> - <method name="get_rotation" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> <method name="global_translate"> <return type="void"> </return> @@ -93,14 +88,6 @@ Applies a rotation to the node, in radians, starting from its current rotation. </description> </method> - <method name="set_rotation"> - <return type="void"> - </return> - <argument index="0" name="radians" type="float"> - </argument> - <description> - </description> - </method> <method name="to_global" qualifiers="const"> <return type="Vector2"> </return> @@ -148,6 +135,9 @@ <member name="position" type="Vector2" setter="set_position" getter="get_position"> Position, relative to the node's parent. </member> + <member name="rotation" type="float" setter="set_rotation" getter="get_rotation"> + Rotation in radians, relative to the node's parent. + </member> <member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees"> Rotation in degrees, relative to the node's parent. </member> @@ -157,12 +147,12 @@ <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform"> Local [Transform2D]. </member> - <member name="z" type="int" setter="set_z" getter="get_z"> - Z-index. Controls the order in which the nodes render. A node with a higher Z-index will display in front of others. - </member> <member name="z_as_relative" type="bool" setter="set_z_as_relative" getter="is_z_relative"> If [code]true[/code] the node's Z-index is relative to its parent's Z-index. If this node's Z-index is 2 and its parent's effective Z-index is 3, then this node's effective Z-index will be 2 + 3 = 5. </member> + <member name="z_index" type="int" setter="set_z_index" getter="get_z_index"> + Z-index. Controls the order in which the nodes render. A node with a higher Z-index will display in front of others. + </member> </members> <constants> </constants> diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml index 8d5de705b5..6027f110da 100644 --- a/doc/classes/NodePath.xml +++ b/doc/classes/NodePath.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NodePath" category="Built-In Types" version="3.0-beta"> +<class name="NodePath" category="Built-In Types" version="3.0-stable"> <brief_description> Pre-parsed scene tree path. </brief_description> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 902bf4ebfa..80febff4af 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="OS" inherits="Object" category="Core" version="3.0-beta"> +<class name="OS" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Operating System functions. </brief_description> @@ -87,7 +87,18 @@ <argument index="3" name="output" type="Array" default="[ ]"> </argument> <description> - Execute the binary file in given path, optionally blocking until it returns. A process ID is returned. + Execute the file at the given path, optionally blocking until it returns. + Platform path resolution will take place. The resolved file must exist and be executable. + Returns a process id. + For example: + [codeblock] + var output = [] + var pid = OS.execute('ls', [], true, output) + [/codeblock] + If you wish to access a shell built-in or perform a composite command, a platform specific shell can be invoked. For example: + [codeblock] + var pid = OS.execute('CMD.exe', ['/C', 'cd %TEMP% && dir'], true, output) + [/codeblock] </description> </method> <method name="find_scancode_from_string" qualifiers="const"> @@ -99,20 +110,6 @@ Returns the scancode of the given string (e.g. "Escape") </description> </method> - <method name="get_borderless_window" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns true if the current window is borderless. - </description> - </method> - <method name="get_clipboard" qualifiers="const"> - <return type="String"> - </return> - <description> - Get clipboard from the host OS. - </description> - </method> <method name="get_cmdline_args"> <return type="PoolStringArray"> </return> @@ -120,13 +117,6 @@ Returns the command line arguments passed to the engine. </description> </method> - <method name="get_current_screen" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the current screen index (0 padded). - </description> - </method> <method name="get_date" qualifiers="const"> <return type="Dictionary"> </return> @@ -178,12 +168,6 @@ Returns the path to the current engine executable. </description> </method> - <method name="get_exit_code" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> <method name="get_latin_keyboard_variant" qualifiers="const"> <return type="String"> </return> @@ -281,13 +265,6 @@ xxxhdpi - 640 dpi </description> </method> - <method name="get_screen_orientation" qualifiers="const"> - <return type="int" enum="OS.ScreenOrientation"> - </return> - <description> - Returns the current screen orientation, the return value will be one of the SCREEN_ORIENTATION constants in this class. - </description> - </method> <method name="get_screen_position" qualifiers="const"> <return type="Vector2"> </return> @@ -403,20 +380,6 @@ <description> </description> </method> - <method name="get_window_position" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Returns 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. - </description> - </method> - <method name="get_window_size" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Returns the size of the window (without counting window manager decorations). - </description> - </method> <method name="has_environment" qualifiers="const"> <return type="bool"> </return> @@ -464,20 +427,6 @@ Returns [code]false[/code] if the build is a release build. </description> </method> - <method name="is_in_low_processor_usage_mode" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if low cpu usage mode is enabled. - </description> - </method> - <method name="is_keep_screen_on" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the screen is being kept on. - </description> - </method> <method name="is_ok_left_and_cancel_right" qualifiers="const"> <return type="bool"> </return> @@ -508,41 +457,6 @@ If [code]true[/code], the [code]user://[/code] file system is persistent, so that its state is the same after a player quits and starts the game again. Relevant to the HTML5 platform, where this persistence may be unavailable. </description> </method> - <method name="is_vsync_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if synchronizing the framerate to the monitor's refresh rate is enabled. - </description> - </method> - <method name="is_window_fullscreen" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the window is in fullscreen mode. - </description> - </method> - <method name="is_window_maximized" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the window is maximized. - </description> - </method> - <method name="is_window_minimized" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the window is minimized. - </description> - </method> - <method name="is_window_resizable" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the window is resizable. - </description> - </method> <method name="kill"> <return type="int" enum="Error"> </return> @@ -636,42 +550,6 @@ Request the user attention to the window. It'll flash the taskbar button on Windows or bounce the dock icon on OSX. </description> </method> - <method name="set_borderless_window"> - <return type="void"> - </return> - <argument index="0" name="borderless" type="bool"> - </argument> - <description> - Removes the window frame. - </description> - </method> - <method name="set_clipboard"> - <return type="void"> - </return> - <argument index="0" name="clipboard" type="String"> - </argument> - <description> - Sets clipboard to the OS. - </description> - </method> - <method name="set_current_screen"> - <return type="void"> - </return> - <argument index="0" name="screen" type="int"> - </argument> - <description> - Sets the current screen by index. - </description> - </method> - <method name="set_exit_code"> - <return type="void"> - </return> - <argument index="0" name="code" type="int"> - </argument> - <description> - Sets the exit code that will be returned by the game. - </description> - </method> <method name="set_icon"> <return type="void"> </return> @@ -689,33 +567,6 @@ <description> </description> </method> - <method name="set_keep_screen_on"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Sets keep screen on if true, or goes to sleep by device setting if false. (for Android/iOS) - </description> - </method> - <method name="set_low_processor_usage_mode"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set to [code]true[/code] to enable the low cpu usage mode. In this mode, the screen only redraws when there are changes, and a considerable sleep time is inserted between frames. Use this in tool mode to reduce CPU usage. - </description> - </method> - <method name="set_screen_orientation"> - <return type="void"> - </return> - <argument index="0" name="orientation" type="int" enum="OS.ScreenOrientation"> - </argument> - <description> - Sets the current screen orientation, the argument value must be one of the SCREEN_ORIENTATION constants in this class. - </description> - </method> <method name="set_thread_name"> <return type="int" enum="Error"> </return> @@ -734,69 +585,6 @@ Enables backup saves if [code]enabled[/code] is [code]true[/code]. </description> </method> - <method name="set_use_vsync"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If [code]true[/code] the framerate will synchronize to the monitor's refresh rate. - </description> - </method> - <method name="set_window_fullscreen"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Sets window fullscreen mode to the [i]enabled[/i] argument, [i]enabled[/i] is a toggle for the fullscreen mode, calling the function with [i]enabled[/i] true when the screen is not on fullscreen mode will cause the screen to go to fullscreen mode, calling the function with [i]enabled[/i] false when the screen is in fullscreen mode will cause the window to exit the fullscreen mode. - </description> - </method> - <method name="set_window_maximized"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set [code]true[/code] to maximize the window. - </description> - </method> - <method name="set_window_minimized"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set [code]true[/code] to minimize the window. - </description> - </method> - <method name="set_window_position"> - <return type="void"> - </return> - <argument index="0" name="position" type="Vector2"> - </argument> - <description> - Sets the position of the window to the specified position (this function could be restricted by the window manager, meaning that there could be some unreachable areas of the screen). - </description> - </method> - <method name="set_window_resizable"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Sets the window resizable state, if the window is not resizable it will preserve the dimensions specified in the project settings. - </description> - </method> - <method name="set_window_size"> - <return type="void"> - </return> - <argument index="0" name="size" type="Vector2"> - </argument> - <description> - Sets the window size to the specified size. - </description> - </method> <method name="set_window_title"> <return type="void"> </return> @@ -827,6 +615,46 @@ </description> </method> </methods> + <members> + <member name="clipboard" type="String" setter="set_clipboard" getter="get_clipboard"> + The clipboard from the host OS. Might be unavailable on some platforms. + </member> + <member name="current_screen" type="int" setter="set_current_screen" getter="get_current_screen"> + The current screen index (starting from 0). + </member> + <member name="exit_code" type="int" setter="set_exit_code" getter="get_exit_code"> + </member> + <member name="keep_screen_on" type="bool" setter="set_keep_screen_on" getter="is_keep_screen_on"> + </member> + <member name="low_processor_usage_mode" type="bool" setter="set_low_processor_usage_mode" getter="is_in_low_processor_usage_mode"> + </member> + <member name="screen_orientation" type="int" setter="set_screen_orientation" getter="get_screen_orientation" enum="_OS.ScreenOrientation"> + The current screen orientation. + </member> + <member name="vsync_enabled" type="bool" setter="set_use_vsync" getter="is_vsync_enabled"> + </member> + <member name="window_borderless" type="bool" setter="set_borderless_window" getter="get_borderless_window"> + If [code]true[/code], removes the window frame. + </member> + <member name="window_fullscreen" type="bool" setter="set_window_fullscreen" getter="is_window_fullscreen"> + If [code]true[/code], the window is fullscreen. + </member> + <member name="window_maximized" type="bool" setter="set_window_maximized" getter="is_window_maximized"> + If [code]true[/code], the window is maximized. + </member> + <member name="window_minimized" type="bool" setter="set_window_minimized" getter="is_window_minimized"> + If [code]true[/code], the window is minimized. + </member> + <member name="window_position" type="Vector2" setter="set_window_position" getter="get_window_position"> + 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. + </member> + <member name="window_resizable" type="bool" setter="set_window_resizable" getter="is_window_resizable"> + If [code]true[/code], the window is resizable by the user. + </member> + <member name="window_size" type="Vector2" setter="set_window_size" getter="get_window_size"> + The size of the window (without counting window manager decorations). + </member> + </members> <constants> <constant name="DAY_SUNDAY" value="0" enum="Weekday"> </constant> diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml index 5d0e51c481..8a7006ea97 100644 --- a/doc/classes/Object.xml +++ b/doc/classes/Object.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Object" category="Core" version="3.0-beta"> +<class name="Object" category="Core" version="3.0-stable"> <brief_description> Base class for all non built-in types. </brief_description> diff --git a/doc/classes/OccluderPolygon2D.xml b/doc/classes/OccluderPolygon2D.xml index f11f82c7de..f16aca487e 100644 --- a/doc/classes/OccluderPolygon2D.xml +++ b/doc/classes/OccluderPolygon2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="OccluderPolygon2D" inherits="Resource" category="Core" version="3.0-beta"> +<class name="OccluderPolygon2D" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Defines a 2D polygon for LightOccluder2D. </brief_description> diff --git a/doc/classes/OmniLight.xml b/doc/classes/OmniLight.xml index f0c5c81a47..d4d00e2a9b 100644 --- a/doc/classes/OmniLight.xml +++ b/doc/classes/OmniLight.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="OmniLight" inherits="Light" category="Core" version="3.0-beta"> +<class name="OmniLight" inherits="Light" category="Core" version="3.0-stable"> <brief_description> OmniDirectional Light, such as a light bulb or a candle. </brief_description> @@ -7,6 +7,7 @@ An OmniDirectional light is a type of [Light] node that emits lights in all directions. The light is attenuated through the distance and this attenuation can be configured by changing the energy, radius and attenuation parameters of [Light]. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html </tutorials> <demos> </demos> diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml index ff3e513c79..56f4aa2082 100644 --- a/doc/classes/OptionButton.xml +++ b/doc/classes/OptionButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="OptionButton" inherits="Button" category="Core" version="3.0-beta"> +<class name="OptionButton" inherits="Button" category="Core" version="3.0-stable"> <brief_description> Button control that provides selectable options when pressed. </brief_description> diff --git a/doc/classes/PCKPacker.xml b/doc/classes/PCKPacker.xml index 0e297ba875..a04f9ef6fb 100644 --- a/doc/classes/PCKPacker.xml +++ b/doc/classes/PCKPacker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PCKPacker" inherits="Reference" category="Core" version="3.0-beta"> +<class name="PCKPacker" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/PHashTranslation.xml b/doc/classes/PHashTranslation.xml index 04220e5155..94fddad706 100644 --- a/doc/classes/PHashTranslation.xml +++ b/doc/classes/PHashTranslation.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PHashTranslation" inherits="Translation" category="Core" version="3.0-beta"> +<class name="PHashTranslation" inherits="Translation" category="Core" version="3.0-stable"> <brief_description> Optimized translation. </brief_description> diff --git a/doc/classes/PackedDataContainer.xml b/doc/classes/PackedDataContainer.xml index d4b7bc36c6..42d00e067b 100644 --- a/doc/classes/PackedDataContainer.xml +++ b/doc/classes/PackedDataContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PackedDataContainer" inherits="Resource" category="Core" version="3.0-beta"> +<class name="PackedDataContainer" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/PackedDataContainerRef.xml b/doc/classes/PackedDataContainerRef.xml index 93a5bbb627..1adbbeb5a1 100644 --- a/doc/classes/PackedDataContainerRef.xml +++ b/doc/classes/PackedDataContainerRef.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PackedDataContainerRef" inherits="Reference" category="Core" version="3.0-beta"> +<class name="PackedDataContainerRef" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml index 80ef3afdb1..a5877a66d2 100644 --- a/doc/classes/PackedScene.xml +++ b/doc/classes/PackedScene.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PackedScene" inherits="Resource" category="Core" version="3.0-beta"> +<class name="PackedScene" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> An abstraction of a serialized scene. </brief_description> diff --git a/doc/classes/PacketPeer.xml b/doc/classes/PacketPeer.xml index 57d88d7ff8..354ef1f3f3 100644 --- a/doc/classes/PacketPeer.xml +++ b/doc/classes/PacketPeer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PacketPeer" inherits="Reference" category="Core" version="3.0-beta"> +<class name="PacketPeer" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Abstraction and base class for packet-based protocols. </brief_description> @@ -39,12 +39,6 @@ Get a Variant. </description> </method> - <method name="is_object_decoding_allowed" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="put_packet"> <return type="int" enum="Error"> </return> @@ -63,15 +57,11 @@ Send a Variant as a packet. </description> </method> - <method name="set_allow_object_decoding"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="allow_object_decoding" type="bool" setter="set_allow_object_decoding" getter="is_object_decoding_allowed"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/PacketPeerStream.xml b/doc/classes/PacketPeerStream.xml index 5d320a09f8..b475c9d99e 100644 --- a/doc/classes/PacketPeerStream.xml +++ b/doc/classes/PacketPeerStream.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PacketPeerStream" inherits="PacketPeer" category="Core" version="3.0-beta"> +<class name="PacketPeerStream" inherits="PacketPeer" category="Core" version="3.0-stable"> <brief_description> Wrapper to use a PacketPeer over a StreamPeer. </brief_description> @@ -11,44 +11,16 @@ <demos> </demos> <methods> - <method name="get_input_buffer_max_size" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_output_buffer_max_size" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="set_input_buffer_max_size"> - <return type="void"> - </return> - <argument index="0" name="max_size_bytes" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_output_buffer_max_size"> - <return type="void"> - </return> - <argument index="0" name="max_size_bytes" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_stream_peer"> - <return type="void"> - </return> - <argument index="0" name="peer" type="Reference"> - </argument> - <description> - Set the [StreamPeer] object to be wrapped. - </description> - </method> </methods> + <members> + <member name="input_buffer_max_size" type="int" setter="set_input_buffer_max_size" getter="get_input_buffer_max_size"> + </member> + <member name="output_buffer_max_size" type="int" setter="set_output_buffer_max_size" getter="get_output_buffer_max_size"> + </member> + <member name="stream_peer" type="StreamPeer" setter="set_stream_peer" getter="get_stream_peer"> + The wrapped [StreamPeer] object. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml index 838365bc87..d7b38297ba 100644 --- a/doc/classes/PacketPeerUDP.xml +++ b/doc/classes/PacketPeerUDP.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PacketPeerUDP" inherits="PacketPeer" category="Core" version="3.0-beta"> +<class name="PacketPeerUDP" inherits="PacketPeer" category="Core" version="3.0-stable"> <brief_description> UDP packet peer. </brief_description> diff --git a/doc/classes/Panel.xml b/doc/classes/Panel.xml index e0dc2cafce..38c605f8a4 100644 --- a/doc/classes/Panel.xml +++ b/doc/classes/Panel.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Panel" inherits="Control" category="Core" version="3.0-beta"> +<class name="Panel" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Provides an opaque background for [Control] children. </brief_description> diff --git a/doc/classes/PanelContainer.xml b/doc/classes/PanelContainer.xml index 2a3fb2eeb9..4c0875dea5 100644 --- a/doc/classes/PanelContainer.xml +++ b/doc/classes/PanelContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PanelContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="PanelContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> Panel container type. </brief_description> diff --git a/doc/classes/PanoramaSky.xml b/doc/classes/PanoramaSky.xml index 6a26347120..b99f29e112 100644 --- a/doc/classes/PanoramaSky.xml +++ b/doc/classes/PanoramaSky.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PanoramaSky" inherits="Sky" category="Core" version="3.0-beta"> +<class name="PanoramaSky" inherits="Sky" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/ParallaxBackground.xml b/doc/classes/ParallaxBackground.xml index da22f03845..0b9e3c9609 100644 --- a/doc/classes/ParallaxBackground.xml +++ b/doc/classes/ParallaxBackground.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ParallaxBackground" inherits="CanvasLayer" category="Core" version="3.0-beta"> +<class name="ParallaxBackground" inherits="CanvasLayer" category="Core" version="3.0-stable"> <brief_description> A node used to create a parallax scrolling background. </brief_description> diff --git a/doc/classes/ParallaxLayer.xml b/doc/classes/ParallaxLayer.xml index c70e6befc4..1feb3054f3 100644 --- a/doc/classes/ParallaxLayer.xml +++ b/doc/classes/ParallaxLayer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ParallaxLayer" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="ParallaxLayer" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> A parallax scrolling layer to be used with [ParallaxBackground]. </brief_description> diff --git a/doc/classes/Particles.xml b/doc/classes/Particles.xml index 2a5dcb26e8..bdf62f2b14 100644 --- a/doc/classes/Particles.xml +++ b/doc/classes/Particles.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Particles" inherits="GeometryInstance" category="Core" version="3.0-beta"> +<class name="Particles" inherits="GeometryInstance" category="Core" version="3.0-stable"> <brief_description> 3D particle emitter. </brief_description> diff --git a/doc/classes/Particles2D.xml b/doc/classes/Particles2D.xml index 8b908a1fa2..20b9632c30 100644 --- a/doc/classes/Particles2D.xml +++ b/doc/classes/Particles2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Particles2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Particles2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> 2D particle emitter. </brief_description> diff --git a/doc/classes/ParticlesMaterial.xml b/doc/classes/ParticlesMaterial.xml index 42bc1b2d05..28ca512ec4 100644 --- a/doc/classes/ParticlesMaterial.xml +++ b/doc/classes/ParticlesMaterial.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ParticlesMaterial" inherits="Material" category="Core" version="3.0-beta"> +<class name="ParticlesMaterial" inherits="Material" category="Core" version="3.0-stable"> <brief_description> Particle properties for [Particles] and [Particles2D] nodes. </brief_description> diff --git a/doc/classes/Path.xml b/doc/classes/Path.xml index a5e690e121..0d931e12fd 100644 --- a/doc/classes/Path.xml +++ b/doc/classes/Path.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Path" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Path" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Container for a [Curve3D]. </brief_description> diff --git a/doc/classes/Path2D.xml b/doc/classes/Path2D.xml index 832b86f516..e889027283 100644 --- a/doc/classes/Path2D.xml +++ b/doc/classes/Path2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Path2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Path2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Contains a [Curve2D] path for [PathFollow2D] nodes to follow. </brief_description> diff --git a/doc/classes/PathFollow.xml b/doc/classes/PathFollow.xml index de7bb8715c..144afa21e7 100644 --- a/doc/classes/PathFollow.xml +++ b/doc/classes/PathFollow.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PathFollow" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="PathFollow" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Point sampler for a [Path]. </brief_description> @@ -12,122 +12,32 @@ <demos> </demos> <methods> - <method name="get_cubic_interpolation" qualifiers="const"> - <return type="bool"> - </return> - <description> - This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly. - </description> - </method> - <method name="get_h_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the X displacement this node has from its parent [Path]. - </description> - </method> - <method name="get_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the distance along the path in 3D units. - </description> - </method> - <method name="get_rotation_mode" qualifiers="const"> - <return type="int" enum="PathFollow.RotationMode"> - </return> - <description> - Returns the rotation mode. The constants below list which axes are allowed to rotate for each mode. - </description> - </method> - <method name="get_unit_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). - </description> - </method> - <method name="get_v_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the Y displacement this node has from its parent [Path]. - </description> - </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether this node wraps its offsets around, or truncates them to the path ends. - </description> - </method> - <method name="set_cubic_interpolation"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - The points along the [Curve3D] of the [Path] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough. - There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations. - This method controls whether the position between two cached points is interpolated linearly, or cubicly. - </description> - </method> - <method name="set_h_offset"> - <return type="void"> - </return> - <argument index="0" name="h_offset" type="float"> - </argument> - <description> - Moves this node in the X axis. As this node's position will be set every time its offset is set, this allows many PathFollow to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset. - A similar effect may be achieved moving the this node's descendants. - </description> - </method> - <method name="set_loop"> - <return type="void"> - </return> - <argument index="0" name="loop" type="bool"> - </argument> - <description> - If set, any offset outside the path's length (whether set by [method set_offset] or [method set_unit_offset] will wrap around, instead of stopping at the ends. Set it for cyclic paths. - </description> - </method> - <method name="set_offset"> - <return type="void"> - </return> - <argument index="0" name="offset" type="float"> - </argument> - <description> - Sets the distance from the first vertex, measured in 3D units along the path. This sets this node's position to a point within the path. - </description> - </method> - <method name="set_rotation_mode"> - <return type="void"> - </return> - <argument index="0" name="rotation_mode" type="int" enum="PathFollow.RotationMode"> - </argument> - <description> - Allows or forbids rotation on one or more axes, per the constants below. - </description> - </method> - <method name="set_unit_offset"> - <return type="void"> - </return> - <argument index="0" name="unit_offset" type="float"> - </argument> - <description> - Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. - </description> - </method> - <method name="set_v_offset"> - <return type="void"> - </return> - <argument index="0" name="v_offset" type="float"> - </argument> - <description> - Moves this node in the Y axis, for the same reasons of [method set_h_offset]. - </description> - </method> </methods> + <members> + <member name="cubic_interp" type="bool" setter="set_cubic_interpolation" getter="get_cubic_interpolation"> + If [code]true[/code] the position between two cached points is interpolated cubically, and linearly otherwise. + The points along the [Curve3D] of the [Path] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough. + There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations. + </member> + <member name="h_offset" type="float" setter="set_h_offset" getter="get_h_offset"> + The node's offset along the curve. + </member> + <member name="loop" type="bool" setter="set_loop" getter="has_loop"> + If [code]true[/code], any offset outside the path's length will wrap around, instead of stopping at the ends. Use it for cyclic paths. + </member> + <member name="offset" type="float" setter="set_offset" getter="get_offset"> + The distance from the first vertex, measured in 3D units along the path. This sets this node's position to a point within the path. + </member> + <member name="rotation_mode" type="int" setter="set_rotation_mode" getter="get_rotation_mode" enum="PathFollow.RotationMode"> + Allows or forbids rotation on one or more axes, depending on the constants being used. + </member> + <member name="unit_offset" type="float" setter="set_unit_offset" getter="get_unit_offset"> + The distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. + </member> + <member name="v_offset" type="float" setter="set_v_offset" getter="get_v_offset"> + The node's offset perpendicular to the curve. + </member> + </members> <constants> <constant name="ROTATION_NONE" value="0" enum="RotationMode"> Forbids the PathFollow to rotate. diff --git a/doc/classes/PathFollow2D.xml b/doc/classes/PathFollow2D.xml index 56bec3d719..2d844c22bb 100644 --- a/doc/classes/PathFollow2D.xml +++ b/doc/classes/PathFollow2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PathFollow2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="PathFollow2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Point sampler for a [Path2D]. </brief_description> @@ -12,122 +12,34 @@ <demos> </demos> <methods> - <method name="get_cubic_interpolation" qualifiers="const"> - <return type="bool"> - </return> - <description> - This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly. - </description> - </method> - <method name="get_h_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the horizontal displacement this node has from its parent [Path2D]. - </description> - </method> - <method name="get_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the distance along the path in pixels. - </description> - </method> - <method name="get_unit_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). - </description> - </method> - <method name="get_v_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the vertical displacement this node has from its parent [Path2D]. - </description> - </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether this node wraps its offsets around, or truncates them to the path ends. - </description> - </method> - <method name="is_rotating" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether this node rotates to follow the path. - </description> - </method> - <method name="set_cubic_interpolation"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - The points along the [Curve2D] of the [Path2D] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough. - There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations. - This method controls whether the position between two cached points is interpolated linearly, or cubicly. - </description> - </method> - <method name="set_h_offset"> - <return type="void"> - </return> - <argument index="0" name="h_offset" type="float"> - </argument> - <description> - Moves this node horizontally. As this node's position will be set every time its offset is set, this allows many PathFollow2D to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset. - A similar effect may be achieved moving this node's descendants. - </description> - </method> - <method name="set_loop"> - <return type="void"> - </return> - <argument index="0" name="loop" type="bool"> - </argument> - <description> - If set, any offset outside the path's length (whether set by [method set_offset] or [method set_unit_offset] will wrap around, instead of stopping at the ends. Set it for cyclic paths. - </description> - </method> - <method name="set_offset"> - <return type="void"> - </return> - <argument index="0" name="offset" type="float"> - </argument> - <description> - Sets the distance from the first vertex, measured in pixels along the path. This sets this node's position to a point within the path. - </description> - </method> - <method name="set_rotate"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If set, this node rotates to follow the path, making its descendants rotate. - </description> - </method> - <method name="set_unit_offset"> - <return type="void"> - </return> - <argument index="0" name="unit_offset" type="float"> - </argument> - <description> - Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. - </description> - </method> - <method name="set_v_offset"> - <return type="void"> - </return> - <argument index="0" name="v_offset" type="float"> - </argument> - <description> - Moves the PathFollow2D vertically, for the same reasons of [method set_h_offset]. - </description> - </method> </methods> + <members> + <member name="cubic_interp" type="bool" setter="set_cubic_interpolation" getter="get_cubic_interpolation"> + If [code]true[/code] the position between two cached points is interpolated cubically, and linearly otherwise. + The points along the [Curve2D] of the [Path2D] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough. + There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations. + </member> + <member name="h_offset" type="float" setter="set_h_offset" getter="get_h_offset"> + The node's offset along the curve. + </member> + <member name="lookahead" type="float" setter="set_lookahead" getter="get_lookahead"> + </member> + <member name="loop" type="bool" setter="set_loop" getter="has_loop"> + If [code]true[/code], any offset outside the path's length will wrap around, instead of stopping at the ends. Use it for cyclic paths. + </member> + <member name="offset" type="float" setter="set_offset" getter="get_offset"> + The distance along the path in pixels. + </member> + <member name="rotate" type="bool" setter="set_rotate" getter="is_rotating"> + If [code]true[/code], this node rotates to follow the path, making its descendants rotate. + </member> + <member name="unit_offset" type="float" setter="set_unit_offset" getter="get_unit_offset"> + The distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. + </member> + <member name="v_offset" type="float" setter="set_v_offset" getter="get_v_offset"> + The node's offset perpendicular to the curve. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/Performance.xml b/doc/classes/Performance.xml index 5781d6c604..18e45f7c3f 100644 --- a/doc/classes/Performance.xml +++ b/doc/classes/Performance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Performance" inherits="Object" category="Core" version="3.0-beta"> +<class name="Performance" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Exposes performance related data. </brief_description> diff --git a/doc/classes/Physics2DDirectBodyState.xml b/doc/classes/Physics2DDirectBodyState.xml index a229ca494d..190325396d 100644 --- a/doc/classes/Physics2DDirectBodyState.xml +++ b/doc/classes/Physics2DDirectBodyState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DDirectBodyState" inherits="Object" category="Core" version="3.0-beta"> +<class name="Physics2DDirectBodyState" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Direct access object to a physics body in the [Physics2DServer]. </brief_description> @@ -11,13 +11,6 @@ <demos> </demos> <methods> - <method name="get_angular_velocity" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the angular velocity of the body. - </description> - </method> <method name="get_contact_collider" qualifiers="const"> <return type="RID"> </return> @@ -115,27 +108,6 @@ Return the local shape index of the collision. </description> </method> - <method name="get_inverse_inertia" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the inverse of the inertia of the body. - </description> - </method> - <method name="get_inverse_mass" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the inverse of the mass of the body. - </description> - </method> - <method name="get_linear_velocity" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the current linear velocity of the body. - </description> - </method> <method name="get_space_state"> <return type="Physics2DDirectSpaceState"> </return> @@ -143,41 +115,6 @@ Return the current state of space, useful for queries. </description> </method> - <method name="get_step" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the timestep (delta) used for the simulation. - </description> - </method> - <method name="get_total_angular_damp" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the rate at which the body stops rotating, if there are not any other forces moving it. - </description> - </method> - <method name="get_total_gravity" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the total gravity vector being currently applied to this body. - </description> - </method> - <method name="get_total_linear_damp" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the rate at which the body stops moving, if there are not any other forces moving it. - </description> - </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform2D"> - </return> - <description> - Return the transform matrix of the body. - </description> - </method> <method name="integrate_forces"> <return type="void"> </return> @@ -185,50 +122,39 @@ Call the built-in force integration code. </description> </method> - <method name="is_sleeping" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return true if this body is currently sleeping (not active). - </description> - </method> - <method name="set_angular_velocity"> - <return type="void"> - </return> - <argument index="0" name="velocity" type="float"> - </argument> - <description> - Change the angular velocity of the body. - </description> - </method> - <method name="set_linear_velocity"> - <return type="void"> - </return> - <argument index="0" name="velocity" type="Vector2"> - </argument> - <description> - Change the linear velocity of the body. - </description> - </method> - <method name="set_sleep_state"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set the sleeping state of the body, only affects character/rigid bodies. - </description> - </method> - <method name="set_transform"> - <return type="void"> - </return> - <argument index="0" name="transform" type="Transform2D"> - </argument> - <description> - Change the transform matrix of the body. - </description> - </method> </methods> + <members> + <member name="angular_velocity" type="float" setter="set_angular_velocity" getter="get_angular_velocity"> + The angular velocity of the body. + </member> + <member name="inverse_inertia" type="float" setter="" getter="get_inverse_inertia"> + The inverse of the inertia of the body. + </member> + <member name="inverse_mass" type="float" setter="" getter="get_inverse_mass"> + The inverse of the mass of the body. + </member> + <member name="linear_velocity" type="Vector2" setter="set_linear_velocity" getter="get_linear_velocity"> + The linear velocity of the body. + </member> + <member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping"> + [code]true[/code] if this body is currently sleeping (not active). + </member> + <member name="step" type="float" setter="" getter="get_step"> + The timestep (delta) used for the simulation. + </member> + <member name="total_angular_damp" type="float" setter="" getter="get_total_angular_damp"> + The rate at which the body stops rotating, if there are not any other forces moving it. + </member> + <member name="total_gravity" type="Vector2" setter="" getter="get_total_gravity"> + The total gravity vector being currently applied to this body. + </member> + <member name="total_linear_damp" type="float" setter="" getter="get_total_linear_damp"> + The rate at which the body stops moving, if there are not any other forces moving it. + </member> + <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform"> + The transformation matrix of the body. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/Physics2DDirectBodyStateSW.xml b/doc/classes/Physics2DDirectBodyStateSW.xml index 0ce51e2cf5..f6bcaef7be 100644 --- a/doc/classes/Physics2DDirectBodyStateSW.xml +++ b/doc/classes/Physics2DDirectBodyStateSW.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DDirectBodyStateSW" inherits="Physics2DDirectBodyState" category="Core" version="3.0-beta"> +<class name="Physics2DDirectBodyStateSW" inherits="Physics2DDirectBodyState" category="Core" version="3.0-stable"> <brief_description> Software implementation of [Physics2DDirectBodyState]. </brief_description> diff --git a/doc/classes/Physics2DDirectSpaceState.xml b/doc/classes/Physics2DDirectSpaceState.xml index 2e2d8e95f9..5e0908f497 100644 --- a/doc/classes/Physics2DDirectSpaceState.xml +++ b/doc/classes/Physics2DDirectSpaceState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DDirectSpaceState" inherits="Object" category="Core" version="3.0-beta"> +<class name="Physics2DDirectSpaceState" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Direct access object to a space in the [Physics2DServer]. </brief_description> @@ -7,6 +7,7 @@ Direct access object to a space in the [Physics2DServer]. It's used mainly to do queries against objects and areas residing in a given space. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html </tutorials> <demos> </demos> diff --git a/doc/classes/Physics2DServer.xml b/doc/classes/Physics2DServer.xml index 67f5f84a49..c0316aa1bc 100644 --- a/doc/classes/Physics2DServer.xml +++ b/doc/classes/Physics2DServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DServer" inherits="Object" category="Core" version="3.0-beta"> +<class name="Physics2DServer" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Physics 2D Server. </brief_description> @@ -216,7 +216,7 @@ <argument index="2" name="disable" type="bool"> </argument> <description> - Disables a given shape in this area if [code]disable is true[/code] + Disables a given shape in an area. </description> </method> <method name="area_set_shape_transform"> @@ -638,7 +638,7 @@ <argument index="2" name="enable" type="bool"> </argument> <description> - Enables one way collision on body if [code]enable is true[/code]. + Enables one way collision on body if [code]enable[/code] is [code]true[/code]. </description> </method> <method name="body_set_shape_disabled"> @@ -651,7 +651,7 @@ <argument index="2" name="disable" type="bool"> </argument> <description> - Disables shape in body if [code]disable is true[/code]. + Disables shape in body if [code]disable[/code] is [code]true[/code]. </description> </method> <method name="body_set_shape_metadata"> @@ -1135,6 +1135,12 @@ <constant name="JOINT_DAMPED_SPRING" value="2" enum="JointType"> Constant to create damped spring joints. </constant> + <constant name="JOINT_PARAM_BIAS" value="0" enum="JointParam"> + </constant> + <constant name="JOINT_PARAM_MAX_BIAS" value="1" enum="JointParam"> + </constant> + <constant name="JOINT_PARAM_MAX_FORCE" value="2" enum="JointParam"> + </constant> <constant name="DAMPED_STRING_REST_LENGTH" value="0" enum="DampedStringParam"> Set the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. </constant> diff --git a/doc/classes/Physics2DServerSW.xml b/doc/classes/Physics2DServerSW.xml index 09fed88082..6942c5e3af 100644 --- a/doc/classes/Physics2DServerSW.xml +++ b/doc/classes/Physics2DServerSW.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DServerSW" inherits="Physics2DServer" category="Core" version="3.0-beta"> +<class name="Physics2DServerSW" inherits="Physics2DServer" category="Core" version="3.0-stable"> <brief_description> Software implementation of [Physics2DServer]. </brief_description> diff --git a/doc/classes/Physics2DShapeQueryParameters.xml b/doc/classes/Physics2DShapeQueryParameters.xml index 93165afe60..7cd35f4167 100644 --- a/doc/classes/Physics2DShapeQueryParameters.xml +++ b/doc/classes/Physics2DShapeQueryParameters.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DShapeQueryParameters" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Physics2DShapeQueryParameters" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Parameters to be sent to a 2D shape physics query. </brief_description> @@ -11,84 +11,6 @@ <demos> </demos> <methods> - <method name="get_collision_layer" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the physics layer the shape belongs to. - </description> - </method> - <method name="get_exclude" qualifiers="const"> - <return type="Array"> - </return> - <description> - Return the list of objects, or object [RID]s, that will be excluded from collisions. - </description> - </method> - <method name="get_margin" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the collision margin for the shape. - </description> - </method> - <method name="get_motion" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the current movement speed of the shape. - </description> - </method> - <method name="get_shape_rid" qualifiers="const"> - <return type="RID"> - </return> - <description> - Return the [RID] of the shape queried. - </description> - </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform2D"> - </return> - <description> - Return the transform matrix of the shape queried. - </description> - </method> - <method name="set_collision_layer"> - <return type="void"> - </return> - <argument index="0" name="collision_layer" type="int"> - </argument> - <description> - Set the physics layer the shape belongs to. - </description> - </method> - <method name="set_exclude"> - <return type="void"> - </return> - <argument index="0" name="exclude" type="Array"> - </argument> - <description> - Set the list of objects, or object [RID]s, that will be excluded from collisions. - </description> - </method> - <method name="set_margin"> - <return type="void"> - </return> - <argument index="0" name="margin" type="float"> - </argument> - <description> - Set the collision margin for the shape. A collision margin is an amount (in pixels) that the shape will grow when computing collisions, to account for numerical imprecision. - </description> - </method> - <method name="set_motion"> - <return type="void"> - </return> - <argument index="0" name="motion" type="Vector2"> - </argument> - <description> - Set the current movement speed of the shape. - </description> - </method> <method name="set_shape"> <return type="void"> </return> @@ -98,25 +20,27 @@ Set the [Shape2D] that will be used for collision/intersection queries. </description> </method> - <method name="set_shape_rid"> - <return type="void"> - </return> - <argument index="0" name="shape" type="RID"> - </argument> - <description> - Set the [RID] of the shape to be used in queries. - </description> - </method> - <method name="set_transform"> - <return type="void"> - </return> - <argument index="0" name="transform" type="Transform2D"> - </argument> - <description> - Set the transformation matrix of the shape. This is necessary to set its position/rotation/scale. - </description> - </method> </methods> + <members> + <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer"> + The physics layer the query should be made on. + </member> + <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude"> + 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"> + The collision margin for the shape. + </member> + <member name="motion" type="Vector2" setter="set_motion" getter="get_motion"> + 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 [method set_shape] also. + </member> + <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform"> + the transform matrix of the queried shape. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/Physics2DShapeQueryResult.xml b/doc/classes/Physics2DShapeQueryResult.xml index 5345ad161f..b080da43a2 100644 --- a/doc/classes/Physics2DShapeQueryResult.xml +++ b/doc/classes/Physics2DShapeQueryResult.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DShapeQueryResult" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Physics2DShapeQueryResult" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/Physics2DTestMotionResult.xml b/doc/classes/Physics2DTestMotionResult.xml index bc7cb68bc9..8b4260c484 100644 --- a/doc/classes/Physics2DTestMotionResult.xml +++ b/doc/classes/Physics2DTestMotionResult.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Physics2DTestMotionResult" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Physics2DTestMotionResult" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,61 +9,27 @@ <demos> </demos> <methods> - <method name="get_collider" qualifiers="const"> - <return type="Object"> - </return> - <description> - </description> - </method> - <method name="get_collider_id" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_collider_rid" qualifiers="const"> - <return type="RID"> - </return> - <description> - </description> - </method> - <method name="get_collider_shape" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_collider_velocity" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> - <method name="get_collision_normal" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> - <method name="get_collision_point" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> - <method name="get_motion" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> - <method name="get_motion_remainder" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> </methods> + <members> + <member name="collider" type="Object" setter="" getter="get_collider"> + </member> + <member name="collider_id" type="int" setter="" getter="get_collider_id"> + </member> + <member name="collider_rid" type="RID" setter="" getter="get_collider_rid"> + </member> + <member name="collider_shape" type="int" setter="" getter="get_collider_shape"> + </member> + <member name="collider_velocity" type="Vector2" setter="" getter="get_collider_velocity"> + </member> + <member name="collision_normal" type="Vector2" setter="" getter="get_collision_normal"> + </member> + <member name="collision_point" type="Vector2" setter="" getter="get_collision_point"> + </member> + <member name="motion" type="Vector2" setter="" getter="get_motion"> + </member> + <member name="motion_remainder" type="Vector2" setter="" getter="get_motion_remainder"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/PhysicsBody.xml b/doc/classes/PhysicsBody.xml index 79164215c8..27db2c8f07 100644 --- a/doc/classes/PhysicsBody.xml +++ b/doc/classes/PhysicsBody.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsBody" inherits="CollisionObject" category="Core" version="3.0-beta"> +<class name="PhysicsBody" inherits="CollisionObject" category="Core" version="3.0-stable"> <brief_description> Base class for all objects affected by physics in 3D space. </brief_description> @@ -7,6 +7,7 @@ PhysicsBody is an abstract base class for implementing a physics body. All *Body types inherit from it. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> diff --git a/doc/classes/PhysicsBody2D.xml b/doc/classes/PhysicsBody2D.xml index aaf782c245..34e86fa63a 100644 --- a/doc/classes/PhysicsBody2D.xml +++ b/doc/classes/PhysicsBody2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsBody2D" inherits="CollisionObject2D" category="Core" version="3.0-beta"> +<class name="PhysicsBody2D" inherits="CollisionObject2D" category="Core" version="3.0-stable"> <brief_description> Base class for all objects affected by physics in 2D space. </brief_description> @@ -7,6 +7,7 @@ PhysicsBody2D is an abstract base class for implementing a physics body. All *Body2D types inherit from it. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> diff --git a/doc/classes/PhysicsDirectBodyState.xml b/doc/classes/PhysicsDirectBodyState.xml index 1d588ecfff..1f9c492571 100644 --- a/doc/classes/PhysicsDirectBodyState.xml +++ b/doc/classes/PhysicsDirectBodyState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsDirectBodyState" inherits="Object" category="Core" version="3.0-beta"> +<class name="PhysicsDirectBodyState" inherits="Object" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -37,18 +37,6 @@ <description> </description> </method> - <method name="get_angular_velocity" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - </description> - </method> - <method name="get_center_of_mass" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - </description> - </method> <method name="get_contact_collider" qualifiers="const"> <return type="RID"> </return> @@ -127,111 +115,55 @@ <description> </description> </method> - <method name="get_inverse_inertia" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - </description> - </method> - <method name="get_inverse_mass" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_linear_velocity" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - </description> - </method> - <method name="get_principal_inertia_axes" qualifiers="const"> - <return type="Basis"> - </return> - <description> - </description> - </method> <method name="get_space_state"> <return type="PhysicsDirectSpaceState"> </return> <description> </description> </method> - <method name="get_step" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_total_angular_damp" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_total_gravity" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - </description> - </method> - <method name="get_total_linear_damp" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform"> - </return> - <description> - </description> - </method> <method name="integrate_forces"> <return type="void"> </return> <description> </description> </method> - <method name="is_sleeping" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_angular_velocity"> - <return type="void"> - </return> - <argument index="0" name="velocity" type="Vector3"> - </argument> - <description> - </description> - </method> - <method name="set_linear_velocity"> - <return type="void"> - </return> - <argument index="0" name="velocity" type="Vector3"> - </argument> - <description> - </description> - </method> - <method name="set_sleep_state"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_transform"> - <return type="void"> - </return> - <argument index="0" name="transform" type="Transform"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="angular_velocity" type="Vector3" setter="set_angular_velocity" getter="get_angular_velocity"> + The angular velocity of the body. + </member> + <member name="center_of_mass" type="Vector3" setter="" getter="get_center_of_mass"> + </member> + <member name="inverse_inertia" type="Vector3" setter="" getter="get_inverse_inertia"> + The inverse of the inertia of the body. + </member> + <member name="inverse_mass" type="float" setter="" getter="get_inverse_mass"> + The inverse of the mass of the body. + </member> + <member name="linear_velocity" type="Vector3" setter="set_linear_velocity" getter="get_linear_velocity"> + The linear velocity of the body. + </member> + <member name="principal_inertia_axes" type="Basis" setter="" getter="get_principal_inertia_axes"> + </member> + <member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping"> + [code]true[/code] if this body is currently sleeping (not active). + </member> + <member name="step" type="float" setter="" getter="get_step"> + The timestep (delta) used for the simulation. + </member> + <member name="total_angular_damp" type="float" setter="" getter="get_total_angular_damp"> + The rate at which the body stops rotating, if there are not any other forces moving it. + </member> + <member name="total_gravity" type="Vector3" setter="" getter="get_total_gravity"> + The total gravity vector being currently applied to this body. + </member> + <member name="total_linear_damp" type="float" setter="" getter="get_total_linear_damp"> + The rate at which the body stops moving, if there are not any other forces moving it. + </member> + <member name="transform" type="Transform" setter="set_transform" getter="get_transform"> + The transformation matrix of the body. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/PhysicsDirectSpaceState.xml b/doc/classes/PhysicsDirectSpaceState.xml index d93550eb47..6c8d084f26 100644 --- a/doc/classes/PhysicsDirectSpaceState.xml +++ b/doc/classes/PhysicsDirectSpaceState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsDirectSpaceState" inherits="Object" category="Core" version="3.0-beta"> +<class name="PhysicsDirectSpaceState" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Direct access object to a space in the [PhysicsServer]. </brief_description> @@ -7,6 +7,7 @@ Direct access object to a space in the [PhysicsServer]. It's used mainly to do queries against objects and areas residing in a given space. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html </tutorials> <demos> </demos> diff --git a/doc/classes/PhysicsServer.xml b/doc/classes/PhysicsServer.xml index 534449a94b..9920d5364b 100644 --- a/doc/classes/PhysicsServer.xml +++ b/doc/classes/PhysicsServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsServer" inherits="Object" category="Core" version="3.0-beta"> +<class name="PhysicsServer" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Server interface for low level physics access. </brief_description> @@ -1199,7 +1199,7 @@ If above 0, this value is the maximum value for an impulse that this Joint puts on it's ends. </constant> <constant name="HINGE_JOINT_BIAS" value="0" enum="HingeJointParam"> - The speed with wich the two bodies get pulled together when they move in different directions. + The speed with which the two bodies get pulled together when they move in different directions. </constant> <constant name="HINGE_JOINT_LIMIT_UPPER" value="1" enum="HingeJointParam"> The maximum rotation across the Hinge. @@ -1234,7 +1234,7 @@ The minimum difference between the pivot points on their x-axis before damping happens. </constant> <constant name="SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS" value="2" enum="SliderJointParam"> - A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement. + A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement. </constant> <constant name="SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION" value="3" enum="SliderJointParam"> The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost. @@ -1243,7 +1243,7 @@ The amount of damping once the slider limits are surpassed. </constant> <constant name="SLIDER_JOINT_LINEAR_MOTION_SOFTNESS" value="5" enum="SliderJointParam"> - A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement. + A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement. </constant> <constant name="SLIDER_JOINT_LINEAR_MOTION_RESTITUTION" value="6" enum="SliderJointParam"> The amount of restitution inside the slider limits. @@ -1252,13 +1252,13 @@ The amount of damping inside the slider limits. </constant> <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS" value="8" enum="SliderJointParam"> - A factor applied to the movement accross axes orthogonal to the slider. + A factor applied to the movement across axes orthogonal to the slider. </constant> <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION" value="9" enum="SliderJointParam"> - The amount of restitution when movement is accross axes orthogonal to the slider. + The amount of restitution when movement is across axes orthogonal to the slider. </constant> <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING" value="10" enum="SliderJointParam"> - The amount of damping when movement is accross axes orthogonal to the slider. + The amount of damping when movement is across axes orthogonal to the slider. </constant> <constant name="SLIDER_JOINT_ANGULAR_LIMIT_UPPER" value="11" enum="SliderJointParam"> The upper limit of rotation in the slider. @@ -1323,7 +1323,7 @@ The maximum difference between the pivot points' axes. </constant> <constant name="G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS" value="2" enum="G6DOFJointAxisParam"> - A factor that gets applied to the movement accross the axes. The lower, the slower the movement. + A factor that gets applied to the movement across the axes. The lower, the slower the movement. </constant> <constant name="G6DOF_JOINT_LINEAR_RESTITUTION" value="3" enum="G6DOFJointAxisParam"> The amount of restitution on the axes movement. The lower, the more velocity-energy gets lost. @@ -1332,25 +1332,25 @@ The amount of damping that happens at the linear motion across the axes. </constant> <constant name="G6DOF_JOINT_ANGULAR_LOWER_LIMIT" value="5" enum="G6DOFJointAxisParam"> - The minimum rotation in negative direction to break loose and rotate arround the axes. + The minimum rotation in negative direction to break loose and rotate around the axes. </constant> <constant name="G6DOF_JOINT_ANGULAR_UPPER_LIMIT" value="6" enum="G6DOFJointAxisParam"> - The minimum rotation in positive direction to break loose and rotate arround the axes. + The minimum rotation in positive direction to break loose and rotate around the axes. </constant> <constant name="G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS" value="7" enum="G6DOFJointAxisParam"> - A factor that gets multiplied onto all rotations accross the axes. + A factor that gets multiplied onto all rotations across the axes. </constant> <constant name="G6DOF_JOINT_ANGULAR_DAMPING" value="8" enum="G6DOFJointAxisParam"> - The amount of rotational damping accross the axes. The lower, the more dampening occurs. + The amount of rotational damping across the axes. The lower, the more dampening occurs. </constant> <constant name="G6DOF_JOINT_ANGULAR_RESTITUTION" value="9" enum="G6DOFJointAxisParam"> - The amount of rotational restitution accross the axes. The lower, the more restitution occurs. + The amount of rotational restitution across the axes. The lower, the more restitution occurs. </constant> <constant name="G6DOF_JOINT_ANGULAR_FORCE_LIMIT" value="10" enum="G6DOFJointAxisParam"> - The maximum amount of force that can occur, when rotating arround the axes. + The maximum amount of force that can occur, when rotating around the axes. </constant> <constant name="G6DOF_JOINT_ANGULAR_ERP" value="11" enum="G6DOFJointAxisParam"> - When correcting the crossing of limits in rotation accross the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. + When correcting the crossing of limits in rotation across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower. </constant> <constant name="G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY" value="12" enum="G6DOFJointAxisParam"> Target speed for the motor at the axes. diff --git a/doc/classes/PhysicsShapeQueryParameters.xml b/doc/classes/PhysicsShapeQueryParameters.xml index 98d6846b13..3f68136285 100644 --- a/doc/classes/PhysicsShapeQueryParameters.xml +++ b/doc/classes/PhysicsShapeQueryParameters.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsShapeQueryParameters" inherits="Reference" category="Core" version="3.0-beta"> +<class name="PhysicsShapeQueryParameters" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,60 +9,6 @@ <demos> </demos> <methods> - <method name="get_collision_mask" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_exclude" qualifiers="const"> - <return type="Array"> - </return> - <description> - </description> - </method> - <method name="get_margin" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="get_shape_rid" qualifiers="const"> - <return type="RID"> - </return> - <description> - </description> - </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform"> - </return> - <description> - </description> - </method> - <method name="set_collision_mask"> - <return type="void"> - </return> - <argument index="0" name="collision_mask" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_exclude"> - <return type="void"> - </return> - <argument index="0" name="exclude" type="Array"> - </argument> - <description> - </description> - </method> - <method name="set_margin"> - <return type="void"> - </return> - <argument index="0" name="margin" type="float"> - </argument> - <description> - </description> - </method> <method name="set_shape"> <return type="void"> </return> @@ -71,23 +17,19 @@ <description> </description> </method> - <method name="set_shape_rid"> - <return type="void"> - </return> - <argument index="0" name="shape" type="RID"> - </argument> - <description> - </description> - </method> - <method name="set_transform"> - <return type="void"> - </return> - <argument index="0" name="transform" type="Transform"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask"> + </member> + <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude"> + </member> + <member name="margin" type="float" setter="set_margin" getter="get_margin"> + </member> + <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid"> + </member> + <member name="transform" type="Transform" setter="set_transform" getter="get_transform"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/PhysicsShapeQueryResult.xml b/doc/classes/PhysicsShapeQueryResult.xml index d18d09b612..109074c35c 100644 --- a/doc/classes/PhysicsShapeQueryResult.xml +++ b/doc/classes/PhysicsShapeQueryResult.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PhysicsShapeQueryResult" inherits="Reference" category="Core" version="3.0-beta"> +<class name="PhysicsShapeQueryResult" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Result of a shape query in Physics2DServer. </brief_description> diff --git a/doc/classes/PinJoint.xml b/doc/classes/PinJoint.xml index 46e3d3c512..a8cc0ad9b3 100644 --- a/doc/classes/PinJoint.xml +++ b/doc/classes/PinJoint.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PinJoint" inherits="Joint" category="Core" version="3.0-beta"> +<class name="PinJoint" inherits="Joint" category="Core" version="3.0-stable"> <brief_description> Pin Joint for 3D Shapes. </brief_description> @@ -14,11 +14,11 @@ </methods> <members> <member name="params/bias" type="float" setter="set_param" getter="get_param"> - The force with wich the pinned objects stay in positional relation to each other. + The force with which the pinned objects stay in positional relation to each other. The higher, the stronger. </member> <member name="params/damping" type="float" setter="set_param" getter="get_param"> - The force with wich the pinned objects stay in velocity relation to each other. + The force with which the pinned objects stay in velocity relation to each other. The higher, the stronger. </member> <member name="params/impulse_clamp" type="float" setter="set_param" getter="get_param"> @@ -27,11 +27,11 @@ </members> <constants> <constant name="PARAM_BIAS" value="0" enum="Param"> - The force with wich the pinned objects stay in positional relation to each other. + The force with which the pinned objects stay in positional relation to each other. The higher, the stronger. </constant> <constant name="PARAM_DAMPING" value="1" enum="Param"> - The force with wich the pinned objects stay in velocity relation to each other. + The force with which the pinned objects stay in velocity relation to each other. The higher, the stronger. </constant> <constant name="PARAM_IMPULSE_CLAMP" value="2" enum="Param"> diff --git a/doc/classes/PinJoint2D.xml b/doc/classes/PinJoint2D.xml index c8a886896e..08fb849523 100644 --- a/doc/classes/PinJoint2D.xml +++ b/doc/classes/PinJoint2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PinJoint2D" inherits="Joint2D" category="Core" version="3.0-beta"> +<class name="PinJoint2D" inherits="Joint2D" category="Core" version="3.0-stable"> <brief_description> Pin Joint for 2D Shapes. </brief_description> diff --git a/doc/classes/Plane.xml b/doc/classes/Plane.xml index c895850a64..b1984ec03f 100644 --- a/doc/classes/Plane.xml +++ b/doc/classes/Plane.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Plane" category="Built-In Types" version="3.0-beta"> +<class name="Plane" category="Built-In Types" version="3.0-stable"> <brief_description> Plane in hessian form. </brief_description> @@ -7,6 +7,7 @@ Plane represents a normalized plane equation. Basically, "normal" is the normal of the plane (a,b,c normalized), and "d" is the distance from the origin to the plane (in the direction of "normal"). "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/math/index.html </tutorials> <demos> </demos> diff --git a/doc/classes/PlaneMesh.xml b/doc/classes/PlaneMesh.xml index 760d64d2de..cd97d5c6eb 100644 --- a/doc/classes/PlaneMesh.xml +++ b/doc/classes/PlaneMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PlaneMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="PlaneMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Class representing a planar [PrimitiveMesh]. </brief_description> diff --git a/doc/classes/PlaneShape.xml b/doc/classes/PlaneShape.xml index b3adf61d68..5912a2a91b 100644 --- a/doc/classes/PlaneShape.xml +++ b/doc/classes/PlaneShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PlaneShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="PlaneShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml index f69010458e..8c68c06e65 100644 --- a/doc/classes/Polygon2D.xml +++ b/doc/classes/Polygon2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Polygon2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Polygon2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> A 2D polygon. </brief_description> @@ -11,22 +11,6 @@ <demos> </demos> <methods> - <method name="get_texture_rotation" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the rotation in radians of the texture polygon. - </description> - </method> - <method name="set_texture_rotation"> - <return type="void"> - </return> - <argument index="0" name="texture_rotation" type="float"> - </argument> - <description> - Set the amount of rotation of the polygon texture, [code]texture_rotation[/code] is specified in radians and clockwise rotation. - </description> - </method> </methods> <members> <member name="antialiased" type="bool" setter="set_antialiased" getter="get_antialiased"> @@ -54,6 +38,9 @@ Amount to offset the polygon's [code]texture[/code]. If [code](0, 0)[/code] the texture's origin (its top-left corner) will be placed at the polygon's [code]position[/code]. </member> <member name="texture_rotation" type="float" setter="set_texture_rotation_degrees" getter="get_texture_rotation_degrees"> + The texture's rotation in radians. + </member> + <member name="texture_rotation_degrees" type="float" setter="set_texture_rotation_degrees" getter="get_texture_rotation_degrees"> The texture's rotation in degrees. </member> <member name="texture_scale" type="Vector2" setter="set_texture_scale" getter="get_texture_scale"> diff --git a/doc/classes/PolygonPathFinder.xml b/doc/classes/PolygonPathFinder.xml index 48c5625e6b..cea33fa5c8 100644 --- a/doc/classes/PolygonPathFinder.xml +++ b/doc/classes/PolygonPathFinder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PolygonPathFinder" inherits="Resource" category="Core" version="3.0-beta"> +<class name="PolygonPathFinder" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/PoolByteArray.xml b/doc/classes/PoolByteArray.xml index 653ea958a3..5e80072d46 100644 --- a/doc/classes/PoolByteArray.xml +++ b/doc/classes/PoolByteArray.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolByteArray" category="Built-In Types" version="3.0-beta"> +<class name="PoolByteArray" category="Built-In Types" version="3.0-stable"> <brief_description> Raw byte array. </brief_description> diff --git a/doc/classes/PoolColorArray.xml b/doc/classes/PoolColorArray.xml index 04267e0935..47fb38f440 100644 --- a/doc/classes/PoolColorArray.xml +++ b/doc/classes/PoolColorArray.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolColorArray" category="Built-In Types" version="3.0-beta"> +<class name="PoolColorArray" category="Built-In Types" version="3.0-stable"> <brief_description> Array of Colors </brief_description> diff --git a/doc/classes/PoolIntArray.xml b/doc/classes/PoolIntArray.xml index 0baf194b52..c24d565db8 100644 --- a/doc/classes/PoolIntArray.xml +++ b/doc/classes/PoolIntArray.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolIntArray" category="Built-In Types" version="3.0-beta"> +<class name="PoolIntArray" category="Built-In Types" version="3.0-stable"> <brief_description> Integer Array. </brief_description> diff --git a/doc/classes/PoolRealArray.xml b/doc/classes/PoolRealArray.xml index 0a6c855647..49f4ed85d2 100644 --- a/doc/classes/PoolRealArray.xml +++ b/doc/classes/PoolRealArray.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolRealArray" category="Built-In Types" version="3.0-beta"> +<class name="PoolRealArray" category="Built-In Types" version="3.0-stable"> <brief_description> Real Array. </brief_description> diff --git a/doc/classes/PoolStringArray.xml b/doc/classes/PoolStringArray.xml index 37842c1c85..bc273e2fb6 100644 --- a/doc/classes/PoolStringArray.xml +++ b/doc/classes/PoolStringArray.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolStringArray" category="Built-In Types" version="3.0-beta"> +<class name="PoolStringArray" category="Built-In Types" version="3.0-stable"> <brief_description> String Array. </brief_description> diff --git a/doc/classes/PoolVector2Array.xml b/doc/classes/PoolVector2Array.xml index a98f3d6d7e..d08cfbba33 100644 --- a/doc/classes/PoolVector2Array.xml +++ b/doc/classes/PoolVector2Array.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolVector2Array" category="Built-In Types" version="3.0-beta"> +<class name="PoolVector2Array" category="Built-In Types" version="3.0-stable"> <brief_description> An Array of Vector2. </brief_description> diff --git a/doc/classes/PoolVector3Array.xml b/doc/classes/PoolVector3Array.xml index f3b3274e47..99d5929ded 100644 --- a/doc/classes/PoolVector3Array.xml +++ b/doc/classes/PoolVector3Array.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PoolVector3Array" category="Built-In Types" version="3.0-beta"> +<class name="PoolVector3Array" category="Built-In Types" version="3.0-stable"> <brief_description> An Array of Vector3. </brief_description> diff --git a/doc/classes/Popup.xml b/doc/classes/Popup.xml index 930e646dee..0e6d6c844d 100644 --- a/doc/classes/Popup.xml +++ b/doc/classes/Popup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Popup" inherits="Control" category="Core" version="3.0-beta"> +<class name="Popup" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Base container control for popups and dialogs. </brief_description> diff --git a/doc/classes/PopupDialog.xml b/doc/classes/PopupDialog.xml index 15df0e4ad2..b47674b588 100644 --- a/doc/classes/PopupDialog.xml +++ b/doc/classes/PopupDialog.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PopupDialog" inherits="Popup" category="Core" version="3.0-beta"> +<class name="PopupDialog" inherits="Popup" category="Core" version="3.0-stable"> <brief_description> Base class for Popup Dialogs. </brief_description> diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml index 13cf16d2ee..2ffdc07e1f 100644 --- a/doc/classes/PopupMenu.xml +++ b/doc/classes/PopupMenu.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PopupMenu" inherits="Popup" category="Core" version="3.0-beta"> +<class name="PopupMenu" inherits="Popup" category="Core" version="3.0-stable"> <brief_description> PopupMenu displays a list of options. </brief_description> @@ -233,12 +233,6 @@ <description> </description> </method> - <method name="is_hide_on_state_item_selection" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="is_item_checkable" qualifiers="const"> <return type="bool"> </return> @@ -272,7 +266,7 @@ <argument index="0" name="idx" type="int"> </argument> <description> - Return whether the item is a seperator. If it is, it would be displayed as a line. + Return whether the item is a separator. If it is, it would be displayed as a line. </description> </method> <method name="remove_item"> @@ -284,14 +278,6 @@ Removes the item at index "idx" from the menu. Note that the indexes of items after the removed item are going to be shifted by one. </description> </method> - <method name="set_hide_on_state_item_selection"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> <method name="set_item_accelerator"> <return type="void"> </return> @@ -322,7 +308,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> - Mark the item at index "idx" as a seperator, which means that it would be displayed as a mere line. + Mark the item at index "idx" as a separator, which means that it would be displayed as a mere line. </description> </method> <method name="set_item_checked"> @@ -455,6 +441,8 @@ </member> <member name="hide_on_item_selection" type="bool" setter="set_hide_on_item_selection" getter="is_hide_on_item_selection"> </member> + <member name="hide_on_state_item_selection" type="bool" setter="set_hide_on_state_item_selection" getter="is_hide_on_state_item_selection"> + </member> </members> <signals> <signal name="id_pressed"> diff --git a/doc/classes/PopupPanel.xml b/doc/classes/PopupPanel.xml index 179f91e74b..0de5319f59 100644 --- a/doc/classes/PopupPanel.xml +++ b/doc/classes/PopupPanel.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PopupPanel" inherits="Popup" category="Core" version="3.0-beta"> +<class name="PopupPanel" inherits="Popup" category="Core" version="3.0-stable"> <brief_description> Class for displaying popups with a panel background. </brief_description> diff --git a/doc/classes/Position2D.xml b/doc/classes/Position2D.xml index d222a5dc04..d06d9220a7 100644 --- a/doc/classes/Position2D.xml +++ b/doc/classes/Position2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Position2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Position2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Generic 2D Position hint for editing. </brief_description> diff --git a/doc/classes/Position3D.xml b/doc/classes/Position3D.xml index a5b8a119ff..5f3aa004dc 100644 --- a/doc/classes/Position3D.xml +++ b/doc/classes/Position3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Position3D" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Position3D" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Generic 3D Position hint for editing </brief_description> diff --git a/doc/classes/PrimitiveMesh.xml b/doc/classes/PrimitiveMesh.xml index e8ad23524f..7f0ee9ce37 100644 --- a/doc/classes/PrimitiveMesh.xml +++ b/doc/classes/PrimitiveMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PrimitiveMesh" inherits="Mesh" category="Core" version="3.0-beta"> +<class name="PrimitiveMesh" inherits="Mesh" category="Core" version="3.0-stable"> <brief_description> Base class for all primitive meshes. Handles applying a [Material] to a primitive mesh. </brief_description> diff --git a/doc/classes/PrismMesh.xml b/doc/classes/PrismMesh.xml index 38bb3a4eb6..389acc9320 100644 --- a/doc/classes/PrismMesh.xml +++ b/doc/classes/PrismMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PrismMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="PrismMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Class representing a prism-shaped [PrimitiveMesh]. </brief_description> diff --git a/doc/classes/ProceduralSky.xml b/doc/classes/ProceduralSky.xml index 2abd1104ce..9d7e590fa3 100644 --- a/doc/classes/ProceduralSky.xml +++ b/doc/classes/ProceduralSky.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ProceduralSky" inherits="Sky" category="Core" version="3.0-beta"> +<class name="ProceduralSky" inherits="Sky" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/ProgressBar.xml b/doc/classes/ProgressBar.xml index 7417ddb53e..321f27008d 100644 --- a/doc/classes/ProgressBar.xml +++ b/doc/classes/ProgressBar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ProgressBar" inherits="Range" category="Core" version="3.0-beta"> +<class name="ProgressBar" inherits="Range" category="Core" version="3.0-stable"> <brief_description> General purpose progress bar. </brief_description> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index e28860a577..7d0856127c 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ProjectSettings" inherits="Object" category="Core" version="3.0-beta"> +<class name="ProjectSettings" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Contains global variables accessible from everywhere. </brief_description> <description> - Contains global variables accessible from everywhere. Use the normal [Object] API, such as "ProjectSettings.get(variable)", "ProjectSettings.set(variable,value)" or "ProjectSettings.has(variable)" to access them. Variables stored in project.godot are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options. + Contains global variables accessible from everywhere. Use "ProjectSettings.get_setting(variable)", "ProjectSettings.set_setting(variable,value)" or "ProjectSettings.has_setting(variable)" to access them. Variables stored in project.godot are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options. </description> <tutorials> </tutorials> diff --git a/doc/classes/ProximityGroup.xml b/doc/classes/ProximityGroup.xml index 42e2c5e690..b4a424dfdd 100644 --- a/doc/classes/ProximityGroup.xml +++ b/doc/classes/ProximityGroup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ProximityGroup" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="ProximityGroup" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> General purpose proximity-detection node. </brief_description> @@ -21,30 +21,18 @@ <description> </description> </method> - <method name="set_dispatch_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int"> - </argument> - <description> - </description> - </method> - <method name="set_group_name"> - <return type="void"> - </return> - <argument index="0" name="name" type="String"> - </argument> - <description> - </description> - </method> </methods> <members> + <member name="dispatch_mode" type="int" setter="set_dispatch_mode" getter="get_dispatch_mode" enum="ProximityGroup.DispatchMode"> + </member> <member name="grid_radius" type="Vector3" setter="set_grid_radius" getter="get_grid_radius"> </member> + <member name="group_name" type="String" setter="set_group_name" getter="get_group_name"> + </member> </members> <signals> <signal name="broadcast"> - <argument index="0" name="name" type="String"> + <argument index="0" name="group_name" type="String"> </argument> <argument index="1" name="parameters" type="Array"> </argument> @@ -53,5 +41,9 @@ </signal> </signals> <constants> + <constant name="MODE_PROXY" value="0" enum="DispatchMode"> + </constant> + <constant name="MODE_SIGNAL" value="1" enum="DispatchMode"> + </constant> </constants> </class> diff --git a/doc/classes/ProxyTexture.xml b/doc/classes/ProxyTexture.xml index 2cdcac8775..68f03ca4fa 100644 --- a/doc/classes/ProxyTexture.xml +++ b/doc/classes/ProxyTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ProxyTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="ProxyTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/QuadMesh.xml b/doc/classes/QuadMesh.xml index 78884d5492..f1b38d379a 100644 --- a/doc/classes/QuadMesh.xml +++ b/doc/classes/QuadMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="QuadMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="QuadMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Class representing a square mesh. </brief_description> diff --git a/doc/classes/Quat.xml b/doc/classes/Quat.xml index 9fab28c6c8..ead73d0267 100644 --- a/doc/classes/Quat.xml +++ b/doc/classes/Quat.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Quat" category="Built-In Types" version="3.0-beta"> +<class name="Quat" category="Built-In Types" version="3.0-stable"> <brief_description> Quaternion. </brief_description> diff --git a/doc/classes/RID.xml b/doc/classes/RID.xml index 0796e654c1..1510d75679 100644 --- a/doc/classes/RID.xml +++ b/doc/classes/RID.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RID" category="Built-In Types" version="3.0-beta"> +<class name="RID" category="Built-In Types" version="3.0-stable"> <brief_description> Handle for a [Resource]'s unique ID. </brief_description> diff --git a/doc/classes/Range.xml b/doc/classes/Range.xml index d86ff57661..8a0c831805 100644 --- a/doc/classes/Range.xml +++ b/doc/classes/Range.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Range" inherits="Control" category="Core" version="3.0-beta"> +<class name="Range" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Abstract base class for range-based controls. </brief_description> @@ -11,22 +11,6 @@ <demos> </demos> <methods> - <method name="get_as_ratio" qualifiers="const"> - <return type="float"> - </return> - <description> - Return value mapped to 0 to 1 range. - </description> - </method> - <method name="set_as_ratio"> - <return type="void"> - </return> - <argument index="0" name="value" type="float"> - </argument> - <description> - Set value mapped to 0 to 1 (unit) range, it will then be converted to the actual value within min and max. - </description> - </method> <method name="share"> <return type="void"> </return> @@ -57,6 +41,9 @@ <member name="page" type="float" setter="set_page" getter="get_page"> Page size. Used mainly for [ScrollBar]. ScrollBar's length is its size multiplied by [code]page[/code] over the difference between [code]min_value[/code] and [code]max_value[/code]. </member> + <member name="ratio" type="float" setter="set_as_ratio" getter="get_as_ratio"> + The value mapped between 0 and 1. + </member> <member name="rounded" type="bool" setter="set_use_rounded_values" getter="is_using_rounded_values"> If [code]true[/code], [code]value[/code] will always be rounded to the nearest integer. </member> diff --git a/doc/classes/RayCast.xml b/doc/classes/RayCast.xml index 20e262b664..09e0f8b643 100644 --- a/doc/classes/RayCast.xml +++ b/doc/classes/RayCast.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RayCast" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="RayCast" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Query the closest object intersecting a ray. </brief_description> diff --git a/doc/classes/RayCast2D.xml b/doc/classes/RayCast2D.xml index 4e93260549..b76c880bb7 100644 --- a/doc/classes/RayCast2D.xml +++ b/doc/classes/RayCast2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RayCast2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="RayCast2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Query the closest object intersecting a ray. </brief_description> @@ -76,6 +76,7 @@ <argument index="0" name="bit" type="int"> </argument> <description> + Return an individual bit on the collision mask. </description> </method> <method name="get_collision_normal" qualifiers="const"> @@ -125,6 +126,7 @@ <argument index="1" name="value" type="bool"> </argument> <description> + Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier. </description> </method> </methods> diff --git a/doc/classes/RayShape.xml b/doc/classes/RayShape.xml index 94129dbafe..6d83ed2903 100644 --- a/doc/classes/RayShape.xml +++ b/doc/classes/RayShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RayShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="RayShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> Ray shape for 3D collisions. </brief_description> diff --git a/doc/classes/RayShape2D.xml b/doc/classes/RayShape2D.xml index 748f5ea8b1..ce004b582b 100644 --- a/doc/classes/RayShape2D.xml +++ b/doc/classes/RayShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RayShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="RayShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Ray shape for 2D collisions. </brief_description> diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml index 4fc9e5bd71..6d953d2615 100644 --- a/doc/classes/Rect2.xml +++ b/doc/classes/Rect2.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Rect2" category="Built-In Types" version="3.0-beta"> +<class name="Rect2" category="Built-In Types" version="3.0-stable"> <brief_description> 2D Axis-aligned bounding box. </brief_description> @@ -7,6 +7,7 @@ Rect2 consists of a position, a size, and several utility functions. It is typically used for fast overlap tests. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/math/index.html </tutorials> <demos> </demos> diff --git a/doc/classes/RectangleShape2D.xml b/doc/classes/RectangleShape2D.xml index 13994edddf..4ecd0aadf4 100644 --- a/doc/classes/RectangleShape2D.xml +++ b/doc/classes/RectangleShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RectangleShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="RectangleShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Rectangle shape for 2D collisions. </brief_description> diff --git a/doc/classes/Reference.xml b/doc/classes/Reference.xml index ec05b43bb0..ba769db5e7 100644 --- a/doc/classes/Reference.xml +++ b/doc/classes/Reference.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Reference" inherits="Object" category="Core" version="3.0-beta"> +<class name="Reference" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Base class for anything that keeps a reference count. </brief_description> diff --git a/doc/classes/ReferenceRect.xml b/doc/classes/ReferenceRect.xml index a0f56e078e..2a13eb3312 100644 --- a/doc/classes/ReferenceRect.xml +++ b/doc/classes/ReferenceRect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ReferenceRect" inherits="Control" category="Core" version="3.0-beta"> +<class name="ReferenceRect" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Reference frame for GUI. </brief_description> diff --git a/doc/classes/ReflectionProbe.xml b/doc/classes/ReflectionProbe.xml index 21bd087407..5db9f32486 100644 --- a/doc/classes/ReflectionProbe.xml +++ b/doc/classes/ReflectionProbe.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ReflectionProbe" inherits="VisualInstance" category="Core" version="3.0-beta"> +<class name="ReflectionProbe" inherits="VisualInstance" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/reflection_probes.html </tutorials> <demos> </demos> diff --git a/doc/classes/RemoteTransform.xml b/doc/classes/RemoteTransform.xml index c5643409ce..e9b8d2b746 100644 --- a/doc/classes/RemoteTransform.xml +++ b/doc/classes/RemoteTransform.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RemoteTransform" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="RemoteTransform" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> RemoteTransform leads the [Transform] of another [Spatial] derived Node in the scene. </brief_description> diff --git a/doc/classes/RemoteTransform2D.xml b/doc/classes/RemoteTransform2D.xml index 77308209ea..c6022fd1ff 100644 --- a/doc/classes/RemoteTransform2D.xml +++ b/doc/classes/RemoteTransform2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RemoteTransform2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="RemoteTransform2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> RemoteTransform2D leads the [Transform2D] of another [CanvasItem] derived Node in the scene. </brief_description> diff --git a/doc/classes/Resource.xml b/doc/classes/Resource.xml index 713fcab573..8113d81fbb 100644 --- a/doc/classes/Resource.xml +++ b/doc/classes/Resource.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Resource" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Resource" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Base class for all resources. </brief_description> diff --git a/doc/classes/ResourceImporter.xml b/doc/classes/ResourceImporter.xml index 5474f09a7c..c68bdd613c 100644 --- a/doc/classes/ResourceImporter.xml +++ b/doc/classes/ResourceImporter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceImporter" inherits="Reference" category="Core" version="3.0-beta"> +<class name="ResourceImporter" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/ResourceInteractiveLoader.xml b/doc/classes/ResourceInteractiveLoader.xml index 13d701f3c6..8a8023c8ec 100644 --- a/doc/classes/ResourceInteractiveLoader.xml +++ b/doc/classes/ResourceInteractiveLoader.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceInteractiveLoader" inherits="Reference" category="Core" version="3.0-beta"> +<class name="ResourceInteractiveLoader" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Interactive Resource Loader. </brief_description> diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml index 8d1ab1cd80..d4f61b7929 100644 --- a/doc/classes/ResourceLoader.xml +++ b/doc/classes/ResourceLoader.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceLoader" inherits="Object" category="Core" version="3.0-beta"> +<class name="ResourceLoader" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Resource Loader. </brief_description> diff --git a/doc/classes/ResourcePreloader.xml b/doc/classes/ResourcePreloader.xml index c749529a19..868ca62963 100644 --- a/doc/classes/ResourcePreloader.xml +++ b/doc/classes/ResourcePreloader.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourcePreloader" inherits="Node" category="Core" version="3.0-beta"> +<class name="ResourcePreloader" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Resource Preloader Node. </brief_description> diff --git a/doc/classes/ResourceSaver.xml b/doc/classes/ResourceSaver.xml index c1a5921071..f4abe9f770 100644 --- a/doc/classes/ResourceSaver.xml +++ b/doc/classes/ResourceSaver.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceSaver" inherits="Object" category="Core" version="3.0-beta"> +<class name="ResourceSaver" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Resource Saving Interface. </brief_description> diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml index 5c04d3406e..24ae94d6db 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RichTextLabel" inherits="Control" category="Core" version="3.0-beta"> +<class name="RichTextLabel" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Label that displays rich text. </brief_description> @@ -8,6 +8,7 @@ Note that assignments to [member bbcode_text] clear the tag stack and reconstruct it from the property's contents. Any edits made to [member bbcode_text] will erase previous edits made from other manual sources such as [method append_bbcode] and the [code]push_*[/code] / [method pop] methods. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/gui/bbcode_in_richtextlabel.html </tutorials> <demos> </demos> @@ -53,20 +54,6 @@ Returns the total number of newlines in the tag stack's text tags. Considers wrapped text as one line. </description> </method> - <method name="get_tab_size" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the number of spaces associated with a single tab length. Does not affect "\t" in text tags, only indent tags. - </description> - </method> - <method name="get_text"> - <return type="String"> - </return> - <description> - Returns the raw content of [member bbcode_text]. - </description> - </method> <method name="get_total_character_count" qualifiers="const"> <return type="int"> </return> @@ -88,34 +75,6 @@ Returns the number of visible lines. </description> </method> - <method name="is_meta_underlined" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the label underlines meta tags such as [url]{text}[/url]. - </description> - </method> - <method name="is_scroll_active" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the scrollbar is visible. Does not block scrolling completely. See [method scroll_to_line]. - </description> - </method> - <method name="is_scroll_following" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the window scrolls down to display new content automatically. - </description> - </method> - <method name="is_selection_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the label allows text selection. - </description> - </method> <method name="newline"> <return type="void"> </return> @@ -234,51 +193,6 @@ Scrolls the window's top line to match [code]line[/code]. </description> </method> - <method name="set_meta_underline"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If [code]true[/code] will underline meta tags such as the [url] bbcode. Default value: [code]true[/code]. - </description> - </method> - <method name="set_scroll_active"> - <return type="void"> - </return> - <argument index="0" name="active" type="bool"> - </argument> - <description> - If [code]false[/code] the vertical scrollbar is hidden. Default value: [code]true[/code]. - </description> - </method> - <method name="set_scroll_follow"> - <return type="void"> - </return> - <argument index="0" name="follow" type="bool"> - </argument> - <description> - If [code]true[/code] the window scrolls to reveal new content. Default value: [code]false[/code]. - </description> - </method> - <method name="set_selection_enabled"> - <return type="void"> - </return> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - If [code]true[/code] text can be selected. - </description> - </method> - <method name="set_tab_size"> - <return type="void"> - </return> - <argument index="0" name="spaces" type="int"> - </argument> - <description> - Sets the current tab length in spaces. Use with [method push_indent] to redefine indent length. - </description> - </method> <method name="set_table_column_expand"> <return type="void"> </return> @@ -294,15 +208,6 @@ Columns with a [code]false[/code] expand will not contribute to the total ratio. </description> </method> - <method name="set_text"> - <return type="void"> - </return> - <argument index="0" name="text" type="String"> - </argument> - <description> - Clears the tag stack and adds a raw text tag to the top of it. Does not parse bbcodes. Does not modify [member bbcode_text]. - </description> - </method> </methods> <members> <member name="bbcode_enabled" type="bool" setter="set_use_bbcode" getter="is_using_bbcode"> @@ -311,12 +216,31 @@ <member name="bbcode_text" type="String" setter="set_bbcode" getter="get_bbcode"> 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. </member> + <member name="meta_underlined" type="bool" setter="set_meta_underline" getter="is_meta_underlined"> + If [code]true[/code], the label underlines meta tags such as [url]{text}[/url]. Default value: [code]true[/code]. + </member> <member name="override_selected_font_color" type="bool" setter="set_override_selected_font_color" getter="is_overriding_selected_font_color"> If [code]true[/code] the label uses the custom font color. Default value: [code]false[/code]. </member> <member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible"> The text's visibility, as a [float] between 0.0 and 1.0. </member> + <member name="scroll_active" type="bool" setter="set_scroll_active" getter="is_scroll_active"> + If [code]true[/code], the scrollbar is visible. Does not block scrolling completely. See [method scroll_to_line]. Default value: [code]true[/code]. + </member> + <member name="scroll_following" type="bool" setter="set_scroll_follow" getter="is_scroll_following"> + If [code]true[/code], the window scrolls down to display new content automatically. Default value: [code]false[/code]. + </member> + <member name="selection_enabled" type="bool" setter="set_selection_enabled" getter="is_selection_enabled"> + If [code]true[/code], the label allows text selection. + </member> + <member name="tab_size" type="int" setter="set_tab_size" getter="get_tab_size"> + The number of spaces associated with a single tab length. Does not affect "\t" in text tags, only indent tags. + </member> + <member name="text" type="String" setter="set_text" getter="get_text"> + The raw text of the label. + When set, clears the tag stack and adds a raw text tag to the top of it. Does not parse bbcodes. Does not modify [member bbcode_text]. + </member> <member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters"> The restricted number of characters to display in the label. </member> diff --git a/doc/classes/RigidBody.xml b/doc/classes/RigidBody.xml index 3c54f29c15..ad5da50dd6 100644 --- a/doc/classes/RigidBody.xml +++ b/doc/classes/RigidBody.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RigidBody" inherits="PhysicsBody" category="Core" version="3.0-beta"> +<class name="RigidBody" inherits="PhysicsBody" category="Core" version="3.0-stable"> <brief_description> Physics Body whose position is determined through physics simulation in 3D space. </brief_description> @@ -11,6 +11,7 @@ As a warning, don't change RigidBody's position every frame or very often. Sporadic changes work fine, but physics runs at a different granularity (fixed hz) than usual rendering (process callback) and maybe even in a separate thread, so changing this from a process loop will yield strange behavior. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> @@ -32,14 +33,14 @@ <argument index="1" name="impulse" type="Vector3"> </argument> <description> - Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates. + Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the position are in global coordinates, and the position is relative to the object's origin. </description> </method> <method name="get_colliding_bodies" qualifiers="const"> <return type="Array"> </return> <description> - Return a list of the bodies colliding with this one. By default, number of max contacts reported is at 0 , see [method set_max_contacts_reported] to increase it. + Return a list of the bodies colliding with this one. By default, number of max contacts reported is at 0 , see [method set_max_contacts_reported] to increase it. Note that the result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead. </description> </method> <method name="set_axis_velocity"> diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml index c11e118df5..67ae92c664 100644 --- a/doc/classes/RigidBody2D.xml +++ b/doc/classes/RigidBody2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RigidBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-beta"> +<class name="RigidBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-stable"> <brief_description> A body that is controlled by the 2D physics engine. </brief_description> @@ -49,50 +49,11 @@ Applies a positioned impulse to the body (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied instantaneously. Both the impulse and the offset from the body origin are in global coordinates. </description> </method> - <method name="get_applied_force" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Returns the body's total applied force. - </description> - </method> - <method name="get_applied_torque" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the body's total applied torque. - </description> - </method> <method name="get_colliding_bodies" qualifiers="const"> <return type="Array"> </return> <description> - Returns a list of the bodies colliding with this one. Use [member contacts_reported] to set the maximum number reported. You must also set [member contact_monitor] to [code]true[/code]. - </description> - </method> - <method name="get_inertia" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the body's moment of inertia, which is computed automatically from the body's mass and assigned [Shape2D]s during the physics frame. Note that it will not yet have a value in the [code]_ready()[/code] function. - </description> - </method> - <method name="set_applied_force"> - <return type="void"> - </return> - <argument index="0" name="force" type="Vector2"> - </argument> - <description> - Sets the applied force vector. This is the equivalent of firing a rocket: the force is applied constantly. - </description> - </method> - <method name="set_applied_torque"> - <return type="void"> - </return> - <argument index="0" name="torque" type="float"> - </argument> - <description> - Sets the applied torque. + Returns a list of the bodies colliding with this one. Use [member contacts_reported] to set the maximum number reported. You must also set [member contact_monitor] to [code]true[/code]. Note that the result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead. </description> </method> <method name="set_axis_velocity"> @@ -104,15 +65,6 @@ Sets the body's velocity on the given axis. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. </description> </method> - <method name="set_inertia"> - <return type="void"> - </return> - <argument index="0" name="inertia" type="float"> - </argument> - <description> - Set the body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this function allows you to set a custom value. Set 0 (or negative) inertia to return to automatically computing it. - </description> - </method> <method name="test_motion"> <return type="bool"> </return> @@ -134,6 +86,12 @@ <member name="angular_velocity" type="float" setter="set_angular_velocity" getter="get_angular_velocity"> The body's rotational velocity. </member> + <member name="applied_force" type="Vector2" setter="set_applied_force" getter="get_applied_force"> + The body's total applied force. + </member> + <member name="applied_torque" type="float" setter="set_applied_torque" getter="get_applied_torque"> + The body's total applied torque. + </member> <member name="bounce" type="float" setter="set_bounce" getter="get_bounce"> The body's bounciness. Default value: [code]0[/code]. </member> @@ -159,6 +117,9 @@ <member name="gravity_scale" type="float" setter="set_gravity_scale" getter="get_gravity_scale"> Multiplies the gravity applied to the body. The body's gravity is calculated from the "Default Gravity" value in "Project > Project Settings > Physics > 2d" and/or any additional gravity vector applied by [Area2D]s. Default value: [code]1[/code]. </member> + <member name="inertia" type="float" setter="set_inertia" getter="get_inertia"> + The body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this function allows you to set a custom value. Set 0 (or negative) inertia to return to automatically computing it. + </member> <member name="linear_damp" type="float" setter="set_linear_damp" getter="get_linear_damp"> Damps the body's [member linear_velocity]. If [code]-1[/code] the body will use the "Default Linear Damp" in "Project > Project Settings > Physics > 2d". Default value: [code]-1[/code]. </member> diff --git a/doc/classes/SceneState.xml b/doc/classes/SceneState.xml index f5cf2dbee4..6fec02c392 100644 --- a/doc/classes/SceneState.xml +++ b/doc/classes/SceneState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SceneState" inherits="Reference" category="Core" version="3.0-beta"> +<class name="SceneState" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> A script interface to a scene file's data. </brief_description> diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index a78fe03cab..0fe220ae48 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -1,10 +1,12 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SceneTree" inherits="MainLoop" category="Core" version="3.0-beta"> +<class name="SceneTree" inherits="MainLoop" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> </description> <tutorials> + http://docs.godotengine.org/en/3.0/getting_started/step_by_step/scene_tree.html + http://docs.godotengine.org/en/3.0/tutorials/viewports/multiple_resolutions.html </tutorials> <demos> </demos> @@ -57,18 +59,6 @@ <description> </description> </method> - <method name="get_current_scene" qualifiers="const"> - <return type="Node"> - </return> - <description> - </description> - </method> - <method name="get_edited_scene_root" qualifiers="const"> - <return type="Node"> - </return> - <description> - </description> - </method> <method name="get_frame" qualifiers="const"> <return type="int"> </return> @@ -101,12 +91,6 @@ <description> </description> </method> - <method name="get_root" qualifiers="const"> - <return type="Viewport"> - </return> - <description> - </description> - </method> <method name="get_rpc_sender_id" qualifiers="const"> <return type="int"> </return> @@ -128,18 +112,6 @@ Returns true if there is a [NetworkedMultiplayerPeer] set (with [method SceneTree.set_network_peer]). </description> </method> - <method name="is_debugging_collisions_hint" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="is_debugging_navigation_hint" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="is_input_handled"> <return type="bool"> </return> @@ -153,24 +125,6 @@ Returns true if this SceneTree's [NetworkedMultiplayerPeer] is in server mode (listening for connections). </description> </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="is_refusing_new_network_connections" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="is_using_font_oversampling" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="notify_group"> <return type="void"> </return> @@ -221,38 +175,6 @@ <description> </description> </method> - <method name="set_current_scene"> - <return type="void"> - </return> - <argument index="0" name="child_node" type="Node"> - </argument> - <description> - </description> - </method> - <method name="set_debug_collisions_hint"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_debug_navigation_hint"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_edited_scene_root"> - <return type="void"> - </return> - <argument index="0" name="scene" type="Node"> - </argument> - <description> - </description> - </method> <method name="set_group"> <return type="void"> </return> @@ -285,27 +207,10 @@ <description> </description> </method> - <method name="set_network_peer"> - <return type="void"> - </return> - <argument index="0" name="peer" type="NetworkedMultiplayerPeer"> - </argument> - <description> - Set the peer object to handle the RPC system (effectively enabling networking). Depending on the peer itself, the SceneTree will become a network server (check with [method is_network_server()]) and will set root node's network mode to master (see NETWORK_MODE_* constants in [Node]), or it will become a regular peer with root node set to slave. 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. - </description> - </method> - <method name="set_pause"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_refuse_new_network_connections"> + <method name="set_quit_on_go_back"> <return type="void"> </return> - <argument index="0" name="refuse" type="bool"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> @@ -324,15 +229,28 @@ <description> </description> </method> - <method name="set_use_font_oversampling"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="current_scene" type="Node" setter="set_current_scene" getter="get_current_scene"> + </member> + <member name="debug_collisions_hint" type="bool" setter="set_debug_collisions_hint" getter="is_debugging_collisions_hint"> + </member> + <member name="debug_navigation_hint" type="bool" setter="set_debug_navigation_hint" getter="is_debugging_navigation_hint"> + </member> + <member name="edited_scene_root" type="Node" setter="set_edited_scene_root" getter="get_edited_scene_root"> + </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 root node's network mode to master (see NETWORK_MODE_* constants in [Node]), or it will become a regular peer with root node set to slave. 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"> + </member> + <member name="refuse_new_network_connections" type="bool" setter="set_refuse_new_network_connections" getter="is_refusing_new_network_connections"> + </member> + <member name="root" type="Viewport" setter="" getter="get_root"> + </member> + <member name="use_font_oversampling" type="bool" setter="set_use_font_oversampling" getter="is_using_font_oversampling"> + </member> + </members> <signals> <signal name="connected_to_server"> <description> @@ -402,13 +320,13 @@ </signal> </signals> <constants> - <constant name="GROUP_CALL_DEFAULT" value="0" enum="CallGroupFlags"> + <constant name="GROUP_CALL_DEFAULT" value="0" enum="GroupCallFlags"> </constant> - <constant name="GROUP_CALL_REVERSE" value="1" enum="CallGroupFlags"> + <constant name="GROUP_CALL_REVERSE" value="1" enum="GroupCallFlags"> </constant> - <constant name="GROUP_CALL_REALTIME" value="2" enum="CallGroupFlags"> + <constant name="GROUP_CALL_REALTIME" value="2" enum="GroupCallFlags"> </constant> - <constant name="GROUP_CALL_UNIQUE" value="4" enum="CallGroupFlags"> + <constant name="GROUP_CALL_UNIQUE" value="4" enum="GroupCallFlags"> </constant> <constant name="STRETCH_MODE_DISABLED" value="0" enum="StretchMode"> </constant> diff --git a/doc/classes/SceneTreeTimer.xml b/doc/classes/SceneTreeTimer.xml index 0fdcb26e6e..f6b262d225 100644 --- a/doc/classes/SceneTreeTimer.xml +++ b/doc/classes/SceneTreeTimer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SceneTreeTimer" inherits="Reference" category="Core" version="3.0-beta"> +<class name="SceneTreeTimer" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,21 +9,11 @@ <demos> </demos> <methods> - <method name="get_time_left" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="set_time_left"> - <return type="void"> - </return> - <argument index="0" name="time" type="float"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="time_left" type="float" setter="set_time_left" getter="get_time_left"> + </member> + </members> <signals> <signal name="timeout"> <description> diff --git a/doc/classes/Script.xml b/doc/classes/Script.xml index c7df24879e..787d2c24bf 100644 --- a/doc/classes/Script.xml +++ b/doc/classes/Script.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Script" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Script" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> A class stored as a resource. </brief_description> @@ -8,6 +8,7 @@ The 'new' 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> + http://docs.godotengine.org/en/3.0/getting_started/step_by_step/scripting.html </tutorials> <demos> </demos> @@ -31,13 +32,6 @@ <description> </description> </method> - <method name="get_source_code" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the script source code, or an empty string if source code is not available. - </description> - </method> <method name="has_script_signal" qualifiers="const"> <return type="bool"> </return> @@ -79,16 +73,12 @@ Reloads the script's class implementation. Returns an error code. </description> </method> - <method name="set_source_code"> - <return type="void"> - </return> - <argument index="0" name="source" type="String"> - </argument> - <description> - Sets the script source code. Does not reload the class implementation. - </description> - </method> </methods> + <members> + <member name="source_code" type="String" setter="set_source_code" getter="get_source_code"> + The script source code, or an empty string if source code is not available. When set, does not reload the class implementation automatically. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/ScriptEditor.xml b/doc/classes/ScriptEditor.xml index 81b0b3d0c3..89a8200d66 100644 --- a/doc/classes/ScriptEditor.xml +++ b/doc/classes/ScriptEditor.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ScriptEditor" inherits="PanelContainer" category="Core" version="3.0-beta"> +<class name="ScriptEditor" inherits="PanelContainer" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -12,11 +12,11 @@ <method name="can_drop_data_fw" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="arg0" type="Vector2"> + <argument index="0" name="point" type="Vector2"> </argument> - <argument index="1" name="arg1" type="Variant"> + <argument index="1" name="data" type="Variant"> </argument> - <argument index="2" name="arg2" type="Control"> + <argument index="2" name="from" type="Control"> </argument> <description> </description> @@ -24,11 +24,11 @@ <method name="drop_data_fw"> <return type="void"> </return> - <argument index="0" name="arg0" type="Vector2"> + <argument index="0" name="point" type="Vector2"> </argument> - <argument index="1" name="arg1" type="Variant"> + <argument index="1" name="data" type="Variant"> </argument> - <argument index="2" name="arg2" type="Control"> + <argument index="2" name="from" type="Control"> </argument> <description> </description> @@ -43,9 +43,9 @@ <method name="get_drag_data_fw"> <return type="Variant"> </return> - <argument index="0" name="arg0" type="Vector2"> + <argument index="0" name="point" type="Vector2"> </argument> - <argument index="1" name="arg1" type="Control"> + <argument index="1" name="from" type="Control"> </argument> <description> </description> diff --git a/doc/classes/ScrollBar.xml b/doc/classes/ScrollBar.xml index f3c124b1ff..53b20e55d5 100644 --- a/doc/classes/ScrollBar.xml +++ b/doc/classes/ScrollBar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ScrollBar" inherits="Range" category="Core" version="3.0-beta"> +<class name="ScrollBar" inherits="Range" category="Core" version="3.0-stable"> <brief_description> Base class for scroll bars. </brief_description> diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml index 87ad7d57f5..a1e6441d1c 100644 --- a/doc/classes/ScrollContainer.xml +++ b/doc/classes/ScrollContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ScrollContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="ScrollContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> A helper node for displaying scrollable elements (e.g. lists). </brief_description> @@ -11,43 +11,19 @@ <demos> </demos> <methods> - <method name="get_h_scroll" qualifiers="const"> - <return type="int"> - </return> - <description> - Return current horizontal scroll value. - </description> - </method> - <method name="get_v_scroll" qualifiers="const"> - <return type="int"> - </return> - <description> - Return current vertical scroll value. - </description> - </method> - <method name="set_h_scroll"> - <return type="void"> - </return> - <argument index="0" name="val" type="int"> - </argument> - <description> - Set horizontal scroll value. - </description> - </method> - <method name="set_v_scroll"> - <return type="void"> - </return> - <argument index="0" name="val" type="int"> - </argument> - <description> - Set vertical scroll value. - </description> - </method> </methods> <members> - <member name="scroll_horizontal" type="bool" setter="set_enable_h_scroll" getter="is_h_scroll_enabled"> + <member name="scroll_horizontal" type="int" setter="set_h_scroll" getter="get_h_scroll"> + The current horizontal scroll value. </member> - <member name="scroll_vertical" type="bool" setter="set_enable_v_scroll" getter="is_v_scroll_enabled"> + <member name="scroll_horizontal_enabled" type="bool" setter="set_enable_h_scroll" getter="is_h_scroll_enabled"> + If [code]true[/code], enables horizontal scrolling. + </member> + <member name="scroll_vertical" type="int" setter="set_v_scroll" getter="get_v_scroll"> + The current horizontal scroll value. + </member> + <member name="scroll_vertical_enabled" type="bool" setter="set_enable_v_scroll" getter="is_v_scroll_enabled"> + If [code]true[/code], enables vertical scrolling. </member> </members> <constants> diff --git a/doc/classes/SegmentShape2D.xml b/doc/classes/SegmentShape2D.xml index dc02859251..56d9fe6d31 100644 --- a/doc/classes/SegmentShape2D.xml +++ b/doc/classes/SegmentShape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SegmentShape2D" inherits="Shape2D" category="Core" version="3.0-beta"> +<class name="SegmentShape2D" inherits="Shape2D" category="Core" version="3.0-stable"> <brief_description> Segment shape for 2D collisions. </brief_description> diff --git a/doc/classes/Semaphore.xml b/doc/classes/Semaphore.xml index c8206ff2c2..3d6f894f52 100644 --- a/doc/classes/Semaphore.xml +++ b/doc/classes/Semaphore.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Semaphore" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Semaphore" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> A synchronization Semaphore. </brief_description> diff --git a/doc/classes/Separator.xml b/doc/classes/Separator.xml index ead641f860..20cf870d75 100644 --- a/doc/classes/Separator.xml +++ b/doc/classes/Separator.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Separator" inherits="Control" category="Core" version="3.0-beta"> +<class name="Separator" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Base class for separators. </brief_description> diff --git a/doc/classes/Shader.xml b/doc/classes/Shader.xml index 082c48dfce..28f06f0caa 100644 --- a/doc/classes/Shader.xml +++ b/doc/classes/Shader.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Shader" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Shader" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> To be changed, ignore. </brief_description> @@ -7,16 +7,11 @@ To be changed, ignore. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/shading/index.html </tutorials> <demos> </demos> <methods> - <method name="get_code" qualifiers="const"> - <return type="String"> - </return> - <description> - </description> - </method> <method name="get_default_texture_param" qualifiers="const"> <return type="Texture"> </return> @@ -39,14 +34,6 @@ <description> </description> </method> - <method name="set_code"> - <return type="void"> - </return> - <argument index="0" name="code" type="String"> - </argument> - <description> - </description> - </method> <method name="set_default_texture_param"> <return type="void"> </return> @@ -58,6 +45,10 @@ </description> </method> </methods> + <members> + <member name="code" type="String" setter="set_code" getter="get_code"> + </member> + </members> <constants> <constant name="MODE_SPATIAL" value="0" enum="Mode"> </constant> diff --git a/doc/classes/ShaderMaterial.xml b/doc/classes/ShaderMaterial.xml index 096d6d4332..893746ec31 100644 --- a/doc/classes/ShaderMaterial.xml +++ b/doc/classes/ShaderMaterial.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ShaderMaterial" inherits="Material" category="Core" version="3.0-beta"> +<class name="ShaderMaterial" inherits="Material" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,12 +9,6 @@ <demos> </demos> <methods> - <method name="get_shader" qualifiers="const"> - <return type="Shader"> - </return> - <description> - </description> - </method> <method name="get_shader_param" qualifiers="const"> <return type="Variant"> </return> @@ -23,14 +17,6 @@ <description> </description> </method> - <method name="set_shader"> - <return type="void"> - </return> - <argument index="0" name="shader" type="Shader"> - </argument> - <description> - </description> - </method> <method name="set_shader_param"> <return type="void"> </return> @@ -42,6 +28,10 @@ </description> </method> </methods> + <members> + <member name="shader" type="Shader" setter="set_shader" getter="get_shader"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/Shape.xml b/doc/classes/Shape.xml index 512961ed75..986d567c12 100644 --- a/doc/classes/Shape.xml +++ b/doc/classes/Shape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Shape" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Shape" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Base class for all 3D shape resources. </brief_description> @@ -7,6 +7,7 @@ Base class for all 3D shape resources. All 3D shapes that inherit from this can be set into a [PhysicsBody] or [Area]. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> diff --git a/doc/classes/Shape2D.xml b/doc/classes/Shape2D.xml index d4d043dfd8..d2366faa7f 100644 --- a/doc/classes/Shape2D.xml +++ b/doc/classes/Shape2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Shape2D" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Shape2D" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Base class for all 2D Shapes. </brief_description> @@ -7,6 +7,7 @@ Base class for all 2D Shapes. All 2D shape types inherit from this. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html </tutorials> <demos> </demos> diff --git a/doc/classes/ShortCut.xml b/doc/classes/ShortCut.xml index ce6a001279..f0908cfa44 100644 --- a/doc/classes/ShortCut.xml +++ b/doc/classes/ShortCut.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ShortCut" inherits="Resource" category="Core" version="3.0-beta"> +<class name="ShortCut" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> A shortcut for binding input. </brief_description> diff --git a/doc/classes/Skeleton.xml b/doc/classes/Skeleton.xml index 8bcc80de32..33022cca14 100644 --- a/doc/classes/Skeleton.xml +++ b/doc/classes/Skeleton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Skeleton" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="Skeleton" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Skeleton for characters and animated objects. </brief_description> diff --git a/doc/classes/Sky.xml b/doc/classes/Sky.xml index 33f4a6059c..3cd3957f40 100644 --- a/doc/classes/Sky.xml +++ b/doc/classes/Sky.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Sky" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Sky" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> The base class for [PanoramaSky] and [ProceduralSky]. </brief_description> diff --git a/doc/classes/Slider.xml b/doc/classes/Slider.xml index 565d10497b..84c51572c3 100644 --- a/doc/classes/Slider.xml +++ b/doc/classes/Slider.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Slider" inherits="Range" category="Core" version="3.0-beta"> +<class name="Slider" inherits="Range" category="Core" version="3.0-stable"> <brief_description> Base class for GUI Sliders. </brief_description> diff --git a/doc/classes/SliderJoint.xml b/doc/classes/SliderJoint.xml index 4c794306e4..4507668292 100644 --- a/doc/classes/SliderJoint.xml +++ b/doc/classes/SliderJoint.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SliderJoint" inherits="Joint" category="Core" version="3.0-beta"> +<class name="SliderJoint" inherits="Joint" category="Core" version="3.0-stable"> <brief_description> Piston kind of slider between two bodies in 3D. </brief_description> @@ -59,7 +59,7 @@ The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost. </member> <member name="linear_limit/softness" type="float" setter="set_param" getter="get_param"> - A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement. + A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement. </member> <member name="linear_limit/upper_distance" type="float" setter="set_param" getter="get_param"> The maximum difference between the pivot points on their x-axis before damping happens. @@ -71,16 +71,16 @@ The amount of restitution inside the slider limits. </member> <member name="linear_motion/softness" type="float" setter="set_param" getter="get_param"> - A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement. + A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement. </member> <member name="linear_ortho/damping" type="float" setter="set_param" getter="get_param"> - The amount of damping when movement is accross axes orthogonal to the slider. + The amount of damping when movement is across axes orthogonal to the slider. </member> <member name="linear_ortho/restitution" type="float" setter="set_param" getter="get_param"> - The amount of restitution when movement is accross axes orthogonal to the slider. + The amount of restitution when movement is across axes orthogonal to the slider. </member> <member name="linear_ortho/softness" type="float" setter="set_param" getter="get_param"> - A factor applied to the movement accross axes orthogonal to the slider. + A factor applied to the movement across axes orthogonal to the slider. </member> </members> <constants> @@ -91,7 +91,7 @@ The minimum difference between the pivot points on their x-axis before damping happens. </constant> <constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2" enum="Param"> - A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement. + A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement. </constant> <constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3" enum="Param"> The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost. @@ -100,7 +100,7 @@ The amount of damping once the slider limits are surpassed. </constant> <constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5" enum="Param"> - A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement. + A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement. </constant> <constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6" enum="Param"> The amount of restitution inside the slider limits. @@ -109,13 +109,13 @@ The amount of damping inside the slider limits. </constant> <constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8" enum="Param"> - A factor applied to the movement accross axes orthogonal to the slider. + A factor applied to the movement across axes orthogonal to the slider. </constant> <constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9" enum="Param"> - The amount of restitution when movement is accross axes orthogonal to the slider. + The amount of restitution when movement is across axes orthogonal to the slider. </constant> <constant name="PARAM_LINEAR_ORTHOGONAL_DAMPING" value="10" enum="Param"> - The amount of damping when movement is accross axes orthogonal to the slider. + The amount of damping when movement is across axes orthogonal to the slider. </constant> <constant name="PARAM_ANGULAR_LIMIT_UPPER" value="11" enum="Param"> The upper limit of rotation in the slider. diff --git a/doc/classes/Spatial.xml b/doc/classes/Spatial.xml index ea04192a5e..26f6f4003b 100644 --- a/doc/classes/Spatial.xml +++ b/doc/classes/Spatial.xml @@ -1,23 +1,19 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Spatial" inherits="Node" category="Core" version="3.0-beta"> +<class name="Spatial" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Most basic 3D game object, parent of all 3D related nodes. </brief_description> <description> Most basic 3D game object, with a 3D [Transform] and visibility settings. All other 3D game objects inherit from Spatial. Use Spatial as a parent node to move, scale, rotate and show/hide children in a 3D project. + + Affine operations (rotate, scale, translate) happen in parent's local coordinate system, unless the Spatial object is set as top level. Affine operations in this coordinate system correspond to direct affine operations on the Spatial's transform. The word local below refers to this coordinate system. The coordinate system that is attached to the Spatial object itself is referred to as object-local coordinate system. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/introduction_to_3d.html </tutorials> <demos> </demos> <methods> - <method name="get_gizmo" qualifiers="const"> - <return type="SpatialGizmo"> - </return> - <description> - Returns the SpatialGizmo for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor. - </description> - </method> <method name="get_parent_spatial" qualifiers="const"> <return type="Spatial"> </return> @@ -35,12 +31,20 @@ <method name="global_rotate"> <return type="void"> </return> - <argument index="0" name="normal" type="Vector3"> + <argument index="0" name="axis" type="Vector3"> </argument> - <argument index="1" name="radians" type="float"> + <argument index="1" name="angle" type="float"> + </argument> + <description> + Rotates the global (world) transformation around axis, a unit [Vector3], by specified angle in radians. The rotation axis is in global coordinate system. + </description> + </method> + <method name="global_scale"> + <return type="void"> + </return> + <argument index="0" name="scale" type="Vector3"> </argument> <description> - Rotates the current node along normal [Vector3] by angle in radians in Global space. </description> </method> <method name="global_translate"> @@ -49,7 +53,7 @@ <argument index="0" name="offset" type="Vector3"> </argument> <description> - Moves the node by [Vector3] offset in Global space. + Moves the global (world) transformation by [Vector3] offset. The offset is in global coordinate system. </description> </method> <method name="hide"> @@ -115,63 +119,74 @@ <return type="void"> </return> <description> - Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation. Performs orthonormalization on this node [Transform3D]. + Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node's [Transform3D]. </description> </method> <method name="rotate"> <return type="void"> </return> - <argument index="0" name="normal" type="Vector3"> + <argument index="0" name="axis" type="Vector3"> </argument> - <argument index="1" name="radians" type="float"> + <argument index="1" name="angle" type="float"> </argument> <description> - Rotates the node in local space on given normal [Vector3] by angle in radians. + Rotates the local transformation around axis, a unit [Vector3], by specified angle in radians. + </description> + </method> + <method name="rotate_object_local"> + <return type="void"> + </return> + <argument index="0" name="axis" type="Vector3"> + </argument> + <argument index="1" name="angle" type="float"> + </argument> + <description> + Rotates the local transformation around axis, a unit [Vector3], by specified angle in radians. The rotation axis is in object-local coordinate system. </description> </method> <method name="rotate_x"> <return type="void"> </return> - <argument index="0" name="radians" type="float"> + <argument index="0" name="angle" type="float"> </argument> <description> - Rotates the node in local space on X axis by angle in radians. + Rotates the local transformation around the X axis by angle in radians </description> </method> <method name="rotate_y"> <return type="void"> </return> - <argument index="0" name="radians" type="float"> + <argument index="0" name="angle" type="float"> </argument> <description> - Rotates the node in local space on Y axis by angle in radians. + Rotates the local transformation around the Y axis by angle in radians. </description> </method> <method name="rotate_z"> <return type="void"> </return> - <argument index="0" name="radians" type="float"> + <argument index="0" name="angle" type="float"> </argument> <description> - Rotates the node in local space on Z axis by angle in radians. + Rotates the local transformation around the Z axis by angle in radians. </description> </method> - <method name="set_as_toplevel"> + <method name="scale_object_local"> <return type="void"> </return> - <argument index="0" name="enable" type="bool"> + <argument index="0" name="scale" type="Vector3"> </argument> <description> - Makes the node ignore its parents transformations. Node transformations are only in global space. + Scales the local transformation by given 3D scale factors in object-local coordinate system. </description> </method> - <method name="set_gizmo"> + <method name="set_as_toplevel"> <return type="void"> </return> - <argument index="0" name="gizmo" type="SpatialGizmo"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set [SpatialGizmo] for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor. + Makes the node ignore its parents transformations. Node transformations are only in global space. </description> </method> <method name="set_identity"> @@ -242,6 +257,14 @@ Changes the node's position by given offset [Vector3]. </description> </method> + <method name="translate_object_local"> + <return type="void"> + </return> + <argument index="0" name="offset" type="Vector3"> + </argument> + <description> + </description> + </method> <method name="update_gizmo"> <return type="void"> </return> @@ -251,20 +274,25 @@ </method> </methods> <members> + <member name="gizmo" type="SpatialGizmo" setter="set_gizmo" getter="get_gizmo"> + The SpatialGizmo for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor. + </member> <member name="global_transform" type="Transform" setter="set_global_transform" getter="get_global_transform"> World space (global) [Transform] of this node. </member> <member name="rotation" type="Vector3" setter="set_rotation" getter="get_rotation"> - Local euler rotation in radians of this node. + Rotation part of the local transformation, specified in terms of YXZ-Euler angles in the format (X-angle, Y-angle, Z-angle), in radians. + + Note that in the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three indepdent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful. </member> <member name="rotation_degrees" type="Vector3" setter="set_rotation_degrees" getter="get_rotation_degrees"> - Local euler rotation in degrees of this node. + Rotation part of the local transformation, specified in terms of YXZ-Euler angles in the format (X-angle, Y-angle, Z-angle), in degrees. </member> <member name="scale" type="Vector3" setter="set_scale" getter="get_scale"> - Local scale of this node. + Scale part of the local transformation. </member> <member name="transform" type="Transform" setter="set_transform" getter="get_transform"> - Local space [Transform] of this node. + Local space [Transform] of this node, with respect to the parent node. </member> <member name="translation" type="Vector3" setter="set_translation" getter="get_translation"> Local translation of this node. diff --git a/doc/classes/SpatialGizmo.xml b/doc/classes/SpatialGizmo.xml index 8f614c6737..cf6f0efd46 100644 --- a/doc/classes/SpatialGizmo.xml +++ b/doc/classes/SpatialGizmo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpatialGizmo" inherits="Reference" category="Core" version="3.0-beta"> +<class name="SpatialGizmo" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/SpatialMaterial.xml b/doc/classes/SpatialMaterial.xml index 403a6dc930..eef18c9892 100644 --- a/doc/classes/SpatialMaterial.xml +++ b/doc/classes/SpatialMaterial.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpatialMaterial" inherits="Material" category="Core" version="3.0-beta"> +<class name="SpatialMaterial" inherits="Material" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/spatial_material.html </tutorials> <demos> </demos> diff --git a/doc/classes/SpatialVelocityTracker.xml b/doc/classes/SpatialVelocityTracker.xml index a58049a141..276b82899b 100644 --- a/doc/classes/SpatialVelocityTracker.xml +++ b/doc/classes/SpatialVelocityTracker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpatialVelocityTracker" inherits="Reference" category="Core" version="3.0-beta"> +<class name="SpatialVelocityTracker" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -15,12 +15,6 @@ <description> </description> </method> - <method name="is_tracking_physics_step" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="reset"> <return type="void"> </return> @@ -29,14 +23,6 @@ <description> </description> </method> - <method name="set_track_physics_step"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> <method name="update_position"> <return type="void"> </return> @@ -46,6 +32,10 @@ </description> </method> </methods> + <members> + <member name="track_physics_step" type="bool" setter="set_track_physics_step" getter="is_tracking_physics_step"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/SphereMesh.xml b/doc/classes/SphereMesh.xml index 25ebaf1aaa..9f2d613267 100644 --- a/doc/classes/SphereMesh.xml +++ b/doc/classes/SphereMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SphereMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta"> +<class name="SphereMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable"> <brief_description> Class representing a spherical [PrimitiveMesh]. </brief_description> diff --git a/doc/classes/SphereShape.xml b/doc/classes/SphereShape.xml index c26d069310..a8df924bde 100644 --- a/doc/classes/SphereShape.xml +++ b/doc/classes/SphereShape.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SphereShape" inherits="Shape" category="Core" version="3.0-beta"> +<class name="SphereShape" inherits="Shape" category="Core" version="3.0-stable"> <brief_description> Sphere shape for 3D collisions. </brief_description> diff --git a/doc/classes/SpinBox.xml b/doc/classes/SpinBox.xml index 806d36717a..1762a66302 100644 --- a/doc/classes/SpinBox.xml +++ b/doc/classes/SpinBox.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpinBox" inherits="Range" category="Core" version="3.0-beta"> +<class name="SpinBox" inherits="Range" category="Core" version="3.0-stable"> <brief_description> Numerical input text field. </brief_description> diff --git a/doc/classes/SplitContainer.xml b/doc/classes/SplitContainer.xml index 835a226a50..3a7f22693a 100644 --- a/doc/classes/SplitContainer.xml +++ b/doc/classes/SplitContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SplitContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="SplitContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> Container for splitting and adjusting. </brief_description> diff --git a/doc/classes/SpotLight.xml b/doc/classes/SpotLight.xml index c66646114f..00991e75bc 100644 --- a/doc/classes/SpotLight.xml +++ b/doc/classes/SpotLight.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpotLight" inherits="Light" category="Core" version="3.0-beta"> +<class name="SpotLight" inherits="Light" category="Core" version="3.0-stable"> <brief_description> Spotlight [Light], such as a reflector spotlight or a lantern. </brief_description> @@ -7,6 +7,7 @@ A SpotLight light is a type of [Light] node that emits lights in a specific direction, in the shape of a cone. The light is attenuated through the distance and this attenuation can be configured by changing the energy, radius and attenuation parameters of [Light]. TODO: Image of a spotlight. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html </tutorials> <demos> </demos> diff --git a/doc/classes/Sprite.xml b/doc/classes/Sprite.xml index 655e98b3ed..c1afb35e09 100644 --- a/doc/classes/Sprite.xml +++ b/doc/classes/Sprite.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Sprite" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="Sprite" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> General purpose Sprite node. </brief_description> diff --git a/doc/classes/Sprite3D.xml b/doc/classes/Sprite3D.xml index d727725a95..ca0bd212aa 100644 --- a/doc/classes/Sprite3D.xml +++ b/doc/classes/Sprite3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Sprite3D" inherits="SpriteBase3D" category="Core" version="3.0-beta"> +<class name="Sprite3D" inherits="SpriteBase3D" category="Core" version="3.0-stable"> <brief_description> 2D Sprite node in 3D world. </brief_description> diff --git a/doc/classes/SpriteBase3D.xml b/doc/classes/SpriteBase3D.xml index 580a467d6b..d91314e236 100644 --- a/doc/classes/SpriteBase3D.xml +++ b/doc/classes/SpriteBase3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpriteBase3D" inherits="GeometryInstance" category="Core" version="3.0-beta"> +<class name="SpriteBase3D" inherits="GeometryInstance" category="Core" version="3.0-stable"> <brief_description> 2D Sprite node in 3D environment. </brief_description> diff --git a/doc/classes/SpriteFrames.xml b/doc/classes/SpriteFrames.xml index 883a6d4fa8..f76212b0d2 100644 --- a/doc/classes/SpriteFrames.xml +++ b/doc/classes/SpriteFrames.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SpriteFrames" inherits="Resource" category="Core" version="3.0-beta"> +<class name="SpriteFrames" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Sprite frame library for AnimatedSprite. </brief_description> diff --git a/doc/classes/StaticBody.xml b/doc/classes/StaticBody.xml index dd105589a6..e5b9d1c0d9 100644 --- a/doc/classes/StaticBody.xml +++ b/doc/classes/StaticBody.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StaticBody" inherits="PhysicsBody" category="Core" version="3.0-beta"> +<class name="StaticBody" inherits="PhysicsBody" category="Core" version="3.0-stable"> <brief_description> Static body for 3D Physics. </brief_description> diff --git a/doc/classes/StaticBody2D.xml b/doc/classes/StaticBody2D.xml index bf670a344f..d9e750f4f6 100644 --- a/doc/classes/StaticBody2D.xml +++ b/doc/classes/StaticBody2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StaticBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-beta"> +<class name="StaticBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-stable"> <brief_description> Static body for 2D Physics. </brief_description> diff --git a/doc/classes/StreamPeer.xml b/doc/classes/StreamPeer.xml index d757b6f2d8..49aa26a601 100644 --- a/doc/classes/StreamPeer.xml +++ b/doc/classes/StreamPeer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StreamPeer" inherits="Reference" category="Core" version="3.0-beta"> +<class name="StreamPeer" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Abstraction and base class for stream-based protocols. </brief_description> @@ -105,7 +105,7 @@ <return type="int"> </return> <description> - Get an unsigned 16 bit value from the stream. + Get an unsigned 64 bit value from the stream. </description> </method> <method name="get_u8"> @@ -131,17 +131,10 @@ Get a Variant from the stream. </description> </method> - <method name="is_big_endian_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether this [code]StreamPeer[/code] is using big-endian format. - </description> - </method> <method name="put_16"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put a signed 16 bit value into the stream. @@ -150,7 +143,7 @@ <method name="put_32"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put a signed 32 bit value into the stream. @@ -159,7 +152,7 @@ <method name="put_64"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put a signed 64 bit value into the stream. @@ -168,7 +161,7 @@ <method name="put_8"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put a signed byte into the stream. @@ -186,7 +179,7 @@ <method name="put_double"> <return type="void"> </return> - <argument index="0" name="val" type="float"> + <argument index="0" name="value" type="float"> </argument> <description> Put a double-precision float into the stream. @@ -195,7 +188,7 @@ <method name="put_float"> <return type="void"> </return> - <argument index="0" name="val" type="float"> + <argument index="0" name="value" type="float"> </argument> <description> Put a single-precision float into the stream. @@ -213,7 +206,7 @@ <method name="put_u16"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put an unsigned 16 bit value into the stream. @@ -222,7 +215,7 @@ <method name="put_u32"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put an unsigned 32 bit value into the stream. @@ -231,7 +224,7 @@ <method name="put_u64"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put an unsigned 64 bit value into the stream. @@ -240,7 +233,7 @@ <method name="put_u8"> <return type="void"> </return> - <argument index="0" name="val" type="int"> + <argument index="0" name="value" type="int"> </argument> <description> Put an unsigned byte into the stream. @@ -249,7 +242,7 @@ <method name="put_utf8_string"> <return type="void"> </return> - <argument index="0" name="val" type="String"> + <argument index="0" name="value" type="String"> </argument> <description> Put a zero-terminated utf8 string into the stream. @@ -258,22 +251,18 @@ <method name="put_var"> <return type="void"> </return> - <argument index="0" name="val" type="Variant"> + <argument index="0" name="value" type="Variant"> </argument> <description> Put a Variant into the stream. </description> </method> - <method name="set_big_endian"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set this [code]StreamPeer[/code] to use big-endian format. Default is false. - </description> - </method> </methods> + <members> + <member name="big_endian" type="bool" setter="set_big_endian" getter="is_big_endian_enabled"> + If [code]true[/code], this [code]StreamPeer[/code] will using big-endian format for encoding and decoding. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/StreamPeerBuffer.xml b/doc/classes/StreamPeerBuffer.xml index 66696ed416..2c95a8a3cf 100644 --- a/doc/classes/StreamPeerBuffer.xml +++ b/doc/classes/StreamPeerBuffer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StreamPeerBuffer" inherits="StreamPeer" category="Core" version="3.0-beta"> +<class name="StreamPeerBuffer" inherits="StreamPeer" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -21,12 +21,6 @@ <description> </description> </method> - <method name="get_data_array" qualifiers="const"> - <return type="PoolByteArray"> - </return> - <description> - </description> - </method> <method name="get_position" qualifiers="const"> <return type="int"> </return> @@ -55,15 +49,11 @@ <description> </description> </method> - <method name="set_data_array"> - <return type="void"> - </return> - <argument index="0" name="data" type="PoolByteArray"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="data_array" type="PoolByteArray" setter="set_data_array" getter="get_data_array"> + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/StreamPeerSSL.xml b/doc/classes/StreamPeerSSL.xml index 55cb39e137..0c60213e49 100644 --- a/doc/classes/StreamPeerSSL.xml +++ b/doc/classes/StreamPeerSSL.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StreamPeerSSL" inherits="StreamPeer" category="Core" version="3.0-beta"> +<class name="StreamPeerSSL" inherits="StreamPeer" category="Core" version="3.0-stable"> <brief_description> SSL Stream peer. </brief_description> @@ -7,6 +7,7 @@ SSL Stream peer. This object can be used to connect to SSL servers. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/networking/ssl_certificates.html </tutorials> <demos> </demos> diff --git a/doc/classes/StreamPeerTCP.xml b/doc/classes/StreamPeerTCP.xml index 4c9812587a..73e9b97367 100644 --- a/doc/classes/StreamPeerTCP.xml +++ b/doc/classes/StreamPeerTCP.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StreamPeerTCP" inherits="StreamPeer" category="Core" version="3.0-beta"> +<class name="StreamPeerTCP" inherits="StreamPeer" category="Core" version="3.0-stable"> <brief_description> TCP Stream peer. </brief_description> @@ -29,6 +29,16 @@ Disconnect from host. </description> </method> + <method name="set_no_delay"> + <return type="void"> + </return> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Disable Nagle algorithm to improve latency for small packets. + Note that for applications that send large packets, or need to transfer a lot of data, this can reduce total bandwidth. + </description> + </method> <method name="get_connected_host" qualifiers="const"> <return type="String"> </return> diff --git a/doc/classes/StreamTexture.xml b/doc/classes/StreamTexture.xml index 2e15070a8f..c37b5d6fe4 100644 --- a/doc/classes/StreamTexture.xml +++ b/doc/classes/StreamTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StreamTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="StreamTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> A .stex texture. </brief_description> diff --git a/doc/classes/String.xml b/doc/classes/String.xml index 8bbd52b417..bad4ada144 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="String" category="Built-In Types" version="3.0-beta"> +<class name="String" category="Built-In Types" version="3.0-stable"> <brief_description> Built-in string class. </brief_description> @@ -277,6 +277,7 @@ <return type="String"> </return> <description> + Removes indentation from string. </description> </method> <method name="empty"> @@ -321,7 +322,7 @@ <argument index="0" name="what" type="String"> </argument> <description> - Finds the last occurrence of a substring. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed. + Finds the last occurrence of a substring. Returns the starting position of the substring or -1 if not found. </description> </method> <method name="findn"> @@ -343,7 +344,7 @@ <argument index="1" name="placeholder" type="String" default="{_}"> </argument> <description> - Formats the string by replacing all occurences of [code]placeholder[/code] with [code]values[/code]. + Formats the string by replacing all occurrences of [code]placeholder[/code] with [code]values[/code]. </description> </method> <method name="get_base_dir"> diff --git a/doc/classes/StyleBox.xml b/doc/classes/StyleBox.xml index 2759b5f430..a816b6a030 100644 --- a/doc/classes/StyleBox.xml +++ b/doc/classes/StyleBox.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StyleBox" inherits="Resource" category="Core" version="3.0-beta"> +<class name="StyleBox" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Base class for drawing stylized boxes for the UI. </brief_description> diff --git a/doc/classes/StyleBoxEmpty.xml b/doc/classes/StyleBoxEmpty.xml index 70d801e699..cd0bd9bf9d 100644 --- a/doc/classes/StyleBoxEmpty.xml +++ b/doc/classes/StyleBoxEmpty.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StyleBoxEmpty" inherits="StyleBox" category="Core" version="3.0-beta"> +<class name="StyleBoxEmpty" inherits="StyleBox" category="Core" version="3.0-stable"> <brief_description> Empty stylebox (does not display anything). </brief_description> diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml index 16a1e72fce..2f26032c45 100644 --- a/doc/classes/StyleBoxFlat.xml +++ b/doc/classes/StyleBoxFlat.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StyleBoxFlat" inherits="StyleBox" category="Core" version="3.0-beta"> +<class name="StyleBoxFlat" inherits="StyleBox" category="Core" version="3.0-stable"> <brief_description> Customizable Stylebox with a given set of parameters. (no texture required) </brief_description> diff --git a/doc/classes/StyleBoxLine.xml b/doc/classes/StyleBoxLine.xml index e18af2334c..ddabe9aede 100644 --- a/doc/classes/StyleBoxLine.xml +++ b/doc/classes/StyleBoxLine.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StyleBoxLine" inherits="StyleBox" category="Core" version="3.0-beta"> +<class name="StyleBoxLine" inherits="StyleBox" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,24 +9,12 @@ <demos> </demos> <methods> - <method name="get_grow" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="set_grow"> - <return type="void"> - </return> - <argument index="0" name="grow" type="float"> - </argument> - <description> - </description> - </method> </methods> <members> <member name="color" type="Color" setter="set_color" getter="get_color"> </member> + <member name="grow" type="float" setter="set_grow" getter="get_grow"> + </member> <member name="thickness" type="int" setter="set_thickness" getter="get_thickness"> </member> <member name="vertical" type="bool" setter="set_vertical" getter="is_vertical"> diff --git a/doc/classes/StyleBoxTexture.xml b/doc/classes/StyleBoxTexture.xml index 2a7077bbff..8bac0fc77e 100644 --- a/doc/classes/StyleBoxTexture.xml +++ b/doc/classes/StyleBoxTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StyleBoxTexture" inherits="StyleBox" category="Core" version="3.0-beta"> +<class name="StyleBoxTexture" inherits="StyleBox" category="Core" version="3.0-stable"> <brief_description> Texture Based 3x3 scale style. </brief_description> diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml index 0916d0b928..64978a8bef 100644 --- a/doc/classes/SurfaceTool.xml +++ b/doc/classes/SurfaceTool.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SurfaceTool" inherits="Reference" category="Core" version="3.0-beta"> +<class name="SurfaceTool" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Helper tool to create geometry. </brief_description> diff --git a/doc/classes/TCP_Server.xml b/doc/classes/TCP_Server.xml index d3715ff545..b3db65de59 100644 --- a/doc/classes/TCP_Server.xml +++ b/doc/classes/TCP_Server.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TCP_Server" inherits="Reference" category="Core" version="3.0-beta"> +<class name="TCP_Server" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> TCP Server. </brief_description> diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml index 350dd11e4d..9806c03349 100644 --- a/doc/classes/TabContainer.xml +++ b/doc/classes/TabContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TabContainer" inherits="Control" category="Core" version="3.0-beta"> +<class name="TabContainer" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Tabbed Container. </brief_description> diff --git a/doc/classes/Tabs.xml b/doc/classes/Tabs.xml index fbda1aedb4..e4df4d0a31 100644 --- a/doc/classes/Tabs.xml +++ b/doc/classes/Tabs.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Tabs" inherits="Control" category="Core" version="3.0-beta"> +<class name="Tabs" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Tabs Control. </brief_description> @@ -35,12 +35,6 @@ <description> </description> </method> - <method name="get_tab_align" qualifiers="const"> - <return type="int" enum="Tabs.TabAlign"> - </return> - <description> - </description> - </method> <method name="get_tab_count" qualifiers="const"> <return type="int"> </return> @@ -105,14 +99,6 @@ <description> </description> </method> - <method name="set_tab_align"> - <return type="void"> - </return> - <argument index="0" name="align" type="int" enum="Tabs.TabAlign"> - </argument> - <description> - </description> - </method> <method name="set_tab_disabled"> <return type="void"> </return> @@ -149,6 +135,8 @@ </member> <member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled"> </member> + <member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="Tabs.TabAlign"> + </member> <member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="Tabs.CloseButtonDisplayPolicy"> </member> </members> diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml index ab722a24c3..f84ebede1c 100644 --- a/doc/classes/TextEdit.xml +++ b/doc/classes/TextEdit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TextEdit" inherits="Control" category="Core" version="3.0-beta"> +<class name="TextEdit" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Multiline text editing control. </brief_description> @@ -213,7 +213,7 @@ <method name="is_line_hidden" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="arg0" type="int"> + <argument index="0" name="line" type="int"> </argument> <description> </description> @@ -294,24 +294,6 @@ <description> </description> </method> - <method name="set_max_chars"> - <return type="void"> - </return> - <argument index="0" name="amount" type="int"> - </argument> - <description> - Set the maximum amount of characters editable. - </description> - </method> - <method name="set_wrap"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Enable text wrapping when it goes beyond he edge of what is visible. - </description> - </method> <method name="toggle_fold_line"> <return type="void"> </return> @@ -384,6 +366,9 @@ String value of the [TextEdit]. </member> <member name="v_scroll_speed" type="float" setter="set_v_scroll_speed" getter="get_v_scroll_speed"> + If [code]true[/code], enables text wrapping when it goes beyond he edge of what is visible. + </member> + <member name="wrap_lines" type="bool" setter="set_wrap" getter="is_wrapping"> </member> </members> <signals> diff --git a/doc/classes/Texture.xml b/doc/classes/Texture.xml index bf27bc4768..f21b41f939 100644 --- a/doc/classes/Texture.xml +++ b/doc/classes/Texture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Texture" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Texture" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Texture for 2D and 3D. </brief_description> @@ -71,13 +71,6 @@ <description> </description> </method> - <method name="get_flags" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the current texture flags. - </description> - </method> <method name="get_height" qualifiers="const"> <return type="int"> </return> @@ -105,17 +98,16 @@ <description> </description> </method> - <method name="set_flags"> - <return type="void"> - </return> - <argument index="0" name="flags" type="int"> - </argument> - <description> - Change the texture flags. - </description> - </method> </methods> + <members> + <member name="flags" type="int" setter="set_flags" getter="get_flags"> + The texture's flags. + </member> + </members> <constants> + <constant name="FLAGS_DEFAULT" value="7" enum="Flags"> + Default flags. Generate mipmaps, repeat, and filter are enabled. + </constant> <constant name="FLAG_MIPMAPS" value="1" enum="Flags"> Generate mipmaps, which are smaller versions of the same texture to use when zoomed out, keeping the aspect ratio. </constant> @@ -125,9 +117,6 @@ <constant name="FLAG_FILTER" value="4" enum="Flags"> Magnifying filter, to enable smooth zooming in of the texture. </constant> - <constant name="FLAGS_DEFAULT" value="7" enum="Flags"> - Default flags. Generate mipmaps, repeat, and filter are enabled. - </constant> <constant name="FLAG_ANISOTROPIC_FILTER" value="8" enum="Flags"> Anisotropic mipmap filtering. Generates smaller versions of the same texture with different aspect ratios. More effective on planes often shown going to the horrizon as those textures (Walls or Ground for example) get squashed in the viewport to different aspect ratios and regular mipmaps keep the aspect ratio so they don't optimize storage that well in those cases. diff --git a/doc/classes/TextureButton.xml b/doc/classes/TextureButton.xml index 9074966f4f..3bda04fe58 100644 --- a/doc/classes/TextureButton.xml +++ b/doc/classes/TextureButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TextureButton" inherits="BaseButton" category="Core" version="3.0-beta"> +<class name="TextureButton" inherits="BaseButton" category="Core" version="3.0-stable"> <brief_description> Texture-based button. Supports Pressed, Hover, Disabled and Focused states. </brief_description> diff --git a/doc/classes/TextureProgress.xml b/doc/classes/TextureProgress.xml index c3046d7877..2456653786 100644 --- a/doc/classes/TextureProgress.xml +++ b/doc/classes/TextureProgress.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TextureProgress" inherits="Range" category="Core" version="3.0-beta"> +<class name="TextureProgress" inherits="Range" category="Core" version="3.0-stable"> <brief_description> Texture-based progress bar. Useful for loading screens and life or stamina bars. </brief_description> diff --git a/doc/classes/TextureRect.xml b/doc/classes/TextureRect.xml index c1a5902448..8b0fc09a6d 100644 --- a/doc/classes/TextureRect.xml +++ b/doc/classes/TextureRect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TextureRect" inherits="Control" category="Core" version="3.0-beta"> +<class name="TextureRect" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Draws a sprite or a texture inside a User Interface. The texture can tile or not. </brief_description> diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml index f6d3b97181..037f8cbd48 100644 --- a/doc/classes/Theme.xml +++ b/doc/classes/Theme.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Theme" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Theme" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Theme for controls. </brief_description> diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml index c9b1d872bc..c3d1d1b24f 100644 --- a/doc/classes/Thread.xml +++ b/doc/classes/Thread.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Thread" inherits="Reference" category="Core" version="3.0-beta"> +<class name="Thread" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> A unit of execution in a process. </brief_description> diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml index a09f6b6dc3..058a92d99c 100644 --- a/doc/classes/TileMap.xml +++ b/doc/classes/TileMap.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TileMap" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="TileMap" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Node for 2D tile-based maps. </brief_description> @@ -7,6 +7,7 @@ Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list of tiles (textures plus optional collision, navigation, and/or occluder shapes) which are used to create grid-based maps. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/2d/using_tilemaps.html </tutorials> <demos> </demos> @@ -185,7 +186,7 @@ <method name="update_bitmask_area"> <return type="void"> </return> - <argument index="0" name="arg0" type="Vector2"> + <argument index="0" name="position" type="Vector2"> </argument> <description> Applies autotiling rules to the cell (and its adjacent cells) referenced by its grid-based X and Y coordinates. diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml index 3dbf172c5a..95a5e55176 100644 --- a/doc/classes/TileSet.xml +++ b/doc/classes/TileSet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TileSet" inherits="Resource" category="Core" version="3.0-beta"> +<class name="TileSet" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Tile library for tilemaps. </brief_description> @@ -39,7 +39,7 @@ <method name="autotile_get_bitmask_mode" qualifiers="const"> <return type="int" enum="TileSet.BitmaskMode"> </return> - <argument index="0" name="arg0" type="int"> + <argument index="0" name="id" type="int"> </argument> <description> </description> @@ -47,9 +47,9 @@ <method name="autotile_set_bitmask_mode"> <return type="void"> </return> - <argument index="0" name="mode" type="int"> + <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="arg1" type="int" enum="TileSet.BitmaskMode"> + <argument index="1" name="mode" type="int" enum="TileSet.BitmaskMode"> </argument> <description> </description> diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml index 09071b2ad1..383d3199f5 100644 --- a/doc/classes/Timer.xml +++ b/doc/classes/Timer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Timer" inherits="Node" category="Core" version="3.0-beta"> +<class name="Timer" inherits="Node" category="Core" version="3.0-stable"> <brief_description> A countdown timer. </brief_description> @@ -11,20 +11,6 @@ <demos> </demos> <methods> - <method name="get_time_left" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the timer's remaining time in seconds. Returns 0 if the timer is inactive. - </description> - </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the timer is paused. - </description> - </method> <method name="is_stopped" qualifiers="const"> <return type="bool"> </return> @@ -32,15 +18,6 @@ Returns [code]true[/code] if the timer is stopped. </description> </method> - <method name="set_paused"> - <return type="void"> - </return> - <argument index="0" name="paused" type="bool"> - </argument> - <description> - Pauses the timer. If [code]paused[/code] is [code]true[/code], the timer will not process until it is started or unpaused again, even if [method start] is called. - </description> - </method> <method name="start"> <return type="void"> </return> @@ -64,9 +41,15 @@ <member name="one_shot" type="bool" setter="set_one_shot" getter="is_one_shot"> If [code]true[/code], Timer will stop when reaching 0. If [code]false[/code], it will restart. Default value: [code]false[/code]. </member> + <member name="paused" type="bool" setter="set_paused" getter="is_paused"> + If [code]true[/code], the timer is paused and will not process until it is unpaused again, even if [method start] is called. + </member> <member name="process_mode" type="int" setter="set_timer_process_mode" getter="get_timer_process_mode" enum="Timer.TimerProcessMode"> Processing mode. Uses TIMER_PROCESS_* constants as value. </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. + </member> <member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time"> Wait time in seconds. </member> diff --git a/doc/classes/ToolButton.xml b/doc/classes/ToolButton.xml index 512bbbf3f0..6597dc96e0 100644 --- a/doc/classes/ToolButton.xml +++ b/doc/classes/ToolButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ToolButton" inherits="Button" category="Core" version="3.0-beta"> +<class name="ToolButton" inherits="Button" category="Core" version="3.0-stable"> <brief_description> Flat button helper class. </brief_description> diff --git a/doc/classes/TouchScreenButton.xml b/doc/classes/TouchScreenButton.xml index 776765f84d..c187274a9d 100644 --- a/doc/classes/TouchScreenButton.xml +++ b/doc/classes/TouchScreenButton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TouchScreenButton" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="TouchScreenButton" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Button for touch screen devices. </brief_description> diff --git a/doc/classes/Transform.xml b/doc/classes/Transform.xml index 83003cb357..cf1c9ea032 100644 --- a/doc/classes/Transform.xml +++ b/doc/classes/Transform.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Transform" category="Built-In Types" version="3.0-beta"> +<class name="Transform" category="Built-In Types" version="3.0-stable"> <brief_description> 3D Transformation. 3x4 matrix. </brief_description> @@ -7,6 +7,7 @@ Represents one or many transformations in 3D space such as translation, rotation, or scaling. It consists of a [Basis] "basis" and an [Vector3] "origin". It is similar to a 3x4 matrix. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/math/index.html </tutorials> <demos> </demos> @@ -142,7 +143,7 @@ <argument index="0" name="v" type="var"> </argument> <description> - Transforms the given vector "v" by this transform. + Transforms the given [Vector3], [Plane], or [AABB] by this transform. </description> </method> <method name="xform_inv"> @@ -151,7 +152,7 @@ <argument index="0" name="v" type="var"> </argument> <description> - Inverse-transforms the given vector "v" by this transform. + Inverse-transforms the given [Vector3], [Plane], or [AABB] by this transform. </description> </method> </methods> diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml index f4717aa995..e20f48ba14 100644 --- a/doc/classes/Transform2D.xml +++ b/doc/classes/Transform2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Transform2D" category="Built-In Types" version="3.0-beta"> +<class name="Transform2D" category="Built-In Types" version="3.0-stable"> <brief_description> 2D Transformation. 3x2 matrix. </brief_description> @@ -52,18 +52,18 @@ </description> </method> <method name="basis_xform"> - <return type="Transform2D"> + <return type="Vector2"> </return> - <argument index="0" name="v" type="var"> + <argument index="0" name="v" type="Vector2"> </argument> <description> Transforms the given vector by this transform's basis (no translation). </description> </method> <method name="basis_xform_inv"> - <return type="Transform2D"> + <return type="Vector2"> </return> - <argument index="0" name="v" type="var"> + <argument index="0" name="v" type="Vector2"> </argument> <description> Inverse-transforms the given vector by this transform's basis (no translation). @@ -143,21 +143,21 @@ </description> </method> <method name="xform"> - <return type="Transform2D"> + <return type="var"> </return> <argument index="0" name="v" type="var"> </argument> <description> - Transforms the given vector "v" by this transform. + Transforms the given [Vector2] or [Rect2] by this transform. </description> </method> <method name="xform_inv"> - <return type="Transform2D"> + <return type="var"> </return> <argument index="0" name="v" type="var"> </argument> <description> - Inverse-transforms the given vector "v" by this transform. + Inverse-transforms the given [Vector2] or [Rect2] by this transform. </description> </method> </methods> diff --git a/doc/classes/Translation.xml b/doc/classes/Translation.xml index cb49c66383..53106f9c08 100644 --- a/doc/classes/Translation.xml +++ b/doc/classes/Translation.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Translation" inherits="Resource" category="Core" version="3.0-beta"> +<class name="Translation" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Language Translation. </brief_description> diff --git a/doc/classes/TranslationServer.xml b/doc/classes/TranslationServer.xml index c9b5b46525..5b61f46f96 100644 --- a/doc/classes/TranslationServer.xml +++ b/doc/classes/TranslationServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TranslationServer" inherits="Object" category="Core" version="3.0-beta"> +<class name="TranslationServer" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Server that manages all translations. Translations can be set to it and removed from it. </brief_description> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index 11bd3b3b86..09af7ee49a 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Tree" inherits="Control" category="Core" version="3.0-beta"> +<class name="Tree" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Control to show a tree of items. </brief_description> @@ -41,6 +41,8 @@ </return> <argument index="0" name="parent" type="Object" default="null"> </argument> + <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 parent is not given, it will be added as the root's last child, or it'll the be the root itself if the tree is empty. </description> @@ -52,20 +54,6 @@ Makes the currently selected item visible. This will scroll the tree to make sure the selected item is visible. </description> </method> - <method name="get_allow_reselect" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if a cell that is currently already selected may be selected again. - </description> - </method> - <method name="get_allow_rmb_select" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if a right click can select items. - </description> - </method> <method name="get_column_at_position" qualifiers="const"> <return type="int"> </return> @@ -93,13 +81,6 @@ Returns the column's width in pixels. </description> </method> - <method name="get_columns" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the amount of columns. - </description> - </method> <method name="get_custom_popup_rect" qualifiers="const"> <return type="Rect2"> </return> @@ -107,13 +88,6 @@ Returns the rectangle for custom popups. Helper to create custom cell controls that display a popup. See [method TreeItem.set_cell_mode]. </description> </method> - <method name="get_drop_mode_flags" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the current drop mode's flags. - </description> - </method> <method name="get_drop_section_at_position" qualifiers="const"> <return type="int"> </return> @@ -200,31 +174,6 @@ Returns the current selection's column. </description> </method> - <method name="is_folding_hidden" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if the folding arrow is hidden. - </description> - </method> - <method name="set_allow_reselect"> - <return type="void"> - </return> - <argument index="0" name="allow" type="bool"> - </argument> - <description> - If [code]true[/code] the currently selected cell may be selected again. - </description> - </method> - <method name="set_allow_rmb_select"> - <return type="void"> - </return> - <argument index="0" name="allow" type="bool"> - </argument> - <description> - If [code]true[/code] a right mouse button click can select items. - </description> - </method> <method name="set_column_expand"> <return type="void"> </return> @@ -267,52 +216,30 @@ If [code]true[/code] column titles are visible. </description> </method> - <method name="set_columns"> - <return type="void"> - </return> - <argument index="0" name="amount" type="int"> - </argument> - <description> - Set the amount of columns. - </description> - </method> - <method name="set_drop_mode_flags"> - <return type="void"> - </return> - <argument index="0" name="flags" type="int"> - </argument> - <description> - Set the drop mode as an OR combination of flags. See [code]DROP_MODE_*[/code] constants. - </description> - </method> - <method name="set_hide_folding"> - <return type="void"> - </return> - <argument index="0" name="hide" type="bool"> - </argument> - <description> - If [code]true[/code] the folding arrow is hidden. - </description> - </method> - <method name="set_hide_root"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If [code]true[/code] the tree's root is hidden. - </description> - </method> - <method name="set_select_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="Tree.SelectMode"> - </argument> - <description> - Allow single or multiple selection. See the [code]SELECT_*[/code] constants. - </description> - </method> </methods> + <members> + <member name="allow_reselect" type="bool" setter="set_allow_reselect" getter="get_allow_reselect"> + If [code]true[/code] the currently selected cell may be selected again. + </member> + <member name="allow_rmb_select" type="bool" setter="set_allow_rmb_select" getter="get_allow_rmb_select"> + If [code]true[/code] a right mouse button click can select items. + </member> + <member name="columns" type="int" setter="set_columns" getter="get_columns"> + The amount of columns. + </member> + <member name="drop_mode_flags" type="int" setter="set_drop_mode_flags" getter="get_drop_mode_flags"> + The drop mode as an OR combination of flags. See [code]DROP_MODE_*[/code] constants. + </member> + <member name="hide_folding" type="bool" setter="set_hide_folding" getter="is_folding_hidden"> + If [code]true[/code] the folding arrow is hidden. + </member> + <member name="hide_root" type="bool" setter="set_hide_root" getter="is_root_hidden"> + If [code]true[/code] the tree's root is hidden. + </member> + <member name="select_mode" type="int" setter="set_select_mode" getter="get_select_mode" enum="Tree.SelectMode"> + Allow single or multiple selection. See the [code]SELECT_*[/code] constants. + </member> + </members> <signals> <signal name="button_pressed"> <argument index="0" name="item" type="Object"> diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml index 421185fe51..c41cfac37c 100644 --- a/doc/classes/TreeItem.xml +++ b/doc/classes/TreeItem.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TreeItem" inherits="Object" category="Core" version="3.0-beta"> +<class name="TreeItem" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Control for a single item inside a [Tree]. </brief_description> @@ -111,13 +111,6 @@ Returns the custom background color of column [code]column[/code]. </description> </method> - <method name="get_custom_minimum_height" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the custom minimum height. - </description> - </method> <method name="get_expand_right" qualifiers="const"> <return type="bool"> </return> @@ -260,13 +253,6 @@ Returns [code]true[/code] if the given column is checked. </description> </method> - <method name="is_collapsed"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if this TreeItem is collapsed. - </description> - </method> <method name="is_custom_set_as_button" qualifiers="const"> <return type="bool"> </return> @@ -284,13 +270,6 @@ Returns [code]true[/code] if column [code]column[/code] is editable. </description> </method> - <method name="is_folding_disabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns [code]true[/code] if folding is disabled for this TreeItem. - </description> - </method> <method name="is_selectable" qualifiers="const"> <return type="bool"> </return> @@ -376,15 +355,6 @@ If [code]true[/code] the column [code]column[/code] is checked. </description> </method> - <method name="set_collapsed"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - If [code]true[/code] the TreeItem is collapsed. - </description> - </method> <method name="set_custom_as_button"> <return type="void"> </return> @@ -432,24 +402,6 @@ Sets the given column's custom draw callback to [code]callback[/code] method on [code]object[/code]. </description> </method> - <method name="set_custom_minimum_height"> - <return type="void"> - </return> - <argument index="0" name="height" type="int"> - </argument> - <description> - Sets the custom minimum height of this TreeItem. - </description> - </method> - <method name="set_disable_folding"> - <return type="void"> - </return> - <argument index="0" name="disable" type="bool"> - </argument> - <description> - If [code]true[/code] folding is disabled for this TreeItem. - </description> - </method> <method name="set_editable"> <return type="void"> </return> @@ -585,6 +537,17 @@ </description> </method> </methods> + <members> + <member name="collapsed" type="bool" setter="set_collapsed" getter="is_collapsed"> + If [code]true[/code] the TreeItem is collapsed. + </member> + <member name="custom_minimum_height" type="int" setter="set_custom_minimum_height" getter="get_custom_minimum_height"> + The custom minimum height. + </member> + <member name="disable_folding" type="bool" setter="set_disable_folding" getter="is_folding_disabled"> + If [code]true[/code] folding is disabled for this TreeItem. + </member> + </members> <constants> <constant name="CELL_MODE_STRING" value="0" enum="TreeCellMode"> Cell contains a string. diff --git a/doc/classes/TriangleMesh.xml b/doc/classes/TriangleMesh.xml index adc9e00536..0a4ea1fa8f 100644 --- a/doc/classes/TriangleMesh.xml +++ b/doc/classes/TriangleMesh.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="TriangleMesh" inherits="Reference" category="Core" version="3.0-beta"> +<class name="TriangleMesh" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml index a11580860a..d843c8341f 100644 --- a/doc/classes/Tween.xml +++ b/doc/classes/Tween.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Tween" inherits="Node" category="Core" version="3.0-beta"> +<class name="Tween" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Node useful for animations with unknown start and end points. </brief_description> @@ -78,13 +78,6 @@ Returns the time needed for all tweens to end in seconds, measured from the start. Thus, if you have two tweens, one ending 10 seconds after the start and the other - 20 seconds, it would return 20 seconds, as by that time all tweens would have finished. </description> </method> - <method name="get_speed_scale" qualifiers="const"> - <return type="float"> - </return> - <description> - Returns the speed that has been set from editor GUI or [method set_repeat]. - </description> - </method> <method name="interpolate_callback"> <return type="bool"> </return> @@ -186,13 +179,6 @@ Returns true if any tweens are currently running, and false otherwise. Note that this method doesn't consider tweens that have ended. </description> </method> - <method name="is_repeat" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns true if repeat has been set from editor GUI or [method set_repeat]. - </description> - </method> <method name="remove"> <return type="bool"> </return> @@ -265,24 +251,6 @@ Activate/deactivate the tween. You can use this for pausing animations, though [method stop_all] and [method resume_all] might be more fit for this. </description> </method> - <method name="set_repeat"> - <return type="void"> - </return> - <argument index="0" name="repeat" type="bool"> - </argument> - <description> - Make the tween repeat after all tweens have finished. - </description> - </method> - <method name="set_speed_scale"> - <return type="void"> - </return> - <argument index="0" name="speed" type="float"> - </argument> - <description> - Set the speed multiplier of the tween. Set it to 1 for normal speed, 2 for two times nromal speed, and 0.5 for half of the normal speed. Setting it to 0 would pause the animation, but you might consider using [method set_active] or [method stop_all] and [method resume_all] for this. - </description> - </method> <method name="start"> <return type="bool"> </return> @@ -371,12 +339,18 @@ <members> <member name="playback_process_mode" type="int" setter="set_tween_process_mode" getter="get_tween_process_mode" enum="Tween.TweenProcessMode"> </member> + <member name="playback_speed" type="float" setter="set_speed_scale" getter="get_speed_scale"> + The speed multiplier of the tween. Set it to 1 for normal speed, 2 for two times nromal speed, and 0.5 for half of the normal speed. Setting it to 0 would pause the animation, but you might consider using [method set_active] or [method stop_all] and [method resume_all] for this. + </member> + <member name="repeat" type="bool" setter="set_repeat" getter="is_repeat"> + If [code]true[/code], the tween will repeat. + </member> </members> <signals> <signal name="tween_completed"> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="NodePath"> </argument> <description> This signal is emitted when a tween ends. @@ -385,7 +359,7 @@ <signal name="tween_started"> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="NodePath"> </argument> <description> This signal is emitted when a tween starts. @@ -394,7 +368,7 @@ <signal name="tween_step"> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="key" type="NodePath"> </argument> <argument index="2" name="elapsed" type="float"> </argument> diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml index f0d69b9b7f..c95723e083 100644 --- a/doc/classes/UndoRedo.xml +++ b/doc/classes/UndoRedo.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="UndoRedo" inherits="Object" category="Core" version="3.0-beta"> +<class name="UndoRedo" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Helper to manage UndoRedo in the editor or custom tools. </brief_description> @@ -108,12 +108,6 @@ Get the name of the current action. </description> </method> - <method name="get_max_steps" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> <method name="get_version" qualifiers="const"> <return type="int"> </return> @@ -128,14 +122,6 @@ <description> </description> </method> - <method name="set_max_steps"> - <return type="void"> - </return> - <argument index="0" name="max_steps" type="int"> - </argument> - <description> - </description> - </method> <method name="undo"> <return type="void"> </return> diff --git a/doc/classes/VBoxContainer.xml b/doc/classes/VBoxContainer.xml index 7c943d5e5d..f92335eef1 100644 --- a/doc/classes/VBoxContainer.xml +++ b/doc/classes/VBoxContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VBoxContainer" inherits="BoxContainer" category="Core" version="3.0-beta"> +<class name="VBoxContainer" inherits="BoxContainer" category="Core" version="3.0-stable"> <brief_description> Vertical box container. </brief_description> diff --git a/doc/classes/VScrollBar.xml b/doc/classes/VScrollBar.xml index 23ded3a4b7..d533db98be 100644 --- a/doc/classes/VScrollBar.xml +++ b/doc/classes/VScrollBar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VScrollBar" inherits="ScrollBar" category="Core" version="3.0-beta"> +<class name="VScrollBar" inherits="ScrollBar" category="Core" version="3.0-stable"> <brief_description> Vertical version of [ScrollBar], which goes from left (min) to right (max). </brief_description> diff --git a/doc/classes/VSeparator.xml b/doc/classes/VSeparator.xml index 931560855b..c6082a905d 100644 --- a/doc/classes/VSeparator.xml +++ b/doc/classes/VSeparator.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VSeparator" inherits="Separator" category="Core" version="3.0-beta"> +<class name="VSeparator" inherits="Separator" category="Core" version="3.0-stable"> <brief_description> Vertical version of [Separator]. </brief_description> diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml index ed8940ed4e..b91c8a7c2a 100644 --- a/doc/classes/VSlider.xml +++ b/doc/classes/VSlider.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VSlider" inherits="Slider" category="Core" version="3.0-beta"> +<class name="VSlider" inherits="Slider" category="Core" version="3.0-stable"> <brief_description> Vertical slider. </brief_description> diff --git a/doc/classes/VSplitContainer.xml b/doc/classes/VSplitContainer.xml index 22f6bb449b..e6e6e189e8 100644 --- a/doc/classes/VSplitContainer.xml +++ b/doc/classes/VSplitContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VSplitContainer" inherits="SplitContainer" category="Core" version="3.0-beta"> +<class name="VSplitContainer" inherits="SplitContainer" category="Core" version="3.0-stable"> <brief_description> Vertical split container. </brief_description> diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml index 12cbd276a1..f27f358015 100644 --- a/doc/classes/Variant.xml +++ b/doc/classes/Variant.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Variant" category="Core" version="3.0-beta"> +<class name="Variant" category="Core" version="3.0-stable"> <brief_description> The most important data type in Godot. </brief_description> diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml index 976cdbbd90..6a87bbf66c 100644 --- a/doc/classes/Vector2.xml +++ b/doc/classes/Vector2.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Vector2" category="Built-In Types" version="3.0-beta"> +<class name="Vector2" category="Built-In Types" version="3.0-stable"> <brief_description> Vector used for 2D Math. </brief_description> @@ -7,6 +7,7 @@ 2-element structure that can be used to represent positions in 2d-space, or any other pair of numeric values. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/math/index.html </tutorials> <demos> </demos> @@ -92,7 +93,7 @@ <argument index="3" name="t" type="float"> </argument> <description> - Cubicly interpolates between this Vector and "b", using "pre_a" and "post_b" as handles, and returning the result at position "t". + Cubicly interpolates between this Vector and "b", using "pre_a" and "post_b" as handles, and returning the result at position "t". "t" should be a float of 0.0-1.0, a percentage of how far along the interpolation is. </description> </method> <method name="distance_squared_to"> @@ -158,7 +159,7 @@ <argument index="1" name="t" type="float"> </argument> <description> - Returns the result of the linear interpolation between this vector and "b", by amount "t". + Returns the result of the linear interpolation between this vector and "b", by amount "t". "t" should be a float of 0.0-1.0, a percentage of how far along the interpolation is. </description> </method> <method name="normalized"> diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml index acb41297a7..050285af02 100644 --- a/doc/classes/Vector3.xml +++ b/doc/classes/Vector3.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Vector3" category="Built-In Types" version="3.0-beta"> +<class name="Vector3" category="Built-In Types" version="3.0-stable"> <brief_description> Vector class, which performs basic 3D vector math operations. </brief_description> @@ -7,6 +7,7 @@ Vector3 is one of the core classes of the engine, and includes several built-in helper functions to perform basic vector math operations. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/math/index.html </tutorials> <demos> </demos> @@ -77,7 +78,7 @@ <argument index="3" name="t" type="float"> </argument> <description> - Performs a cubic interpolation between vectors [code]pre_a[/code], [code]a[/code], [code]b[/code], [code]post_b[/code] ([code]a[/code] is current), by the given amount (t). + Performs a cubic interpolation between vectors [code]pre_a[/code], [code]a[/code], [code]b[/code], [code]post_b[/code] ([code]a[/code] is current), by the given amount (t). (t) should be a float of 0.0-1.0, a percentage of how far along the interpolation is. </description> </method> <method name="distance_squared_to"> @@ -150,7 +151,7 @@ <argument index="1" name="t" type="float"> </argument> <description> - Linearly interpolates the vector to a given one (b), by the given amount (t). + Linearly interpolates the vector to a given one (b), by the given amount (t). (t) should be a float of 0.0-1.0, a percentage of how far along the interpolation is. </description> </method> <method name="max_axis"> diff --git a/doc/classes/VehicleBody.xml b/doc/classes/VehicleBody.xml index 77916a7e9f..fe58806344 100644 --- a/doc/classes/VehicleBody.xml +++ b/doc/classes/VehicleBody.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VehicleBody" inherits="PhysicsBody" category="Core" version="3.0-beta"> +<class name="VehicleBody" inherits="RigidBody" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,27 +9,12 @@ <demos> </demos> <methods> - <method name="get_linear_velocity" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - Returns the VehicleBody's velocity vector. To get the absolute speed in scalar value, get the length of the return vector in pixels/second. Example: - [codeblock] - # vehicle is an instance of VehicleBody - var speed = vehicle.get_linear_velocity().length() - [/codeblock] - </description> - </method> </methods> <members> <member name="brake" type="float" setter="set_brake" getter="get_brake"> </member> <member name="engine_force" type="float" setter="set_engine_force" getter="get_engine_force"> </member> - <member name="friction" type="float" setter="set_friction" getter="get_friction"> - </member> - <member name="mass" type="float" setter="set_mass" getter="get_mass"> - </member> <member name="steering" type="float" setter="set_steering" getter="get_steering"> </member> </members> diff --git a/doc/classes/VehicleWheel.xml b/doc/classes/VehicleWheel.xml index 7c384886cb..e36a1abe9d 100644 --- a/doc/classes/VehicleWheel.xml +++ b/doc/classes/VehicleWheel.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VehicleWheel" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="VehicleWheel" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/VideoPlayer.xml b/doc/classes/VideoPlayer.xml index 281dc1f071..55755ca5df 100644 --- a/doc/classes/VideoPlayer.xml +++ b/doc/classes/VideoPlayer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VideoPlayer" inherits="Control" category="Core" version="3.0-beta"> +<class name="VideoPlayer" inherits="Control" category="Core" version="3.0-stable"> <brief_description> Control to play video files. </brief_description> @@ -11,13 +11,6 @@ <demos> </demos> <methods> - <method name="get_buffering_msec" qualifiers="const"> - <return type="int"> - </return> - <description> - Get the amount of milliseconds to store in buffer while playing. - </description> - </method> <method name="get_stream_name" qualifiers="const"> <return type="String"> </return> @@ -25,13 +18,6 @@ Get the name of the video stream. </description> </method> - <method name="get_stream_position" qualifiers="const"> - <return type="float"> - </return> - <description> - Get the current position of the stream, in seconds. - </description> - </method> <method name="get_video_texture"> <return type="Texture"> </return> @@ -39,13 +25,6 @@ Get the current frame of the video as a [Texture]. </description> </method> - <method name="get_volume" qualifiers="const"> - <return type="float"> - </return> - <description> - Get the volume of the audio track as a linear value. - </description> - </method> <method name="is_playing" qualifiers="const"> <return type="bool"> </return> @@ -60,33 +39,6 @@ Start the video playback. </description> </method> - <method name="set_buffering_msec"> - <return type="void"> - </return> - <argument index="0" name="msec" type="int"> - </argument> - <description> - Set the amount of milliseconds to buffer during playback. - </description> - </method> - <method name="set_stream_position"> - <return type="void"> - </return> - <argument index="0" name="position" type="float"> - </argument> - <description> - Set the current position of the stream, in seconds. - </description> - </method> - <method name="set_volume"> - <return type="void"> - </return> - <argument index="0" name="volume" type="float"> - </argument> - <description> - Set the audio volume as a linear value. - </description> - </method> <method name="stop"> <return type="void"> </return> @@ -100,6 +52,9 @@ </member> <member name="autoplay" type="bool" setter="set_autoplay" getter="has_autoplay"> </member> + <member name="buffering_msec" type="int" setter="set_buffering_msec" getter="get_buffering_msec"> + The amount of milliseconds to store in buffer while playing. + </member> <member name="bus" type="String" setter="set_bus" getter="get_bus"> </member> <member name="expand" type="bool" setter="set_expand" getter="has_expand"> @@ -108,6 +63,12 @@ </member> <member name="stream" type="VideoStream" setter="set_stream" getter="get_stream"> </member> + <member name="stream_position" type="float" setter="set_stream_position" getter="get_stream_position"> + The current position of the stream, in seconds. + </member> + <member name="volume" type="float" setter="set_volume" getter="get_volume"> + The volume of the audio track as a linear value. + </member> <member name="volume_db" type="float" setter="set_volume_db" getter="get_volume_db"> </member> </members> diff --git a/doc/classes/VideoStream.xml b/doc/classes/VideoStream.xml index 9f0d9afa43..a4e4ee3452 100644 --- a/doc/classes/VideoStream.xml +++ b/doc/classes/VideoStream.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VideoStream" inherits="Resource" category="Core" version="3.0-beta"> +<class name="VideoStream" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml index ad3903d549..0698a61529 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Viewport" inherits="Node" category="Core" version="3.0-beta"> +<class name="Viewport" inherits="Node" category="Core" version="3.0-stable"> <brief_description> Creates a sub-view into the screen. </brief_description> @@ -12,6 +12,8 @@ Finally, viewports can also behave as render targets, in which case they will not be visible unless the associated texture is used to draw. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html + http://docs.godotengine.org/en/3.0/tutorials/viewports/index.html </tutorials> <demos> </demos> @@ -37,13 +39,6 @@ Return the active 3D camera. </description> </method> - <method name="get_canvas_transform" qualifiers="const"> - <return type="Transform2D"> - </return> - <description> - Get the canvas transform of the viewport. - </description> - </method> <method name="get_final_transform" qualifiers="const"> <return type="Transform2D"> </return> @@ -51,13 +46,6 @@ Get the total transform of the viewport. </description> </method> - <method name="get_global_canvas_transform" qualifiers="const"> - <return type="Transform2D"> - </return> - <description> - Get the global canvas transform of the viewport. - </description> - </method> <method name="get_mouse_position" qualifiers="const"> <return type="Vector2"> </return> @@ -71,6 +59,7 @@ <argument index="0" name="info" type="int" enum="Viewport.RenderInfo"> </argument> <description> + Get the specific information about the viewport from rendering pipeline. </description> </method> <method name="get_size_override" qualifiers="const"> @@ -101,13 +90,6 @@ Return the final, visible rect in global screen coordinates. </description> </method> - <method name="get_world_2d" qualifiers="const"> - <return type="World2D"> - </return> - <description> - Return the 2D world of the viewport. - </description> - </method> <method name="gui_get_drag_data" qualifiers="const"> <return type="Variant"> </return> @@ -152,24 +134,6 @@ <description> </description> </method> - <method name="set_canvas_transform"> - <return type="void"> - </return> - <argument index="0" name="xform" type="Transform2D"> - </argument> - <description> - Set the canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport. - </description> - </method> - <method name="set_global_canvas_transform"> - <return type="void"> - </return> - <argument index="0" name="xform" type="Transform2D"> - </argument> - <description> - Set the global canvas transform of the viewport. The canvas transform is relative to this. - </description> - </method> <method name="set_size_override"> <return type="void"> </return> @@ -192,14 +156,6 @@ Set whether the size override affects stretch as well. </description> </method> - <method name="set_world_2d"> - <return type="void"> - </return> - <argument index="0" name="world_2d" type="World2D"> - </argument> - <description> - </description> - </method> <method name="unhandled_input"> <return type="void"> </return> @@ -227,50 +183,82 @@ </methods> <members> <member name="arvr" type="bool" setter="set_use_arvr" getter="use_arvr"> + If [code]true[/code] the viewport will be used in AR/VR process. Default value: [code]false[/code]. </member> <member name="audio_listener_enable_2d" type="bool" setter="set_as_audio_listener_2d" getter="is_audio_listener_2d"> + If [code]true[/code] the viewport will process 2D audio streams. Default value: [code]false[/code]. </member> <member name="audio_listener_enable_3d" type="bool" setter="set_as_audio_listener" getter="is_audio_listener"> + If [code]true[/code] the viewport will process 3D audio streams. Default value: [code]false[/code]. + </member> + <member name="canvas_transform" type="Transform2D" setter="set_canvas_transform" getter="get_canvas_transform"> + The canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport. </member> <member name="debug_draw" type="int" setter="set_debug_draw" getter="get_debug_draw" enum="Viewport.DebugDraw"> + The overlay mode for test rendered geometry in debug purposes. Default value: [code]DEBUG_DRAW_DISABLED[/code]. </member> <member name="disable_3d" type="bool" setter="set_disable_3d" getter="is_3d_disabled"> + If [code]true[/code] the viewport will disable 3D rendering. For actual disabling use [code]usage[/code]. Default value: [code]false[/code]. + </member> + <member name="global_canvas_transform" type="Transform2D" setter="set_global_canvas_transform" getter="get_global_canvas_transform"> + The global canvas transform of the viewport. The canvas transform is relative to this. </member> <member name="gui_disable_input" type="bool" setter="set_disable_input" getter="is_input_disabled"> + If [code]true[/code] the viewport will not receive input event. Default value: [code]false[/code]. </member> <member name="gui_snap_controls_to_pixels" type="bool" setter="set_snap_controls_to_pixels" getter="is_snap_controls_to_pixels_enabled"> + If [code]true[/code] the GUI controls on the viewport will lay pixel perfectly. Default value: [code]true[/code]. </member> <member name="hdr" type="bool" setter="set_hdr" getter="get_hdr"> + If [code]true[/code] the viewport rendering will receive benefits from High Dynamic Range algorithm. Default value: [code]true[/code]. </member> <member name="msaa" type="int" setter="set_msaa" getter="get_msaa" enum="Viewport.MSAA"> + The multisample anti-aliasing mode. Default value: [code]MSAA_DISABLED[/code]. </member> <member name="own_world" type="bool" setter="set_use_own_world" getter="is_using_own_world"> + If [code]true[/code] the viewport will use [World] defined in [code]world[/code] property. Default value: [code]false[/code]. </member> <member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking"> + If [code]true[/code] the objects rendered by viewport become subjects of mouse picking process. Default value: [code]false[/code]. </member> <member name="render_target_clear_mode" type="int" setter="set_clear_mode" getter="get_clear_mode" enum="Viewport.ClearMode"> + The clear mode when viewport used as a render target. Default value: [code]CLEAR_MODE_ALWAYS[/code]. </member> <member name="render_target_update_mode" type="int" setter="set_update_mode" getter="get_update_mode" enum="Viewport.UpdateMode"> + The update mode when viewport used as a render target. Default value: [code]UPDATE_WHEN_VISIBLE[/code]. </member> <member name="render_target_v_flip" type="bool" setter="set_vflip" getter="get_vflip"> + If [code]true[/code] the result of rendering will be flipped vertically. Default value: [code]false[/code]. </member> <member name="shadow_atlas_quad_0" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv"> + The subdivision amount of first quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_4[/code]. </member> <member name="shadow_atlas_quad_1" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv"> + The subdivision amount of second quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_4[/code]. </member> <member name="shadow_atlas_quad_2" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv"> + The subdivision amount of third quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_16[/code]. </member> <member name="shadow_atlas_quad_3" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv"> + The subdivision amount of fourth quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_64[/code]. </member> <member name="shadow_atlas_size" type="int" setter="set_shadow_atlas_size" getter="get_shadow_atlas_size"> + The resolution of shadow atlas. Both width and height is equal to one value. </member> <member name="size" type="Vector2" setter="set_size" getter="get_size"> + The width and height of viewport. </member> <member name="transparent_bg" type="bool" setter="set_transparent_background" getter="has_transparent_background"> + If [code]true[/code] the viewport should render its background as transparent. Default value: [code]false[/code]. </member> <member name="usage" type="int" setter="set_usage" getter="get_usage" enum="Viewport.Usage"> + The rendering mode of viewport. Default value: [code]USAGE_3D[/code]. </member> <member name="world" type="World" setter="set_world" getter="get_world"> + The custom [World] which can be used as 3D environment source. + </member> + <member name="world_2d" type="World2D" setter="set_world_2d" getter="get_world_2d"> + The custom [World2D] which can be used as 2D environment source. </member> </members> <signals> @@ -291,6 +279,7 @@ Update the render target only when it is visible. This is the default value. </constant> <constant name="UPDATE_ALWAYS" value="3" enum="UpdateMode"> + Always update the render target. </constant> <constant name="SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED" value="0" enum="ShadowAtlasQuadrantSubdiv"> </constant> @@ -307,30 +296,42 @@ <constant name="SHADOW_ATLAS_QUADRANT_SUBDIV_1024" value="6" enum="ShadowAtlasQuadrantSubdiv"> </constant> <constant name="SHADOW_ATLAS_QUADRANT_SUBDIV_MAX" value="7" enum="ShadowAtlasQuadrantSubdiv"> + Enum limiter. Do not use it directly. </constant> <constant name="RENDER_INFO_OBJECTS_IN_FRAME" value="0" enum="RenderInfo"> + Amount of objects in frame. </constant> <constant name="RENDER_INFO_VERTICES_IN_FRAME" value="1" enum="RenderInfo"> + Amount of vertices in frame. </constant> <constant name="RENDER_INFO_MATERIAL_CHANGES_IN_FRAME" value="2" enum="RenderInfo"> + Amount of material changes in frame. </constant> <constant name="RENDER_INFO_SHADER_CHANGES_IN_FRAME" value="3" enum="RenderInfo"> + Amount of shader changes in frame. </constant> <constant name="RENDER_INFO_SURFACE_CHANGES_IN_FRAME" value="4" enum="RenderInfo"> + Amount of surface changes in frame. </constant> <constant name="RENDER_INFO_DRAW_CALLS_IN_FRAME" value="5" enum="RenderInfo"> + Amount of draw calls in frame. </constant> <constant name="RENDER_INFO_MAX" value="6" enum="RenderInfo"> + Enum limiter. Do not use it directly. </constant> <constant name="DEBUG_DRAW_DISABLED" value="0" enum="DebugDraw"> + Objects are displayed normally. </constant> <constant name="DEBUG_DRAW_UNSHADED" value="1" enum="DebugDraw"> + Objects are displayed without light information. </constant> <constant name="DEBUG_DRAW_OVERDRAW" value="2" enum="DebugDraw"> </constant> <constant name="DEBUG_DRAW_WIREFRAME" value="3" enum="DebugDraw"> + Objects are displayed in wireframe style. </constant> <constant name="MSAA_DISABLED" value="0" enum="MSAA"> + Multisample anti-aliasing mode disabled. This is the default value. </constant> <constant name="MSAA_2X" value="1" enum="MSAA"> </constant> diff --git a/doc/classes/ViewportContainer.xml b/doc/classes/ViewportContainer.xml index 19d4e462c9..a2cd9a0217 100644 --- a/doc/classes/ViewportContainer.xml +++ b/doc/classes/ViewportContainer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ViewportContainer" inherits="Container" category="Core" version="3.0-beta"> +<class name="ViewportContainer" inherits="Container" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/ViewportTexture.xml b/doc/classes/ViewportTexture.xml index e6a2b212bf..5943759c55 100644 --- a/doc/classes/ViewportTexture.xml +++ b/doc/classes/ViewportTexture.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ViewportTexture" inherits="Texture" category="Core" version="3.0-beta"> +<class name="ViewportTexture" inherits="Texture" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/VisibilityEnabler.xml b/doc/classes/VisibilityEnabler.xml index 67137e1408..faf0451bae 100644 --- a/doc/classes/VisibilityEnabler.xml +++ b/doc/classes/VisibilityEnabler.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisibilityEnabler" inherits="VisibilityNotifier" category="Core" version="3.0-beta"> +<class name="VisibilityEnabler" inherits="VisibilityNotifier" category="Core" version="3.0-stable"> <brief_description> Enable certain nodes only when visible. </brief_description> diff --git a/doc/classes/VisibilityEnabler2D.xml b/doc/classes/VisibilityEnabler2D.xml index 45e15eb4b3..acd9d86c2a 100644 --- a/doc/classes/VisibilityEnabler2D.xml +++ b/doc/classes/VisibilityEnabler2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisibilityEnabler2D" inherits="VisibilityNotifier2D" category="Core" version="3.0-beta"> +<class name="VisibilityEnabler2D" inherits="VisibilityNotifier2D" category="Core" version="3.0-stable"> <brief_description> Enable certain nodes only when visible. </brief_description> diff --git a/doc/classes/VisibilityNotifier.xml b/doc/classes/VisibilityNotifier.xml index 9e1c326633..94b08b78ed 100644 --- a/doc/classes/VisibilityNotifier.xml +++ b/doc/classes/VisibilityNotifier.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisibilityNotifier" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="VisibilityNotifier" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Detects when the node is visible on screen. </brief_description> diff --git a/doc/classes/VisibilityNotifier2D.xml b/doc/classes/VisibilityNotifier2D.xml index 327812db23..bcd52cf9ca 100644 --- a/doc/classes/VisibilityNotifier2D.xml +++ b/doc/classes/VisibilityNotifier2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisibilityNotifier2D" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="VisibilityNotifier2D" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Detects when the node is visible on screen. </brief_description> diff --git a/doc/classes/VisualInstance.xml b/doc/classes/VisualInstance.xml index bd66880719..1c54cb53ac 100644 --- a/doc/classes/VisualInstance.xml +++ b/doc/classes/VisualInstance.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualInstance" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="VisualInstance" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml index 0cba132de8..a546b86c57 100644 --- a/doc/classes/VisualServer.xml +++ b/doc/classes/VisualServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualServer" inherits="Object" category="Core" version="3.0-beta"> +<class name="VisualServer" inherits="Object" category="Core" version="3.0-stable"> <brief_description> Server for anything visible. </brief_description> @@ -204,7 +204,7 @@ <argument index="4" name="antialiased" type="bool" default="false"> </argument> <description> - Adds a polyline, which is a line from mutliple points with a width, to the [CanvasItem]'s draw commands. + Adds a polyline, which is a line from multiple points with a width, to the [CanvasItem]'s draw commands. </description> </method> <method name="canvas_item_add_primitive"> @@ -504,26 +504,26 @@ Sets if the canvas item (including its children) is visible. </description> </method> - <method name="canvas_item_set_z"> + <method name="canvas_item_set_z_as_relative_to_parent"> <return type="void"> </return> <argument index="0" name="item" type="RID"> </argument> - <argument index="1" name="z" type="int"> + <argument index="1" name="enabled" type="bool"> </argument> <description> - Sets the [CanvasItem]'s z order position. + If this is enabled, the z-index of the parent will be added to the children's z-index. </description> </method> - <method name="canvas_item_set_z_as_relative_to_parent"> + <method name="canvas_item_set_z_index"> <return type="void"> </return> <argument index="0" name="item" type="RID"> </argument> - <argument index="1" name="enabled" type="bool"> + <argument index="1" name="z_index" type="int"> </argument> <description> - If this is enabled, the z-position of the parent will be added to the childrens z-position. + Sets the [CanvasItem]'s z-index, i.e. its draw order (lower indexes are drawn first). </description> </method> <method name="canvas_light_attach_to_canvas"> @@ -669,7 +669,7 @@ <argument index="1" name="mask" type="int"> </argument> <description> - The shadow mask. binary about wich layers this canvas light affects wich canvas item's shadows. See [LightOccluder2D] for more information on light masks. + The shadow mask. binary about which layers this canvas light affects which canvas item's shadows. See [LightOccluder2D] for more information on light masks. </description> </method> <method name="canvas_light_set_layer_range"> @@ -913,7 +913,7 @@ Syncronizes threads. </description> </method> - <method name="free"> + <method name="free_rid"> <return type="void"> </return> <argument index="0" name="rid" type="RID"> @@ -1506,7 +1506,7 @@ <argument index="1" name="cube_side" type="int" enum="VisualServer.CubeMapSide" default="0"> </argument> <description> - Returns a copy of a texture's image unless it's a CubeMap, in wich case it returns the [RID] of the image at one of the cubes sides. + Returns a copy of a texture's image unless it's a CubeMap, in which case it returns the [RID] of the image at one of the cubes sides. </description> </method> <method name="texture_get_flags" qualifiers="const"> @@ -2155,10 +2155,10 @@ Primitive to draw consists of triangles. </constant> <constant name="PRIMITIVE_TRIANGLE_STRIP" value="5" enum="PrimitiveType"> - Primitive to draw consists of a triangle strip (the last 3 verticies are always combined to make a triangle). + Primitive to draw consists of a triangle strip (the last 3 vertices are always combined to make a triangle). </constant> <constant name="PRIMITIVE_TRIANGLE_FAN" value="6" enum="PrimitiveType"> - Primitive to draw consists of a triangle strip (the last 2 verticies are always combined with the first to make a triangle). + Primitive to draw consists of a triangle strip (the last 2 vertices are always combined with the first to make a triangle). </constant> <constant name="PRIMITIVE_MAX" value="7" enum="PrimitiveType"> Marks the primitive types endpoint. used internally. diff --git a/doc/classes/WeakRef.xml b/doc/classes/WeakRef.xml index 0641dc1349..0c4801b66e 100644 --- a/doc/classes/WeakRef.xml +++ b/doc/classes/WeakRef.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="WeakRef" inherits="Reference" category="Core" version="3.0-beta"> +<class name="WeakRef" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Holds an [Object], but does not contribute to the reference count if the object is a reference. </brief_description> diff --git a/doc/classes/WindowDialog.xml b/doc/classes/WindowDialog.xml index 5bdcfe238d..891e489be5 100644 --- a/doc/classes/WindowDialog.xml +++ b/doc/classes/WindowDialog.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="WindowDialog" inherits="Popup" category="Core" version="3.0-beta"> +<class name="WindowDialog" inherits="Popup" category="Core" version="3.0-stable"> <brief_description> Base class for window dialogs. </brief_description> diff --git a/doc/classes/World.xml b/doc/classes/World.xml index 9011d39669..cad286a1ac 100644 --- a/doc/classes/World.xml +++ b/doc/classes/World.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="World" inherits="Resource" category="Core" version="3.0-beta"> +<class name="World" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Class that has everything pertaining to a world. </brief_description> @@ -7,39 +7,28 @@ Class that has everything pertaining to a world. A physics space, a visual scenario and a sound space. Spatial nodes register their resources into the current world. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html </tutorials> <demos> </demos> <methods> - <method name="get_direct_space_state"> - <return type="PhysicsDirectSpaceState"> - </return> - <description> - Returns the World's physics space. - </description> - </method> - <method name="get_scenario" qualifiers="const"> - <return type="RID"> - </return> - <description> - Returns the World's visual scenario. - </description> - </method> - <method name="get_space" qualifiers="const"> - <return type="RID"> - </return> - <description> - Returns the World's sound space. - </description> - </method> </methods> <members> + <member name="direct_space_state" type="PhysicsDirectSpaceState" setter="" getter="get_direct_space_state"> + The World's physics direct space state, used for making various queries. Might be used only during [code]_physics_process[/code]. + </member> <member name="environment" type="Environment" setter="set_environment" getter="get_environment"> The World's [Environment]. </member> <member name="fallback_environment" type="Environment" setter="set_fallback_environment" getter="get_fallback_environment"> The World's fallback_environment will be used if the World's [Environment] fails or is missing. </member> + <member name="scenario" type="RID" setter="" getter="get_scenario"> + The World's visual scenario. + </member> + <member name="space" type="RID" setter="" getter="get_space"> + The World's physics space. + </member> </members> <constants> </constants> diff --git a/doc/classes/World2D.xml b/doc/classes/World2D.xml index 93c88968ac..1a2745e6cb 100644 --- a/doc/classes/World2D.xml +++ b/doc/classes/World2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="World2D" inherits="Resource" category="Core" version="3.0-beta"> +<class name="World2D" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> Class that has everything pertaining to a 2D world. </brief_description> @@ -7,32 +7,23 @@ Class that has everything pertaining to a 2D world. A physics space, a visual scenario and a sound space. 2D nodes register their resources into the current 2D world. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html </tutorials> <demos> </demos> <methods> - <method name="get_canvas"> - <return type="RID"> - </return> - <description> - Retrieve the [RID] of this world's canvas resource. Used by the [VisualServer] for 2D drawing. - </description> - </method> - <method name="get_direct_space_state"> - <return type="Physics2DDirectSpaceState"> - </return> - <description> - Retrieve the state of this world's physics space. This allows arbitrary querying for collision. - </description> - </method> - <method name="get_space"> - <return type="RID"> - </return> - <description> - Retrieve the [RID] of this world's physics space resource. Used by the [Physics2DServer] for 2D physics, treating it as both a space and an area. - </description> - </method> </methods> + <members> + <member name="canvas" type="RID" setter="" getter="get_canvas"> + The [RID] of this world's canvas resource. Used by the [VisualServer] for 2D drawing. + </member> + <member name="direct_space_state" type="Physics2DDirectSpaceState" setter="" getter="get_direct_space_state"> + The state of this world's physics space. This allows arbitrary querying for collision. + </member> + <member name="space" type="RID" setter="" getter="get_space"> + The [RID] of this world's physics space resource. Used by the [Physics2DServer] for 2D physics, treating it as both a space and an area. + </member> + </members> <constants> </constants> </class> diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml index 44f2086e51..468e618e72 100644 --- a/doc/classes/WorldEnvironment.xml +++ b/doc/classes/WorldEnvironment.xml @@ -1,12 +1,15 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="WorldEnvironment" inherits="Node" category="Core" version="3.0-beta"> +<class name="WorldEnvironment" inherits="Node" category="Core" version="3.0-stable"> <brief_description> - Sets environment properties for the entire scene + Default environment properties for the entire scene (post-processing effects, lightning and background settings). </brief_description> <description> - The [code]WorldEnvironment[/code] node can be added to a scene in order to set default [Environment] variables for the scene. The [code]WorldEnvironment[/code] can be overridden by an [Environment] node set on the current [Camera]. Additionally, only one [code]WorldEnvironment[/code] may be instanced in a given scene at a time. The [code]WorldEnvironment[/code] allows the user to specify default lighting parameters (e.g. ambient lighting), various post-processing effects (e.g. SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, skybox). + The [code]WorldEnvironment[/code] node is used to configure the default [Environment] for the scene. + The parameters defined in the [code]WorldEnvironment[/code] can be overridden by an [Environment] node set on the current [Camera]. Additionally, only one [code]WorldEnvironment[/code] may be instanced in a given scene at a time. + The [code]WorldEnvironment[/code] allows the user to specify default lighting parameters (e.g. ambient lighting), various post-processing effects (e.g. SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, skybox). Usually, these are added in order to improve the realism/color balance of the scene. </description> <tutorials> + http://docs.godotengine.org/en/3.0/tutorials/3d/environment_and_post_processing.html </tutorials> <demos> </demos> @@ -14,6 +17,7 @@ </methods> <members> <member name="environment" type="Environment" setter="set_environment" getter="get_environment"> + The [Environment] resource used by this [code]WorldEnvironment[/code], defining the default properties. </member> </members> <constants> diff --git a/doc/classes/XMLParser.xml b/doc/classes/XMLParser.xml index 2665e594e0..a404074401 100644 --- a/doc/classes/XMLParser.xml +++ b/doc/classes/XMLParser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="XMLParser" inherits="Reference" category="Core" version="3.0-beta"> +<class name="XMLParser" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Low-level class for creating parsers for XML files. </brief_description> diff --git a/doc/classes/YSort.xml b/doc/classes/YSort.xml index b1a8980141..e4818df62b 100644 --- a/doc/classes/YSort.xml +++ b/doc/classes/YSort.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="YSort" inherits="Node2D" category="Core" version="3.0-beta"> +<class name="YSort" inherits="Node2D" category="Core" version="3.0-stable"> <brief_description> Sort all child nodes based on their Y positions. </brief_description> diff --git a/doc/classes/bool.xml b/doc/classes/bool.xml index 2437d53bda..cce5dd3b45 100644 --- a/doc/classes/bool.xml +++ b/doc/classes/bool.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="bool" category="Built-In Types" version="3.0-beta"> +<class name="bool" category="Built-In Types" version="3.0-stable"> <brief_description> Boolean built-in type </brief_description> diff --git a/doc/classes/float.xml b/doc/classes/float.xml index e7c46beb37..812bd9b3a9 100644 --- a/doc/classes/float.xml +++ b/doc/classes/float.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="float" category="Built-In Types" version="3.0-beta"> +<class name="float" category="Built-In Types" version="3.0-stable"> <brief_description> Float built-in type </brief_description> diff --git a/doc/classes/int.xml b/doc/classes/int.xml index a59bce0309..49b8b3949a 100644 --- a/doc/classes/int.xml +++ b/doc/classes/int.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="int" category="Built-In Types" version="3.0-beta"> +<class name="int" category="Built-In Types" version="3.0-stable"> <brief_description> Integer built-in type. </brief_description> diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py index cd0108019b..492f3b6d54 100644 --- a/doc/tools/makerst.py +++ b/doc/tools/makerst.py @@ -276,6 +276,15 @@ def make_type(t): return ':ref:`' + t + '<class_' + t.lower() + '>`' return t +def make_enum(t): + global class_names + p = t.find(".") + if p >= 0: + c = t[0:p] + e = t[p+1:] + if c in class_names: + return ':ref:`' + e + '<enum_' + c.lower() + '_' + e.lower() + '>`' + return t def make_method( f, @@ -470,7 +479,10 @@ def make_rst_class(node): # Leading two spaces necessary to prevent breaking the <ul> f.write(" .. _class_" + name + "_" + c.attrib['name'] + ":\n\n") s = '- ' - s += make_type(c.attrib['type']) + ' ' + if 'enum' in c.attrib: + s += make_enum(c.attrib['enum']) + ' ' + else: + s += make_type(c.attrib['type']) + ' ' s += '**' + c.attrib['name'] + '**' if c.text.strip() != '': s += ' - ' + rstize_text(c.text.strip(), name) @@ -478,9 +490,20 @@ def make_rst_class(node): f.write('\n') constants = node.find('constants') + consts = [] + enum_names = set() + enums = [] if constants != None and len(list(constants)) > 0: - f.write(make_heading('Numeric Constants', '-')) for c in list(constants): + if 'enum' in c.attrib: + enum_names.add(c.attrib['enum']) + enums.append(c) + else: + consts.append(c) + + if len(consts) > 0: + f.write(make_heading('Numeric Constants', '-')) + for c in list(consts): s = '- ' s += '**' + c.attrib['name'] + '**' if 'value' in c.attrib: @@ -489,6 +512,24 @@ def make_rst_class(node): s += ' --- ' + rstize_text(c.text.strip(), name) f.write(s + '\n') f.write('\n') + + if len(enum_names) > 0: + f.write(make_heading('Enums', '-')) + for e in enum_names: + f.write(" .. _enum_" + name + "_" + e + ":\n\n") + f.write("enum **" + e + "**\n\n") + for c in enums: + if c.attrib['enum'] != e: + continue + s = '- ' + s += '**' + c.attrib['name'] + '**' + if 'value' in c.attrib: + s += ' = **' + c.attrib['value'] + '**' + if c.text.strip() != '': + s += ' --- ' + rstize_text(c.text.strip(), name) + f.write(s + '\n') + f.write('\n') + f.write('\n') descr = node.find('description') if descr != None and descr.text.strip() != '': diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp index b54a1ce0fc..0bb03d23ea 100644 --- a/drivers/alsa/audio_driver_alsa.cpp +++ b/drivers/alsa/audio_driver_alsa.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_alsa.h" #ifdef ALSA_ENABLED diff --git a/drivers/alsa/audio_driver_alsa.h b/drivers/alsa/audio_driver_alsa.h index 8fcc368b65..8ed60dfdc7 100644 --- a/drivers/alsa/audio_driver_alsa.h +++ b/drivers/alsa/audio_driver_alsa.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "servers/audio_server.h" #ifdef ALSA_ENABLED diff --git a/drivers/convex_decomp/b2d_decompose.cpp b/drivers/convex_decomp/b2d_decompose.cpp index 07be20979d..d1f7a4d3c3 100644 --- a/drivers/convex_decomp/b2d_decompose.cpp +++ b/drivers/convex_decomp/b2d_decompose.cpp @@ -27,6 +27,7 @@ /* 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" diff --git a/drivers/convex_decomp/b2d_decompose.h b/drivers/convex_decomp/b2d_decompose.h index 117fd2b5b0..068689d73d 100644 --- a/drivers/convex_decomp/b2d_decompose.h +++ b/drivers/convex_decomp/b2d_decompose.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef B2D_DECOMPOSE_H #define B2D_DECOMPOSE_H diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp index 4e940e91c9..6db9aebeed 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.cpp +++ b/drivers/coreaudio/audio_driver_coreaudio.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef COREAUDIO_ENABLED #include "audio_driver_coreaudio.h" diff --git a/drivers/coreaudio/audio_driver_coreaudio.h b/drivers/coreaudio/audio_driver_coreaudio.h index d04d789a70..51256085d8 100644 --- a/drivers/coreaudio/audio_driver_coreaudio.h +++ b/drivers/coreaudio/audio_driver_coreaudio.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef COREAUDIO_ENABLED #ifndef AUDIO_DRIVER_COREAUDIO_H diff --git a/drivers/gl_context/context_gl.cpp b/drivers/gl_context/context_gl.cpp index 8cb5c3e8c6..aa36658698 100644 --- a/drivers/gl_context/context_gl.cpp +++ b/drivers/gl_context/context_gl.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "context_gl.h" #if defined(OPENGL_ENABLED) || defined(GLES_ENABLED) diff --git a/drivers/gl_context/context_gl.h b/drivers/gl_context/context_gl.h index e6cb586bca..60781a3453 100644 --- a/drivers/gl_context/context_gl.h +++ b/drivers/gl_context/context_gl.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTEXT_GL_H #define CONTEXT_GL_H diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index 52269a44fe..37a2450377 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rasterizer_canvas_gles3.h" #include "os/os.h" #include "project_settings.h" @@ -1174,28 +1175,46 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) { glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); } else { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE); } } break; case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_ADD: { glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); + if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) { + glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_SRC_ALPHA, GL_ONE); + } else { + glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_ZERO, GL_ONE); + } } break; case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_SUB: { glBlendEquation(GL_FUNC_REVERSE_SUBTRACT); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); + if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) { + glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_SRC_ALPHA, GL_ONE); + } else { + glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_ZERO, GL_ONE); + } } break; case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_MUL: { glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_DST_COLOR, GL_ZERO); + if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) { + glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_DST_ALPHA, GL_ZERO); + } else { + glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_ZERO, GL_ONE); + } + } break; case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_PMALPHA: { glBlendEquation(GL_FUNC_ADD); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) { + glBlendFuncSeparate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); + } else { + glBlendFuncSeparate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE); + } + } break; } diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h index f4d97bd727..9f1a9466f1 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.h +++ b/drivers/gles3/rasterizer_canvas_gles3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RASTERIZERCANVASGLES3_H #define RASTERIZERCANVASGLES3_H diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 5f3b42abf6..b43deab58f 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rasterizer_gles3.h" #include "gl_context/context_gl.h" @@ -338,6 +339,15 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target, const Re RasterizerStorageGLES3::RenderTarget *rt = storage->render_target_owner.getornull(p_render_target); ERR_FAIL_COND(!rt); +#if 1 + + Size2 win_size = OS::get_singleton()->get_window_size(); + glBindFramebuffer(GL_READ_FRAMEBUFFER, rt->fbo); + glReadBuffer(GL_COLOR_ATTACHMENT0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo); + glBlitFramebuffer(0, 0, rt->width, rt->height, p_screen_rect.position.x, win_size.height - p_screen_rect.position.y - p_screen_rect.size.height, p_screen_rect.position.x + p_screen_rect.size.width, win_size.height - p_screen_rect.position.y, GL_COLOR_BUFFER_BIT, GL_NEAREST); + +#else canvas->canvas_begin(); glDisable(GL_BLEND); glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo); @@ -350,6 +360,7 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target, const Re canvas->draw_generic_textured_rect(p_screen_rect, Rect2(0, 0, 1, -1)); glBindTexture(GL_TEXTURE_2D, 0); canvas->canvas_end(); +#endif } void RasterizerGLES3::end_frame(bool p_swap_buffers) { diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h index a8342104cc..5213101778 100644 --- a/drivers/gles3/rasterizer_gles3.h +++ b/drivers/gles3/rasterizer_gles3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RASTERIZERGLES3_H #define RASTERIZERGLES3_H diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index ed29cc2de6..da6df7198d 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rasterizer_scene_gles3.h" #include "math_funcs.h" #include "os/os.h" @@ -2229,7 +2230,7 @@ void RasterizerSceneGLES3::_add_geometry(RasterizerStorageGLES3::Geometry *p_geo void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *p_material, bool p_depth_pass, bool p_shadow_pass) { - bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture; + bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture || p_material->shader->spatial.uses_depth_texture; bool has_blend_alpha = p_material->shader->spatial.blend_mode != RasterizerStorageGLES3::Shader::Spatial::BLEND_MODE_MIX; bool has_alpha = has_base_alpha || has_blend_alpha; @@ -2253,7 +2254,7 @@ void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::G if (p_depth_pass) { - if (has_blend_alpha || (has_base_alpha && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS)) + if (has_blend_alpha || p_material->shader->spatial.uses_depth_texture || (has_base_alpha && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS)) return; //bye if (!p_material->shader->spatial.uses_alpha_scissor && !p_material->shader->spatial.writes_modelview_or_projection && !p_material->shader->spatial.uses_vertex && !p_material->shader->spatial.uses_discard && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) { diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h index 07a58c2945..1b99e119ce 100644 --- a/drivers/gles3/rasterizer_scene_gles3.h +++ b/drivers/gles3/rasterizer_scene_gles3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RASTERIZERSCENEGLES3_H #define RASTERIZERSCENEGLES3_H diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 5ce544ecfb..0fc095a868 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rasterizer_storage_gles3.h" #include "project_settings.h" #include "rasterizer_canvas_gles3.h" @@ -875,11 +876,34 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, VS::CubeMapSi } } + Image::Format img_format; + + //convert special case RGB10_A2 to RGBA8 because it's not a supported image format + if (texture->gl_internal_format_cache == GL_RGB10_A2) { + + img_format = Image::FORMAT_RGBA8; + + uint32_t *ptr = (uint32_t *)wb.ptr(); + uint32_t num_pixels = data_size / 4; + + for (int ofs = 0; ofs < num_pixels; ofs++) { + uint32_t px = ptr[ofs]; + uint32_t a = px >> 30 & 0xFF; + + ptr[ofs] = (px >> 2 & 0xFF) | + (px >> 12 & 0xFF) << 8 | + (px >> 22 & 0xFF) << 16 | + (a | a << 2 | a << 4 | a << 6) << 24; + } + } else { + img_format = texture->format; + } + wb = PoolVector<uint8_t>::Write(); data.resize(data_size); - Image *img = memnew(Image(texture->alloc_width, texture->alloc_height, texture->mipmaps > 1 ? true : false, texture->format, data)); + Image *img = memnew(Image(texture->alloc_width, texture->alloc_height, texture->mipmaps > 1 ? true : false, img_format, data)); return Ref<Image>(img); #else @@ -1618,6 +1642,7 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const { p_shader->spatial.uses_time = false; p_shader->spatial.uses_vertex_lighting = false; p_shader->spatial.uses_screen_texture = false; + p_shader->spatial.uses_depth_texture = false; p_shader->spatial.uses_vertex = false; p_shader->spatial.writes_modelview_or_projection = false; p_shader->spatial.uses_world_coordinates = false; @@ -1649,6 +1674,7 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const { shaders.actions_scene.usage_flag_pointers["SSS_STRENGTH"] = &p_shader->spatial.uses_sss; shaders.actions_scene.usage_flag_pointers["DISCARD"] = &p_shader->spatial.uses_discard; shaders.actions_scene.usage_flag_pointers["SCREEN_TEXTURE"] = &p_shader->spatial.uses_screen_texture; + shaders.actions_scene.usage_flag_pointers["DEPTH_TEXTURE"] = &p_shader->spatial.uses_depth_texture; shaders.actions_scene.usage_flag_pointers["TIME"] = &p_shader->spatial.uses_time; shaders.actions_scene.write_flag_pointers["MODELVIEW_MATRIX"] = &p_shader->spatial.writes_modelview_or_projection; @@ -2181,10 +2207,15 @@ _FORCE_INLINE_ static void _fill_std140_variant_ubo_value(ShaderLanguage::DataTy Transform2D v = value; GLfloat *gui = (GLfloat *)data; + //in std140 members of mat2 are treated as vec4s gui[0] = v.elements[0][0]; gui[1] = v.elements[0][1]; - gui[2] = v.elements[1][0]; - gui[3] = v.elements[1][1]; + gui[2] = 0; + gui[3] = 0; + gui[4] = v.elements[1][0]; + gui[5] = v.elements[1][1]; + gui[6] = 0; + gui[7] = 0; } break; case ShaderLanguage::TYPE_MAT3: { @@ -2359,9 +2390,15 @@ _FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type, case ShaderLanguage::TYPE_MAT2: { GLfloat *gui = (GLfloat *)data; - for (int i = 0; i < 2; i++) { - gui[i] = value[i].real; - } + //in std140 members of mat2 are treated as vec4s + gui[0] = value[0].real; + gui[1] = value[1].real; + gui[2] = 0; + gui[3] = 0; + gui[4] = value[2].real; + gui[5] = value[3].real; + gui[6] = 0; + gui[7] = 0; } break; case ShaderLanguage::TYPE_MAT3: { @@ -2415,11 +2452,14 @@ _FORCE_INLINE_ static void _fill_std140_ubo_empty(ShaderLanguage::DataType type, case ShaderLanguage::TYPE_BVEC4: case ShaderLanguage::TYPE_IVEC4: case ShaderLanguage::TYPE_UVEC4: - case ShaderLanguage::TYPE_VEC4: - case ShaderLanguage::TYPE_MAT2: { + case ShaderLanguage::TYPE_VEC4: { zeromem(data, 16); } break; + case ShaderLanguage::TYPE_MAT2: { + + zeromem(data, 32); + } break; case ShaderLanguage::TYPE_MAT3: { zeromem(data, 48); @@ -5329,7 +5369,7 @@ void RasterizerStorageGLES3::particles_set_emitting(RID p_particles, bool p_emit Particles *particles = particles_owner.getornull(p_particles); ERR_FAIL_COND(!particles); if (p_emitting != particles->emitting) { - // Restart is overriden by set_emitting + // Restart is overridden by set_emitting particles->restart_request = false; } particles->emitting = p_emitting; @@ -5677,6 +5717,7 @@ void RasterizerStorageGLES3::_particles_process(Particles *p_particles, float p_ SWAP(p_particles->particle_buffers[0], p_particles->particle_buffers[1]); SWAP(p_particles->particle_vaos[0], p_particles->particle_vaos[1]); + glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0); glBindVertexArray(0); /* //debug particles :D glBindBuffer(GL_ARRAY_BUFFER, p_particles->particle_buffers[0]); @@ -6903,6 +6944,7 @@ bool RasterizerStorageGLES3::free(RID p_rid) { // delete the texture GIProbe *gi_probe = gi_probe_owner.get(p_rid); + gi_probe->instance_remove_deps(); gi_probe_owner.free(p_rid); memdelete(gi_probe); @@ -6918,6 +6960,7 @@ bool RasterizerStorageGLES3::free(RID p_rid) { // delete the texture LightmapCapture *lightmap_capture = lightmap_capture_data_owner.get(p_rid); + lightmap_capture->instance_remove_deps(); gi_probe_owner.free(p_rid); memdelete(lightmap_capture); @@ -6943,6 +6986,11 @@ bool RasterizerStorageGLES3::free(RID p_rid) { glDeleteTextures(1, &cls->distance); canvas_light_shadow_owner.free(p_rid); memdelete(cls); + } else if (particles_owner.owns(p_rid)) { + Particles *particles = particles_owner.get(p_rid); + particles->instance_remove_deps(); + particles_owner.free(p_rid); + memdelete(particles); } else { return false; } @@ -7242,8 +7290,6 @@ void RasterizerStorageGLES3::initialize() { config.force_vertex_shading = GLOBAL_GET("rendering/quality/shading/force_vertex_shading"); - GLOBAL_DEF("rendering/quality/depth_prepass/disable", false); - String renderer = (const char *)glGetString(GL_RENDERER); config.no_depth_prepass = !bool(GLOBAL_GET("rendering/quality/depth_prepass/enable")); diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h index 4ef4926a1a..ef2b247266 100644 --- a/drivers/gles3/rasterizer_storage_gles3.h +++ b/drivers/gles3/rasterizer_storage_gles3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RASTERIZERSTORAGEGLES3_H #define RASTERIZERSTORAGEGLES3_H @@ -472,6 +473,7 @@ public: bool uses_discard; bool uses_sss; bool uses_screen_texture; + bool uses_depth_texture; bool uses_time; bool writes_modelview_or_projection; bool uses_vertex_lighting; @@ -1180,7 +1182,7 @@ public: clear = true; inactive = true; - inactive_time = false; + inactive_time = 0.0; glGenBuffers(2, particle_buffers); glGenVertexArrays(2, particle_vaos); diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index 8b8a7dd807..f1d7085d54 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader_compiler_gles3.h" #include "os/os.h" @@ -55,6 +56,41 @@ static int _get_datatype_size(SL::DataType p_type) { case SL::TYPE_VOID: return 0; case SL::TYPE_BOOL: return 4; case SL::TYPE_BVEC2: return 8; + case SL::TYPE_BVEC3: return 12; + case SL::TYPE_BVEC4: return 16; + case SL::TYPE_INT: return 4; + case SL::TYPE_IVEC2: return 8; + case SL::TYPE_IVEC3: return 12; + case SL::TYPE_IVEC4: return 16; + case SL::TYPE_UINT: return 4; + case SL::TYPE_UVEC2: return 8; + case SL::TYPE_UVEC3: return 12; + case SL::TYPE_UVEC4: return 16; + case SL::TYPE_FLOAT: return 4; + case SL::TYPE_VEC2: return 8; + case SL::TYPE_VEC3: return 12; + case SL::TYPE_VEC4: return 16; + case SL::TYPE_MAT2: + return 32; //4 * 4 + 4 * 4 + case SL::TYPE_MAT3: + return 48; // 4 * 4 + 4 * 4 + 4 * 4 + case SL::TYPE_MAT4: return 64; + case SL::TYPE_SAMPLER2D: return 16; + case SL::TYPE_ISAMPLER2D: return 16; + case SL::TYPE_USAMPLER2D: return 16; + case SL::TYPE_SAMPLERCUBE: return 16; + } + + ERR_FAIL_V(0); +} + +static int _get_datatype_alignment(SL::DataType p_type) { + + switch (p_type) { + + case SL::TYPE_VOID: return 0; + case SL::TYPE_BOOL: return 4; + case SL::TYPE_BVEC2: return 8; case SL::TYPE_BVEC3: return 16; case SL::TYPE_BVEC4: return 16; case SL::TYPE_INT: return 4; @@ -70,8 +106,8 @@ static int _get_datatype_size(SL::DataType p_type) { case SL::TYPE_VEC3: return 16; case SL::TYPE_VEC4: return 16; case SL::TYPE_MAT2: return 16; - case SL::TYPE_MAT3: return 48; - case SL::TYPE_MAT4: return 64; + case SL::TYPE_MAT3: return 16; + case SL::TYPE_MAT4: return 16; case SL::TYPE_SAMPLER2D: return 16; case SL::TYPE_ISAMPLER2D: return 16; case SL::TYPE_USAMPLER2D: return 16; @@ -80,7 +116,6 @@ static int _get_datatype_size(SL::DataType p_type) { ERR_FAIL_V(0); } - static String _interpstr(SL::DataInterpolation p_interp) { switch (p_interp) { @@ -266,7 +301,7 @@ void ShaderCompilerGLES3::_dump_function_deps(SL::ShaderNode *p_node, const Stri } } -String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions) { +String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions, bool p_assigning) { String code; @@ -340,7 +375,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener } uniform_defines[E->get().order] = ucode; uniform_sizes[E->get().order] = _get_datatype_size(E->get().type); - uniform_alignments[E->get().order] = MIN(16, _get_datatype_size(E->get().type)); + uniform_alignments[E->get().order] = _get_datatype_alignment(E->get().type); } p_actions.uniforms->insert(E->key(), E->get()); @@ -349,6 +384,27 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener for (int i = 0; i < max_uniforms; i++) { r_gen_code.uniforms += uniform_defines[i]; } +#if 1 + // add up + int offset = 0; + for (int i = 0; i < uniform_sizes.size(); i++) { + + int align = offset % uniform_alignments[i]; + + if (align != 0) { + offset += uniform_alignments[i] - align; + } + + r_gen_code.uniform_offsets.push_back(offset); + + offset += uniform_sizes[i]; + } + + r_gen_code.uniform_total_size = offset; + if (r_gen_code.uniform_total_size % 16 != 0) { //UBO sizes must be multiples of 16 + r_gen_code.uniform_total_size += r_gen_code.uniform_total_size % 16; + } +#else // add up for (int i = 0; i < uniform_sizes.size(); i++) { @@ -388,6 +444,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener } else { r_gen_code.uniform_total_size = 0; } +#endif for (Map<StringName, SL::ShaderNode::Varying>::Element *E = pnode->varyings.front(); E; E = E->next()) { @@ -406,7 +463,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener //code for functions for (int i = 0; i < pnode->functions.size(); i++) { SL::FunctionNode *fnode = pnode->functions[i].function; - function_code[fnode->name] = _dump_node_code(fnode->body, p_level + 1, r_gen_code, p_actions, p_default_actions); + function_code[fnode->name] = _dump_node_code(fnode->body, p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); } //place functions in actual code @@ -454,7 +511,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener for (int i = 0; i < bnode->statements.size(); i++) { - String scode = _dump_node_code(bnode->statements[i], p_level, r_gen_code, p_actions, p_default_actions); + String scode = _dump_node_code(bnode->statements[i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); if (bnode->statements[i]->type == SL::Node::TYPE_CONTROL_FLOW || bnode->single_statement) { code += scode; //use directly @@ -480,7 +537,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener declaration += _mkid(vdnode->declarations[i].name); if (vdnode->declarations[i].initializer) { declaration += "="; - declaration += _dump_node_code(vdnode->declarations[i].initializer, p_level, r_gen_code, p_actions, p_default_actions); + declaration += _dump_node_code(vdnode->declarations[i].initializer, p_level, r_gen_code, p_actions, p_default_actions, p_assigning); } } @@ -489,6 +546,10 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener case SL::Node::TYPE_VARIABLE: { SL::VariableNode *vnode = (SL::VariableNode *)p_node; + if (p_assigning && p_actions.write_flag_pointers.has(vnode->name)) { + *p_actions.write_flag_pointers[vnode->name] = true; + } + if (p_default_actions.usage_defines.has(vnode->name) && !used_name_defines.has(vnode->name)) { String define = p_default_actions.usage_defines[vnode->name]; if (define.begins_with("@")) { @@ -539,24 +600,18 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener case SL::OP_ASSIGN_BIT_AND: case SL::OP_ASSIGN_BIT_OR: case SL::OP_ASSIGN_BIT_XOR: - if (onode->arguments[0]->type == SL::Node::TYPE_VARIABLE) { - SL::VariableNode *vnode = (SL::VariableNode *)onode->arguments[0]; - if (p_actions.write_flag_pointers.has(vnode->name)) { - *p_actions.write_flag_pointers[vnode->name] = true; - } - } - code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions); + code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, true) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); break; case SL::OP_BIT_INVERT: case SL::OP_NEGATE: case SL::OP_NOT: case SL::OP_DECREMENT: case SL::OP_INCREMENT: - code = _opstr(onode->op) + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions); + code = _opstr(onode->op) + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); break; case SL::OP_POST_DECREMENT: case SL::OP_POST_INCREMENT: - code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions) + _opstr(onode->op); + code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + _opstr(onode->op); break; case SL::OP_CALL: case SL::OP_CONSTRUCT: { @@ -583,31 +638,31 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener for (int i = 1; i < onode->arguments.size(); i++) { if (i > 1) code += ", "; - code += _dump_node_code(onode->arguments[i], p_level, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(onode->arguments[i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); } code += ")"; } break; case SL::OP_INDEX: { - code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); code += "["; - code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); code += "]"; } break; case SL::OP_SELECT_IF: { - code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); code += "?"; - code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); code += ":"; - code += _dump_node_code(onode->arguments[2], p_level, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(onode->arguments[2], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); } break; default: { - code = "(" + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions) + ")"; + code = "(" + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")"; break; } } @@ -617,29 +672,29 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener SL::ControlFlowNode *cfnode = (SL::ControlFlowNode *)p_node; if (cfnode->flow_op == SL::FLOW_OP_IF) { - code += _mktab(p_level) + "if (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions) + ")\n"; - code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions); + code += _mktab(p_level) + "if (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")\n"; + code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); if (cfnode->blocks.size() == 2) { code += _mktab(p_level) + "else\n"; - code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); } } else if (cfnode->flow_op == SL::FLOW_OP_WHILE) { - code += _mktab(p_level) + "while (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions) + ")\n"; - code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions); + code += _mktab(p_level) + "while (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")\n"; + code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); } else if (cfnode->flow_op == SL::FLOW_OP_FOR) { - String left = _dump_node_code(cfnode->blocks[0], p_level, r_gen_code, p_actions, p_default_actions); - String middle = _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions); - String right = _dump_node_code(cfnode->expressions[1], p_level, r_gen_code, p_actions, p_default_actions); + String left = _dump_node_code(cfnode->blocks[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); + String middle = _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); + String right = _dump_node_code(cfnode->expressions[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning); code += _mktab(p_level) + "for (" + left + ";" + middle + ";" + right + ")\n"; - code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions); + code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); } else if (cfnode->flow_op == SL::FLOW_OP_RETURN) { if (cfnode->expressions.size()) { - code = "return " + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions) + ";"; + code = "return " + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ";"; } else { code = "return;"; } @@ -657,7 +712,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener } break; case SL::Node::TYPE_MEMBER: { SL::MemberNode *mnode = (SL::MemberNode *)p_node; - code = _dump_node_code(mnode->owner, p_level, r_gen_code, p_actions, p_default_actions) + "." + mnode->name; + code = _dump_node_code(mnode->owner, p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + "." + mnode->name; } break; } @@ -693,7 +748,7 @@ Error ShaderCompilerGLES3::compile(VS::ShaderMode p_mode, const String &p_code, used_rmode_defines.clear(); used_flag_pointers.clear(); - _dump_node_code(parser.get_shader(), 1, r_gen_code, *p_actions, actions[p_mode]); + _dump_node_code(parser.get_shader(), 1, r_gen_code, *p_actions, actions[p_mode], false); if (r_gen_code.uniform_total_size) { //uniforms used? int md = sizeof(float) * 4; @@ -716,7 +771,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_CANVAS_ITEM].renames["WORLD_MATRIX"] = "modelview_matrix"; actions[VS::SHADER_CANVAS_ITEM].renames["PROJECTION_MATRIX"] = "projection_matrix"; - actions[VS::SHADER_CANVAS_ITEM].renames["EXTRA_MATRIX"] == "extra_matrix"; + actions[VS::SHADER_CANVAS_ITEM].renames["EXTRA_MATRIX"] = "extra_matrix"; actions[VS::SHADER_CANVAS_ITEM].renames["TIME"] = "time"; actions[VS::SHADER_CANVAS_ITEM].renames["AT_LIGHT_PASS"] = "at_light_pass"; actions[VS::SHADER_CANVAS_ITEM].renames["INSTANCE_CUSTOM"] = "instance_custom"; diff --git a/drivers/gles3/shader_compiler_gles3.h b/drivers/gles3/shader_compiler_gles3.h index 0d79b0f4cc..85e8e02b8e 100644 --- a/drivers/gles3/shader_compiler_gles3.h +++ b/drivers/gles3/shader_compiler_gles3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADERCOMPILERGLES3_H #define SHADERCOMPILERGLES3_H @@ -77,7 +78,7 @@ private: }; void _dump_function_deps(ShaderLanguage::ShaderNode *p_node, const StringName &p_for_func, const Map<StringName, String> &p_func_code, String &r_to_add, Set<StringName> &added); - String _dump_node_code(ShaderLanguage::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions); + String _dump_node_code(ShaderLanguage::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions, bool p_assigning); StringName current_func_name; StringName vertex_name; diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index 6f7b58e922..08b8a1cc26 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader_gles3.h" #include "print_string.h" diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h index 95119a9718..996655615e 100644 --- a/drivers/gles3/shader_gles3.h +++ b/drivers/gles3/shader_gles3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADER_GLES3_H #define SHADER_GLES3_H diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl index 0b8230234b..f436ef06f7 100644 --- a/drivers/gles3/shaders/canvas.glsl +++ b/drivers/gles3/shaders/canvas.glsl @@ -42,7 +42,7 @@ uniform highp mat4 modelview_matrix; uniform highp mat4 extra_matrix; -out mediump vec2 uv_interp; +out highp vec2 uv_interp; out mediump vec4 color_interp; #ifdef USE_NINEPATCH @@ -207,7 +207,7 @@ uniform mediump sampler2D color_texture; // texunit:0 uniform highp vec2 color_texpixel_size; uniform mediump sampler2D normal_texture; // texunit:1 -in mediump vec2 uv_interp; +in highp vec2 uv_interp; in mediump vec4 color_interp; @@ -285,7 +285,7 @@ MATERIAL_UNIFORMS FRAGMENT_SHADER_GLOBALS -void light_compute(inout vec3 light,vec3 light_vec,float light_height,vec4 light_color,vec2 light_uv,vec4 shadow,vec3 normal,vec2 uv,vec2 screen_uv,vec4 color) { +void light_compute(inout vec4 light,vec2 light_vec,float light_height,vec4 light_color,vec2 light_uv,vec4 shadow,vec3 normal,vec2 uv,vec2 screen_uv,vec4 color) { #if defined(USE_LIGHT_SHADER_CODE) diff --git a/drivers/gles3/shaders/copy.glsl b/drivers/gles3/shaders/copy.glsl index 743fe122d1..1b7c626d3c 100644 --- a/drivers/gles3/shaders/copy.glsl +++ b/drivers/gles3/shaders/copy.glsl @@ -131,7 +131,7 @@ void main() { #elif defined(USE_ASYM_PANO) - // When an assymetrical projection matrix is used (applicable for stereoscopic rendering i.e. VR) we need to do this calculation per fragment to get a perspective correct result. + // When an asymmetrical projection matrix is used (applicable for stereoscopic rendering i.e. VR) we need to do this calculation per fragment to get a perspective correct result. // Note that we're ignoring the x-offset for IPD, with Z sufficiently in the distance it becomes neglectible, as a result we could probably just set cube_normal.z to -1. // The Matrix[2][0] (= asym_proj.x) and Matrix[2][1] (= asym_proj.z) values are what provide the right shift in the image. @@ -161,7 +161,7 @@ void main() { #ifdef SRGB_TO_LINEAR - color.rgb = mix(pow((color.rgb + vec3(0.055)) * (1.0 / (1 + 0.055)),vec3(2.4)),color.rgb * (1.0 / 12.92),lessThan(color.rgb,vec3(0.04045))); + color.rgb = mix(pow((color.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)),vec3(2.4)),color.rgb * (1.0 / 12.92),lessThan(color.rgb,vec3(0.04045))); #endif #ifdef DEBUG_GRADIENT diff --git a/drivers/gles3/shaders/effect_blur.glsl b/drivers/gles3/shaders/effect_blur.glsl index b5f98a1244..c8567b4d53 100644 --- a/drivers/gles3/shaders/effect_blur.glsl +++ b/drivers/gles3/shaders/effect_blur.glsl @@ -214,7 +214,7 @@ void main() { vec4 color_accum = vec4(0.0); - float max_accum=0; + float max_accum=0.0; for(int i=0;i<dof_kernel_size;i++) { diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index 6427e3d967..d3644bffdd 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -445,8 +445,7 @@ VERTEX_SHADER_CODE vtx.z=(distance/shadow_dual_paraboloid_render_zfar); vtx.z=vtx.z * 2.0 - 1.0; - vertex.xyz=vtx; - vertex.w=1.0; + vertex_interp = vtx; #else @@ -905,7 +904,7 @@ float G_GGX_anisotropic_2cos(float cos_theta_m, float alpha_x, float alpha_y, fl float sin2 = (1.0-cos2); float s_x = alpha_x * cos_phi; float s_y = alpha_y * sin_phi; - return 1.0 / (cos_theta_m + sqrt(cos2 + (s_x*s_x + s_y*s_y)*sin2 )); + return 1.0 / max(cos_theta_m + sqrt(cos2 + (s_x*s_x + s_y*s_y)*sin2 ), 0.001); } float D_GGX_anisotropic(float cos_theta_m, float alpha_x, float alpha_y, float cos_phi, float sin_phi) { @@ -914,7 +913,7 @@ float D_GGX_anisotropic(float cos_theta_m, float alpha_x, float alpha_y, float c float r_x = cos_phi/alpha_x; float r_y = sin_phi/alpha_y; float d = cos2 + sin2*(r_x * r_x + r_y * r_y); - return 1.0 / (M_PI * alpha_x * alpha_y * d * d ); + return 1.0 / max(M_PI * alpha_x * alpha_y * d * d, 0.001); } @@ -1308,7 +1307,7 @@ void reflection_process(int idx, vec3 vertex, vec3 normal,vec3 binormal, vec3 ta //make blend more rounded blend=mix(length(inner_pos),blend,blend); blend*=blend; - blend=1.001-blend; + blend=max(0.0, 1.0-blend); if (reflections[idx].params.x>0.0){// compute reflection @@ -1476,9 +1475,9 @@ void gi_probe_compute(mediump sampler3D probe, mat4 probe_xform, vec3 bounds,vec return; } - //vec3 blendv = probe_pos/bounds * 2.0 - 1.0; - //float blend = 1.001-max(blendv.x,max(blendv.y,blendv.z)); - float blend=1.0; + vec3 blendv = abs(probe_pos/bounds * 2.0 - 1.0); + float blend = clamp(1.0-max(blendv.x,max(blendv.y,blendv.z)), 0.0, 1.0); + //float blend=1.0; float max_distance = length(bounds); @@ -1649,7 +1648,7 @@ void main() { #if defined(ENABLE_NORMALMAP) - vec3 normalmap = vec3(0.0); + vec3 normalmap = vec3(0.5); #endif float normaldepth=1.0; @@ -2004,7 +2003,7 @@ FRAGMENT_SHADER_CODE } #ifndef USE_LIGHTMAP if (ambient_accum.a>0.0) { - ambient_light+=ambient_accum.rgb/ambient_accum.a; + ambient_light=ambient_accum.rgb/ambient_accum.a; } #endif diff --git a/drivers/png/image_loader_png.cpp b/drivers/png/image_loader_png.cpp index 4f43006cb0..3f512af8d5 100644 --- a/drivers/png/image_loader_png.cpp +++ b/drivers/png/image_loader_png.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_png.h" #include "os/os.h" diff --git a/drivers/png/image_loader_png.h b/drivers/png/image_loader_png.h index 155240a048..48f48e6bea 100644 --- a/drivers/png/image_loader_png.h +++ b/drivers/png/image_loader_png.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_PNG_H #define IMAGE_LOADER_PNG_H diff --git a/drivers/png/resource_saver_png.cpp b/drivers/png/resource_saver_png.cpp index 7f5300bb39..270ae36e1e 100644 --- a/drivers/png/resource_saver_png.cpp +++ b/drivers/png/resource_saver_png.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_saver_png.h" #include "core/image.h" diff --git a/drivers/png/resource_saver_png.h b/drivers/png/resource_saver_png.h index c921dcf24c..109b4801da 100644 --- a/drivers/png/resource_saver_png.h +++ b/drivers/png/resource_saver_png.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_SAVER_PNG_H #define RESOURCE_SAVER_PNG_H diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp index 815b5b47ef..e90245b300 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp +++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_pulseaudio.h" #ifdef PULSEAUDIO_ENABLED diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.h b/drivers/pulseaudio/audio_driver_pulseaudio.h index 71d4b42dfe..3bd1146f53 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.h +++ b/drivers/pulseaudio/audio_driver_pulseaudio.h @@ -27,12 +27,15 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "servers/audio_server.h" #ifdef PULSEAUDIO_ENABLED +#ifndef AUDIO_DRIVER_PULSEAUDIO_H +#define AUDIO_DRIVER_PULSEAUDIO_H + #include "core/os/mutex.h" #include "core/os/thread.h" +#include "servers/audio_server.h" #include <pulse/simple.h> @@ -78,4 +81,6 @@ public: ~AudioDriverPulseAudio(); }; -#endif +#endif // AUDIO_DRIVER_PULSEAUDIO_H + +#endif // PULSEAUDIO_ENABLED diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 497be89614..c6d36a5749 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_driver_types.h" #include "core/math/geometry.h" diff --git a/drivers/register_driver_types.h b/drivers/register_driver_types.h index 09c9dd898f..ddd1fac093 100644 --- a/drivers/register_driver_types.h +++ b/drivers/register_driver_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_DRIVER_TYPES_H #define REGISTER_DRIVER_TYPES_H diff --git a/drivers/rtaudio/audio_driver_rtaudio.cpp b/drivers/rtaudio/audio_driver_rtaudio.cpp index 2bfa62f30d..ed6f2e24ed 100644 --- a/drivers/rtaudio/audio_driver_rtaudio.cpp +++ b/drivers/rtaudio/audio_driver_rtaudio.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_rtaudio.h" #include "os/os.h" diff --git a/drivers/rtaudio/audio_driver_rtaudio.h b/drivers/rtaudio/audio_driver_rtaudio.h index 5fd46887c9..2a64652d5f 100644 --- a/drivers/rtaudio/audio_driver_rtaudio.h +++ b/drivers/rtaudio/audio_driver_rtaudio.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_RTAUDIO_H #define AUDIO_DRIVER_RTAUDIO_H diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp index db398691b0..4a467293fd 100644 --- a/drivers/unix/dir_access_unix.cpp +++ b/drivers/unix/dir_access_unix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dir_access_unix.h" #if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED) diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h index fdc433fe1d..a55acdbd34 100644 --- a/drivers/unix/dir_access_unix.h +++ b/drivers/unix/dir_access_unix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIR_ACCESS_UNIX_H #define DIR_ACCESS_UNIX_H diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp index d4b71b2c05..1ed3999e1e 100644 --- a/drivers/unix/file_access_unix.cpp +++ b/drivers/unix/file_access_unix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_unix.h" #if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED) diff --git a/drivers/unix/file_access_unix.h b/drivers/unix/file_access_unix.h index e096feb775..6f792076b8 100644 --- a/drivers/unix/file_access_unix.h +++ b/drivers/unix/file_access_unix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_UNIX_H #define FILE_ACCESS_UNIX_H diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp index 11f44f8eb8..032d91f0dc 100644 --- a/drivers/unix/ip_unix.cpp +++ b/drivers/unix/ip_unix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ip_unix.h" #if defined(UNIX_ENABLED) || defined(WINDOWS_ENABLED) diff --git a/drivers/unix/ip_unix.h b/drivers/unix/ip_unix.h index 4c3d996d9b..d3d1ccfa85 100644 --- a/drivers/unix/ip_unix.h +++ b/drivers/unix/ip_unix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IP_UNIX_H #define IP_UNIX_H diff --git a/drivers/unix/mutex_posix.cpp b/drivers/unix/mutex_posix.cpp index ab21a66008..1f13720f1e 100644 --- a/drivers/unix/mutex_posix.cpp +++ b/drivers/unix/mutex_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mutex_posix.h" #include "os/memory.h" diff --git a/drivers/unix/mutex_posix.h b/drivers/unix/mutex_posix.h index c615a39545..a4de1603f3 100644 --- a/drivers/unix/mutex_posix.h +++ b/drivers/unix/mutex_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MUTEX_POSIX_H #define MUTEX_POSIX_H diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index cc4d060c02..5f45f06c79 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_unix.h" #ifdef UNIX_ENABLED @@ -52,6 +53,7 @@ #if defined(__FreeBSD__) || defined(__OpenBSD__) #include <sys/param.h> +#include <sys/sysctl.h> #endif #include "project_settings.h" #include <assert.h> @@ -297,17 +299,7 @@ Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, bo args.push_back((char *)cs[i].get_data()); // shitty C cast args.push_back(0); -#ifdef __FreeBSD__ - if (p_path.find("/")) { - // exec name contains path so use it - execv(p_path.utf8().get_data(), &args[0]); - } else { - // use program name and search through PATH to find it - execvp(getprogname(), &args[0]); - } -#else execvp(p_path.utf8().get_data(), &args[0]); -#endif // still alive? something failed.. fprintf(stderr, "**ERROR** OS_Unix::execute - Could not create child process while executing: %s\n", p_path.utf8().get_data()); abort(); @@ -362,7 +354,20 @@ String OS_Unix::get_locale() const { } Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) { - p_library_handle = dlopen(p_path.utf8().get_data(), RTLD_NOW); + + String path = p_path; + + if (!FileAccess::exists(path)) { + //this code exists so gdnative can load .so files from within the executable path + path = get_executable_path().get_base_dir().plus_file(p_path.get_file()); + } + + if (!FileAccess::exists(path)) { + //this code exists so gdnative can load .so files from a standard unix location + path = get_executable_path().get_base_dir().plus_file("../lib").plus_file(p_path.get_file()); + } + + p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW); if (!p_library_handle) { ERR_EXPLAIN("Can't open dynamic library: " + p_path + ". Error: " + dlerror()); ERR_FAIL_V(ERR_CANT_OPEN); @@ -448,12 +453,23 @@ String OS_Unix::get_executable_path() const { return OS::get_executable_path(); } return b; -#elif defined(__FreeBSD__) || defined(__OpenBSD__) +#elif defined(__OpenBSD__) char resolved_path[MAXPATHLEN]; realpath(OS::get_executable_path().utf8().get_data(), resolved_path); return String(resolved_path); +#elif defined(__FreeBSD__) + int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; + char buf[MAXPATHLEN]; + size_t len = sizeof(buf); + if (sysctl(mib, 4, buf, &len, NULL, 0) != 0) { + WARN_PRINT("Couldn't get executable path from sysctl"); + return OS::get_executable_path(); + } + String b; + b.parse_utf8(buf); + return b; #elif defined(__APPLE__) char temp_path[1]; uint32_t buff_size = 1; diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h index 7929a791cb..a7c9015330 100644 --- a/drivers/unix/os_unix.h +++ b/drivers/unix/os_unix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_UNIX_H #define OS_UNIX_H @@ -55,7 +56,7 @@ protected: virtual void initialize_core(); virtual int unix_initialize_audio(int p_audio_driver); - //virtual void initialize(int p_video_driver,int p_audio_driver); + //virtual Error initialize(int p_video_driver,int p_audio_driver); virtual void finalize_core(); diff --git a/drivers/unix/packet_peer_udp_posix.cpp b/drivers/unix/packet_peer_udp_posix.cpp index 2e03a106a2..1380c1d88b 100644 --- a/drivers/unix/packet_peer_udp_posix.cpp +++ b/drivers/unix/packet_peer_udp_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "packet_peer_udp_posix.h" #ifdef UNIX_ENABLED diff --git a/drivers/unix/packet_peer_udp_posix.h b/drivers/unix/packet_peer_udp_posix.h index b8ea4c867a..7f72a9bfc9 100644 --- a/drivers/unix/packet_peer_udp_posix.h +++ b/drivers/unix/packet_peer_udp_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PACKET_PEER_UDP_POSIX_H #define PACKET_PEER_UDP_POSIX_H diff --git a/drivers/unix/rw_lock_posix.cpp b/drivers/unix/rw_lock_posix.cpp index 6adc2c25f3..4df965cabb 100644 --- a/drivers/unix/rw_lock_posix.cpp +++ b/drivers/unix/rw_lock_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED) #include "rw_lock_posix.h" diff --git a/drivers/unix/rw_lock_posix.h b/drivers/unix/rw_lock_posix.h index 3cf1b8924e..617b9705da 100644 --- a/drivers/unix/rw_lock_posix.h +++ b/drivers/unix/rw_lock_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RWLOCKPOSIX_H #define RWLOCKPOSIX_H diff --git a/drivers/unix/semaphore_posix.cpp b/drivers/unix/semaphore_posix.cpp index 18b0cd7956..5cabfe4937 100644 --- a/drivers/unix/semaphore_posix.cpp +++ b/drivers/unix/semaphore_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "semaphore_posix.h" #if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED) diff --git a/drivers/unix/semaphore_posix.h b/drivers/unix/semaphore_posix.h index 719fd73880..283174bb2e 100644 --- a/drivers/unix/semaphore_posix.h +++ b/drivers/unix/semaphore_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEMAPHORE_POSIX_H #define SEMAPHORE_POSIX_H diff --git a/drivers/unix/socket_helpers.h b/drivers/unix/socket_helpers.h index 1cdc4cc65d..5ef9ad3088 100644 --- a/drivers/unix/socket_helpers.h +++ b/drivers/unix/socket_helpers.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SOCKET_HELPERS_H #define SOCKET_HELPERS_H diff --git a/drivers/unix/stream_peer_tcp_posix.cpp b/drivers/unix/stream_peer_tcp_posix.cpp index 959131d47a..17112e5ab5 100644 --- a/drivers/unix/stream_peer_tcp_posix.cpp +++ b/drivers/unix/stream_peer_tcp_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef UNIX_ENABLED #include "stream_peer_tcp_posix.h" @@ -303,7 +304,7 @@ Error StreamPeerTCPPosix::read(uint8_t *p_buffer, int p_bytes, int &r_received, return OK; }; -void StreamPeerTCPPosix::set_nodelay(bool p_enabled) { +void StreamPeerTCPPosix::set_no_delay(bool p_enabled) { ERR_FAIL_COND(!is_connected_to_host()); int flag = p_enabled ? 1 : 0; diff --git a/drivers/unix/stream_peer_tcp_posix.h b/drivers/unix/stream_peer_tcp_posix.h index bfe6d88977..bcebe57771 100644 --- a/drivers/unix/stream_peer_tcp_posix.h +++ b/drivers/unix/stream_peer_tcp_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef UNIX_ENABLED #ifndef STREAM_PEER_TCP_POSIX_H @@ -76,7 +77,7 @@ public: virtual Status get_status() const; virtual void disconnect_from_host(); - virtual void set_nodelay(bool p_enabled); + virtual void set_no_delay(bool p_enabled); static void make_default(); diff --git a/drivers/unix/tcp_server_posix.cpp b/drivers/unix/tcp_server_posix.cpp index 9f4ce51dc2..07ffe3b00a 100644 --- a/drivers/unix/tcp_server_posix.cpp +++ b/drivers/unix/tcp_server_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tcp_server_posix.h" #include "stream_peer_tcp_posix.h" diff --git a/drivers/unix/tcp_server_posix.h b/drivers/unix/tcp_server_posix.h index 3bb4a3b5bf..c749314fb3 100644 --- a/drivers/unix/tcp_server_posix.h +++ b/drivers/unix/tcp_server_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TCP_SERVER_POSIX_H #define TCP_SERVER_POSIX_H diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp index f19932ae8e..f079ae2ae2 100644 --- a/drivers/unix/thread_posix.cpp +++ b/drivers/unix/thread_posix.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread_posix.h" #include "script_language.h" diff --git a/drivers/unix/thread_posix.h b/drivers/unix/thread_posix.h index c7da800d2b..15c9265e6d 100644 --- a/drivers/unix/thread_posix.h +++ b/drivers/unix/thread_posix.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_POSIX_H #define THREAD_POSIX_H diff --git a/drivers/wasapi/audio_driver_wasapi.cpp b/drivers/wasapi/audio_driver_wasapi.cpp index cd0e56dcc5..4c80e70a95 100644 --- a/drivers/wasapi/audio_driver_wasapi.cpp +++ b/drivers/wasapi/audio_driver_wasapi.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WASAPI_ENABLED #include "audio_driver_wasapi.h" diff --git a/drivers/wasapi/audio_driver_wasapi.h b/drivers/wasapi/audio_driver_wasapi.h index 57efeaf1e4..2b19f0cca1 100644 --- a/drivers/wasapi/audio_driver_wasapi.h +++ b/drivers/wasapi/audio_driver_wasapi.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_WASAPI_H #define AUDIO_DRIVER_WASAPI_H diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp index 8a470e0717..2e64b55430 100644 --- a/drivers/windows/dir_access_windows.cpp +++ b/drivers/windows/dir_access_windows.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #if defined(WINDOWS_ENABLED) #include "dir_access_windows.h" diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h index 845fc9941a..b18c8f5b5d 100644 --- a/drivers/windows/dir_access_windows.h +++ b/drivers/windows/dir_access_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIR_ACCESS_WINDOWS_H #define DIR_ACCESS_WINDOWS_H diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp index 5b9cc2ba09..832d75b17d 100644 --- a/drivers/windows/file_access_windows.cpp +++ b/drivers/windows/file_access_windows.cpp @@ -27,9 +27,11 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #include "file_access_windows.h" +#include "os/os.h" #include "shlwapi.h" #include <windows.h> @@ -114,25 +116,35 @@ void FileAccessWindows::close() { //_wunlink(save_path.c_str()); //unlink if exists //int rename_error = _wrename((save_path+".tmp").c_str(),save_path.c_str()); - bool rename_error; + bool rename_error = true; + int attempts = 4; + while (rename_error && attempts) { + // This workaround of trying multiple times is added to deal with paranoid Windows + // antiviruses that love reading just written files even if they are not executable, thus + // locking the file and preventing renaming from happening. #ifdef UWP_ENABLED - // UWP has no PathFileExists, so we check attributes instead - DWORD fileAttr; + // UWP has no PathFileExists, so we check attributes instead + DWORD fileAttr; - fileAttr = GetFileAttributesW(save_path.c_str()); - if (INVALID_FILE_ATTRIBUTES == fileAttr) { + fileAttr = GetFileAttributesW(save_path.c_str()); + if (INVALID_FILE_ATTRIBUTES == fileAttr) { #else - if (!PathFileExistsW(save_path.c_str())) { + if (!PathFileExistsW(save_path.c_str())) { #endif - //creating new file - rename_error = _wrename((save_path + ".tmp").c_str(), save_path.c_str()) != 0; - } else { - //atomic replace for existing file - rename_error = !ReplaceFileW(save_path.c_str(), (save_path + ".tmp").c_str(), NULL, 2 | 4, NULL, NULL); - } - if (rename_error && close_fail_notify) { - close_fail_notify(save_path); + //creating new file + rename_error = _wrename((save_path + ".tmp").c_str(), save_path.c_str()) != 0; + } else { + //atomic replace for existing file + rename_error = !ReplaceFileW(save_path.c_str(), (save_path + ".tmp").c_str(), NULL, 2 | 4, NULL, NULL); + } + if (rename_error && close_fail_notify) { + close_fail_notify(save_path); + } + if (rename_error) { + attempts--; + OS::get_singleton()->delay_usec(1000000); //wait 100msec and try again + } } save_path = ""; @@ -189,6 +201,7 @@ uint8_t FileAccessWindows::get_8() const { uint8_t b; if (fread(&b, 1, 1, f) == 0) { check_errors(); + b = '\0'; }; return b; diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h index b9ec9e34a3..bbdf830c96 100644 --- a/drivers/windows/file_access_windows.h +++ b/drivers/windows/file_access_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_WINDOWS_H #define FILE_ACCESS_WINDOWS_H diff --git a/drivers/windows/mutex_windows.cpp b/drivers/windows/mutex_windows.cpp index 2d60a22a86..359a79209c 100644 --- a/drivers/windows/mutex_windows.cpp +++ b/drivers/windows/mutex_windows.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mutex_windows.h" #include "os/memory.h" diff --git a/drivers/windows/mutex_windows.h b/drivers/windows/mutex_windows.h index d6fc85dcc3..4dff2c2456 100644 --- a/drivers/windows/mutex_windows.h +++ b/drivers/windows/mutex_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MUTEX_WINDOWS_H #define MUTEX_WINDOWS_H diff --git a/drivers/windows/packet_peer_udp_winsock.cpp b/drivers/windows/packet_peer_udp_winsock.cpp index 9901f29e19..609096d02e 100644 --- a/drivers/windows/packet_peer_udp_winsock.cpp +++ b/drivers/windows/packet_peer_udp_winsock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #include "packet_peer_udp_winsock.h" diff --git a/drivers/windows/packet_peer_udp_winsock.h b/drivers/windows/packet_peer_udp_winsock.h index 3f7d090068..8d575c2033 100644 --- a/drivers/windows/packet_peer_udp_winsock.h +++ b/drivers/windows/packet_peer_udp_winsock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #ifndef PACKET_PEER_UDP_WINSOCK_H diff --git a/drivers/windows/rw_lock_windows.cpp b/drivers/windows/rw_lock_windows.cpp index a428b7910f..29c24d3d02 100644 --- a/drivers/windows/rw_lock_windows.cpp +++ b/drivers/windows/rw_lock_windows.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #if defined(WINDOWS_ENABLED) #include "rw_lock_windows.h" diff --git a/drivers/windows/rw_lock_windows.h b/drivers/windows/rw_lock_windows.h index 1ca2095d6b..fdce28574a 100644 --- a/drivers/windows/rw_lock_windows.h +++ b/drivers/windows/rw_lock_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RWLOCKWINDOWS_H #define RWLOCKWINDOWS_H diff --git a/drivers/windows/semaphore_windows.cpp b/drivers/windows/semaphore_windows.cpp index 92daacb775..25fced93ce 100644 --- a/drivers/windows/semaphore_windows.cpp +++ b/drivers/windows/semaphore_windows.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "semaphore_windows.h" #if defined(WINDOWS_ENABLED) diff --git a/drivers/windows/semaphore_windows.h b/drivers/windows/semaphore_windows.h index da0c68f1fc..e099ee437a 100644 --- a/drivers/windows/semaphore_windows.h +++ b/drivers/windows/semaphore_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEMAPHORE_WINDOWS_H #define SEMAPHORE_WINDOWS_H diff --git a/drivers/windows/shell_windows.cpp b/drivers/windows/shell_windows.cpp index c25df26c48..20e996d776 100644 --- a/drivers/windows/shell_windows.cpp +++ b/drivers/windows/shell_windows.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #ifdef UWP_ENABLED diff --git a/drivers/windows/shell_windows.h b/drivers/windows/shell_windows.h index 18ae7828a1..41cc6b72a2 100644 --- a/drivers/windows/shell_windows.h +++ b/drivers/windows/shell_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHELL_WINDOWS_H #define SHELL_WINDOWS_H diff --git a/drivers/windows/stream_peer_tcp_winsock.cpp b/drivers/windows/stream_peer_tcp_winsock.cpp index 6bcd5af5a1..55775fc231 100644 --- a/drivers/windows/stream_peer_tcp_winsock.cpp +++ b/drivers/windows/stream_peer_tcp_winsock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #include "stream_peer_tcp_winsock.h" @@ -331,7 +332,7 @@ Error StreamPeerTCPWinsock::connect_to_host(const IP_Address &p_host, uint16_t p return OK; }; -void StreamPeerTCPWinsock::set_nodelay(bool p_enabled) { +void StreamPeerTCPWinsock::set_no_delay(bool p_enabled) { ERR_FAIL_COND(!is_connected_to_host()); int flag = p_enabled ? 1 : 0; setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)); diff --git a/drivers/windows/stream_peer_tcp_winsock.h b/drivers/windows/stream_peer_tcp_winsock.h index 53be9d6ac5..a0177d374e 100644 --- a/drivers/windows/stream_peer_tcp_winsock.h +++ b/drivers/windows/stream_peer_tcp_winsock.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* stream_peer_winsock.h */ +/* stream_peer_tcp_winsock.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #ifndef STREAM_PEER_TCP_WINSOCK_H @@ -80,7 +81,7 @@ public: static void make_default(); static void cleanup(); - virtual void set_nodelay(bool p_enabled); + virtual void set_no_delay(bool p_enabled); StreamPeerTCPWinsock(); ~StreamPeerTCPWinsock(); diff --git a/drivers/windows/tcp_server_winsock.cpp b/drivers/windows/tcp_server_winsock.cpp index 3936ee64c7..413a0d19b5 100644 --- a/drivers/windows/tcp_server_winsock.cpp +++ b/drivers/windows/tcp_server_winsock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #include "tcp_server_winsock.h" diff --git a/drivers/windows/tcp_server_winsock.h b/drivers/windows/tcp_server_winsock.h index ffd20bd6b7..a6979db42d 100644 --- a/drivers/windows/tcp_server_winsock.h +++ b/drivers/windows/tcp_server_winsock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef WINDOWS_ENABLED #ifndef TCP_SERVER_WINSOCK_H diff --git a/drivers/windows/thread_windows.cpp b/drivers/windows/thread_windows.cpp index 062387e3cb..5e0b017a5c 100644 --- a/drivers/windows/thread_windows.cpp +++ b/drivers/windows/thread_windows.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread_windows.h" #if defined(WINDOWS_ENABLED) && !defined(UWP_ENABLED) diff --git a/drivers/windows/thread_windows.h b/drivers/windows/thread_windows.h index 5d26e8fc68..d7a8389d9e 100644 --- a/drivers/windows/thread_windows.h +++ b/drivers/windows/thread_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_WINDOWS_H #define THREAD_WINDOWS_H diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp index de71b6daba..6675459313 100644 --- a/drivers/xaudio2/audio_driver_xaudio2.cpp +++ b/drivers/xaudio2/audio_driver_xaudio2.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_xaudio2.h" #include "os/os.h" diff --git a/drivers/xaudio2/audio_driver_xaudio2.h b/drivers/xaudio2/audio_driver_xaudio2.h index 4fac1ec2b6..42e1adb2b7 100644 --- a/drivers/xaudio2/audio_driver_xaudio2.h +++ b/drivers/xaudio2/audio_driver_xaudio2.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_XAUDIO2_H #define AUDIO_DRIVER_XAUDIO2_H diff --git a/editor/animation_editor.cpp b/editor/animation_editor.cpp index f73c81ed9c..91aa189c8f 100644 --- a/editor/animation_editor.cpp +++ b/editor/animation_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation_editor.h" #include "editor/plugins/animation_player_editor_plugin.h" @@ -1533,7 +1534,7 @@ void AnimationKeyEditor::_track_editor_draw() { for (Map<SelectedKey, KeyInfo>::Element *E = selection.front(); E; E = E->next()) { int idx = E->key().track; - int i = idx - v_scroll->get_value(); + int i = idx - (int)v_scroll->get_value(); if (i < 0 || i >= fit) continue; int y = h + i * h + sep; @@ -3118,12 +3119,12 @@ void AnimationKeyEditor::set_animation(const Ref<Animation> &p_anim) { void AnimationKeyEditor::set_root(Node *p_root) { if (root) - root->disconnect("tree_exited", this, "_root_removed"); + root->disconnect("tree_exiting", this, "_root_removed"); root = p_root; if (root) - root->connect("tree_exited", this, "_root_removed", make_binds(), CONNECT_ONESHOT); + root->connect("tree_exiting", this, "_root_removed", make_binds(), CONNECT_ONESHOT); } Node *AnimationKeyEditor::get_root() const { diff --git a/editor/animation_editor.h b/editor/animation_editor.h index 56e3f34aac..1e593f237c 100644 --- a/editor/animation_editor.h +++ b/editor/animation_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_EDITOR_H #define ANIMATION_EDITOR_H diff --git a/editor/array_property_edit.cpp b/editor/array_property_edit.cpp index 3c2fc5c23f..a32a71262f 100644 --- a/editor/array_property_edit.cpp +++ b/editor/array_property_edit.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "array_property_edit.h" #include "editor_node.h" diff --git a/editor/array_property_edit.h b/editor/array_property_edit.h index 6b637f8b52..fe0c4e23ae 100644 --- a/editor/array_property_edit.h +++ b/editor/array_property_edit.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ARRAY_PROPERTY_EDIT_H #define ARRAY_PROPERTY_EDIT_H diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index 256fe302d7..70334c2343 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "code_editor.h" #include "editor/editor_scale.h" @@ -89,10 +90,13 @@ void FindReplaceBar::_notification(int p_what) { hide_button->set_normal_texture(get_icon("Close", "EditorIcons")); hide_button->set_hover_texture(get_icon("Close", "EditorIcons")); hide_button->set_pressed_texture(get_icon("Close", "EditorIcons")); - + hide_button->set_custom_minimum_size(hide_button->get_normal_texture()->get_size()); } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { set_process_unhandled_input(is_visible_in_tree()); + if (is_visible_in_tree()) { + call_deferred("_update_size"); + } } else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { find_prev->set_icon(get_icon("MoveUp", "EditorIcons")); @@ -100,6 +104,7 @@ void FindReplaceBar::_notification(int p_what) { hide_button->set_normal_texture(get_icon("Close", "EditorIcons")); hide_button->set_hover_texture(get_icon("Close", "EditorIcons")); hide_button->set_pressed_texture(get_icon("Close", "EditorIcons")); + hide_button->set_custom_minimum_size(hide_button->get_normal_texture()->get_size()); } } @@ -108,7 +113,7 @@ void FindReplaceBar::_unhandled_input(const Ref<InputEvent> &p_event) { Ref<InputEventKey> k = p_event; if (k.is_valid()) { - if (k->is_pressed() && (text_edit->has_focus() || text_vbc->is_a_parent_of(get_focus_owner()))) { + if (k->is_pressed() && (text_edit->has_focus() || vbc_lineedit->is_a_parent_of(get_focus_owner()))) { bool accepted = true; @@ -181,6 +186,7 @@ void FindReplaceBar::_replace() { void FindReplaceBar::_replace_all() { + text_edit->disconnect("text_changed", this, "_editor_text_changed"); // line as x so it gets priority in comparison, column as y Point2i orig_cursor(text_edit->cursor_get_line(), text_edit->cursor_get_column()); Point2i prev_match = Point2(-1, -1); @@ -254,6 +260,8 @@ void FindReplaceBar::_replace_all() { text_edit->set_v_scroll(vsval); set_error(vformat(TTR("Replaced %d occurrence(s)."), rc)); + + text_edit->call_deferred("connect", "text_changed", this, "_editor_text_changed"); } void FindReplaceBar::_get_search_from(int &r_line, int &r_col) { @@ -355,13 +363,13 @@ void FindReplaceBar::_hide_bar() { text_edit->set_search_text(""); result_line = -1; result_col = -1; - replace_hbc->hide(); - replace_options_hbc->hide(); + set_error(""); hide(); } void FindReplaceBar::_show_search() { + hide(); // to update size correctly show(); search_text->grab_focus(); @@ -374,21 +382,24 @@ void FindReplaceBar::_show_search() { search_text->set_cursor_position(search_text->get_text().length()); search_current(); } + call_deferred("_update_size"); } void FindReplaceBar::popup_search() { - replace_hbc->hide(); - replace_options_hbc->hide(); + replace_text->hide(); + hbc_button_replace->hide(); + hbc_option_replace->hide(); _show_search(); } void FindReplaceBar::popup_replace() { - if (!replace_hbc->is_visible_in_tree() || !replace_options_hbc->is_visible_in_tree()) { + if (!replace_text->is_visible_in_tree()) { replace_text->clear(); - replace_hbc->show(); - replace_options_hbc->show(); + replace_text->show(); + hbc_button_replace->show(); + hbc_option_replace->show(); } selection_only->set_pressed((text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line())); @@ -455,7 +466,7 @@ bool FindReplaceBar::is_selection_only() const { void FindReplaceBar::set_error(const String &p_label) { - error_label->set_text(p_label); + emit_signal("error", p_label); } void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) { @@ -464,6 +475,11 @@ void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) { text_edit->connect("text_changed", this, "_editor_text_changed"); } +void FindReplaceBar::_update_size() { + + container->set_custom_minimum_size(Size2(0, hbc->get_size().height)); +} + void FindReplaceBar::_bind_methods() { ClassDB::bind_method("_unhandled_input", &FindReplaceBar::_unhandled_input); @@ -479,486 +495,101 @@ void FindReplaceBar::_bind_methods() { ClassDB::bind_method("_replace_all_pressed", &FindReplaceBar::_replace_all); ClassDB::bind_method("_search_options_changed", &FindReplaceBar::_search_options_changed); ClassDB::bind_method("_hide_pressed", &FindReplaceBar::_hide_bar); + ClassDB::bind_method("_update_size", &FindReplaceBar::_update_size); ADD_SIGNAL(MethodInfo("search")); + ADD_SIGNAL(MethodInfo("error")); } FindReplaceBar::FindReplaceBar() { + container = memnew(Control); + add_child(container); + container->set_clip_contents(true); + container->set_h_size_flags(SIZE_EXPAND_FILL); + replace_all_mode = false; preserve_cursor = false; - text_vbc = memnew(VBoxContainer); - add_child(text_vbc); - - HBoxContainer *search_hbc = memnew(HBoxContainer); - text_vbc->add_child(search_hbc); - + hbc = memnew(HBoxContainer); + container->add_child(hbc); + hbc->set_anchor_and_margin(MARGIN_RIGHT, 1, 0); + + vbc_lineedit = memnew(VBoxContainer); + hbc->add_child(vbc_lineedit); + vbc_lineedit->set_h_size_flags(SIZE_EXPAND_FILL); + VBoxContainer *vbc_button = memnew(VBoxContainer); + hbc->add_child(vbc_button); + VBoxContainer *vbc_option = memnew(VBoxContainer); + hbc->add_child(vbc_option); + + HBoxContainer *hbc_button_search = memnew(HBoxContainer); + vbc_button->add_child(hbc_button_search); + hbc_button_replace = memnew(HBoxContainer); + vbc_button->add_child(hbc_button_replace); + + HBoxContainer *hbc_option_search = memnew(HBoxContainer); + vbc_option->add_child(hbc_option_search); + hbc_option_replace = memnew(HBoxContainer); + vbc_option->add_child(hbc_option_replace); + + // search toolbar search_text = memnew(LineEdit); - search_hbc->add_child(search_text); - search_text->set_custom_minimum_size(Size2(200, 0)); + vbc_lineedit->add_child(search_text); + search_text->set_custom_minimum_size(Size2(100 * EDSCALE, 0)); search_text->connect("text_changed", this, "_search_text_changed"); search_text->connect("text_entered", this, "_search_text_entered"); find_prev = memnew(ToolButton); - search_hbc->add_child(find_prev); + hbc_button_search->add_child(find_prev); find_prev->set_focus_mode(FOCUS_NONE); find_prev->connect("pressed", this, "_search_prev"); find_next = memnew(ToolButton); - search_hbc->add_child(find_next); + hbc_button_search->add_child(find_next); find_next->set_focus_mode(FOCUS_NONE); find_next->connect("pressed", this, "_search_next"); - replace_hbc = memnew(HBoxContainer); - text_vbc->add_child(replace_hbc); - replace_hbc->hide(); - - replace_text = memnew(LineEdit); - replace_hbc->add_child(replace_text); - replace_text->set_custom_minimum_size(Size2(200, 0)); - replace_text->connect("text_entered", this, "_replace_text_entered"); - - replace = memnew(Button); - replace_hbc->add_child(replace); - replace->set_text(TTR("Replace")); - //replace->set_focus_mode(FOCUS_NONE); - replace->connect("pressed", this, "_replace_pressed"); - - replace_all = memnew(Button); - replace_hbc->add_child(replace_all); - replace_all->set_text(TTR("Replace All")); - //replace_all->set_focus_mode(FOCUS_NONE); - replace_all->connect("pressed", this, "_replace_all_pressed"); - - Control *spacer_split = memnew(Control); - spacer_split->set_custom_minimum_size(Size2(0, 1)); - text_vbc->add_child(spacer_split); - - VBoxContainer *options_vbc = memnew(VBoxContainer); - add_child(options_vbc); - options_vbc->set_h_size_flags(SIZE_EXPAND_FILL); - - HBoxContainer *search_options = memnew(HBoxContainer); - options_vbc->add_child(search_options); - case_sensitive = memnew(CheckBox); - search_options->add_child(case_sensitive); + hbc_option_search->add_child(case_sensitive); case_sensitive->set_text(TTR("Match Case")); case_sensitive->set_focus_mode(FOCUS_NONE); case_sensitive->connect("toggled", this, "_search_options_changed"); whole_words = memnew(CheckBox); - search_options->add_child(whole_words); + hbc_option_search->add_child(whole_words); whole_words->set_text(TTR("Whole Words")); whole_words->set_focus_mode(FOCUS_NONE); whole_words->connect("toggled", this, "_search_options_changed"); - error_label = memnew(Label); - search_options->add_child(error_label); - error_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); - - search_options->add_spacer(); + // replace toolbar + replace_text = memnew(LineEdit); + vbc_lineedit->add_child(replace_text); + replace_text->set_custom_minimum_size(Size2(100 * EDSCALE, 0)); + replace_text->connect("text_entered", this, "_replace_text_entered"); - hide_button = memnew(TextureButton); - search_options->add_child(hide_button); - hide_button->set_focus_mode(FOCUS_NONE); - hide_button->connect("pressed", this, "_hide_pressed"); + replace = memnew(Button); + hbc_button_replace->add_child(replace); + replace->set_text(TTR("Replace")); + replace->connect("pressed", this, "_replace_pressed"); - replace_options_hbc = memnew(HBoxContainer); - options_vbc->add_child(replace_options_hbc); - replace_options_hbc->hide(); + replace_all = memnew(Button); + hbc_button_replace->add_child(replace_all); + replace_all->set_text(TTR("Replace All")); + replace_all->connect("pressed", this, "_replace_all_pressed"); selection_only = memnew(CheckBox); - replace_options_hbc->add_child(selection_only); + hbc_option_replace->add_child(selection_only); selection_only->set_text(TTR("Selection Only")); selection_only->set_focus_mode(FOCUS_NONE); selection_only->connect("toggled", this, "_search_options_changed"); -} - -void FindReplaceDialog::popup_search() { - - set_title(TTR("Search")); - replace_mc->hide(); - replace_label->hide(); - replace_vb->hide(); - skip->hide(); - popup_centered(Point2(300, 190)); - get_ok()->set_text(TTR("Find")); - search_text->grab_focus(); - if (text_edit->is_selection_active() && (text_edit->get_selection_from_line() == text_edit->get_selection_to_line())) { - search_text->set_text(text_edit->get_selection_text()); - } - search_text->select_all(); - - error_label->set_text(""); -} - -void FindReplaceDialog::popup_replace() { - - set_title(TTR("Replace")); - bool do_selection = (text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line()); - - set_replace_selection_only(do_selection); - - if (!do_selection && text_edit->is_selection_active()) { - search_text->set_text(text_edit->get_selection_text()); - } - - replace_mc->show(); - replace_label->show(); - replace_vb->show(); - popup_centered(Point2(300, 300)); - if (search_text->get_text() != "" && replace_text->get_text() == "") { - search_text->select(0, 0); - replace_text->grab_focus(); - } else { - search_text->grab_focus(); - search_text->select_all(); - } - error_label->set_text(""); - - if (prompt->is_pressed()) { - skip->show(); - get_ok()->set_text(TTR("Next")); - selection_only->set_disabled(true); - - } else { - skip->hide(); - get_ok()->set_text(TTR("Replace")); - selection_only->set_disabled(false); - } -} - -void FindReplaceDialog::_search_callback() { - - if (is_replace_mode()) - _replace(); - else - _search(); -} - -void FindReplaceDialog::_replace_skip_callback() { - - _search(); -} - -void FindReplaceDialog::_replace() { - - text_edit->begin_complex_operation(); - if (is_replace_all_mode()) { - - //line as x so it gets priority in comparison, column as y - Point2i orig_cursor(text_edit->cursor_get_line(), text_edit->cursor_get_column()); - Point2i prev_match = Point2(-1, -1); - - bool selection_enabled = text_edit->is_selection_active(); - Point2i selection_begin, selection_end; - if (selection_enabled) { - selection_begin = Point2i(text_edit->get_selection_from_line(), text_edit->get_selection_from_column()); - selection_end = Point2i(text_edit->get_selection_to_line(), text_edit->get_selection_to_column()); - } - int vsval = text_edit->get_v_scroll(); - //int hsval = text_edit->get_h_scroll(); - - text_edit->cursor_set_line(0); - text_edit->cursor_set_column(0); - - int rc = 0; - - while (_search()) { - - if (!text_edit->is_selection_active()) { - //search selects - break; - } - - //replace area - Point2i match_from(text_edit->get_selection_from_line(), text_edit->get_selection_from_column()); - Point2i match_to(text_edit->get_selection_to_line(), text_edit->get_selection_to_column()); - - if (match_from < prev_match) - break; //done - - prev_match = match_to; - - if (selection_enabled && is_replace_selection_only()) { - - if (match_from < selection_begin || match_to > selection_end) - continue; - - //replace but adjust selection bounds - - text_edit->insert_text_at_cursor(get_replace_text()); - if (match_to.x == selection_end.x) - selection_end.y += get_replace_text().length() - get_search_text().length(); - } else { - //just replace - text_edit->insert_text_at_cursor(get_replace_text()); - } - rc++; - } - //restore editor state (selection, cursor, scroll) - text_edit->cursor_set_line(orig_cursor.x); - text_edit->cursor_set_column(orig_cursor.y); - - if (selection_enabled && is_replace_selection_only()) { - //reselect - text_edit->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y); - } else { - text_edit->deselect(); - } - - text_edit->set_v_scroll(vsval); - //text_edit->set_h_scroll(hsval); - error_label->set_text(vformat(TTR("Replaced %d occurrence(s)."), rc)); - - //hide(); - } else { - - if (text_edit->get_selection_text() == get_search_text()) { - - text_edit->insert_text_at_cursor(get_replace_text()); - } - - _search(); - } - text_edit->end_complex_operation(); -} - -bool FindReplaceDialog::_search() { - - String text = get_search_text(); - uint32_t flags = 0; - - if (is_whole_words()) - flags |= TextEdit::SEARCH_WHOLE_WORDS; - if (is_case_sensitive()) - flags |= TextEdit::SEARCH_MATCH_CASE; - if (is_backwards()) - flags |= TextEdit::SEARCH_BACKWARDS; - - int line = text_edit->cursor_get_line(), col = text_edit->cursor_get_column(); - - if (is_backwards()) { - col -= 1; - if (col < 0) { - line -= 1; - if (line < 0) { - line = text_edit->get_line_count() - 1; - } - col = text_edit->get_line(line).length(); - } - } - bool found = text_edit->search(text, flags, line, col, line, col); - - if (found) { - // print_line("found"); - text_edit->unfold_line(line); - text_edit->cursor_set_line(line); - if (is_backwards()) - text_edit->cursor_set_column(col); - else - text_edit->cursor_set_column(col + text.length()); - text_edit->select(line, col, line, col + text.length()); - set_error(""); - return true; - } else { - - set_error(TTR("Not found!")); - return false; - } -} - -void FindReplaceDialog::_prompt_changed() { - - if (prompt->is_pressed()) { - skip->show(); - get_ok()->set_text(TTR("Next")); - selection_only->set_disabled(true); - - } else { - skip->hide(); - get_ok()->set_text(TTR("Replace")); - selection_only->set_disabled(false); - } -} - -void FindReplaceDialog::_skip_pressed() { - - _replace_skip_callback(); -} - -bool FindReplaceDialog::is_replace_mode() const { - - return replace_text->is_visible_in_tree(); -} - -bool FindReplaceDialog::is_replace_all_mode() const { - - return !prompt->is_pressed(); -} - -bool FindReplaceDialog::is_replace_selection_only() const { - - return selection_only->is_pressed(); -} -void FindReplaceDialog::set_replace_selection_only(bool p_enable) { - - selection_only->set_pressed(p_enable); -} - -void FindReplaceDialog::ok_pressed() { - - _search_callback(); -} - -void FindReplaceDialog::_search_text_entered(const String &p_text) { - - if (replace_text->is_visible_in_tree()) - return; - emit_signal("search"); - _search(); -} - -void FindReplaceDialog::_replace_text_entered(const String &p_text) { - - if (!replace_text->is_visible_in_tree()) - return; - - emit_signal("search"); - _replace(); -} - -String FindReplaceDialog::get_search_text() const { - - return search_text->get_text(); -} -String FindReplaceDialog::get_replace_text() const { - - return replace_text->get_text(); -} -bool FindReplaceDialog::is_whole_words() const { - - return whole_words->is_pressed(); -} -bool FindReplaceDialog::is_case_sensitive() const { - - return case_sensitive->is_pressed(); -} -bool FindReplaceDialog::is_backwards() const { - - return backwards->is_pressed(); -} - -void FindReplaceDialog::set_error(const String &p_error) { - - error_label->set_text(p_error); -} - -void FindReplaceDialog::set_text_edit(TextEdit *p_text_edit) { - - text_edit = p_text_edit; -} - -void FindReplaceDialog::search_next() { - _search(); -} - -void FindReplaceDialog::_bind_methods() { - - ClassDB::bind_method("_search_text_entered", &FindReplaceDialog::_search_text_entered); - ClassDB::bind_method("_replace_text_entered", &FindReplaceDialog::_replace_text_entered); - ClassDB::bind_method("_prompt_changed", &FindReplaceDialog::_prompt_changed); - ClassDB::bind_method("_skip_pressed", &FindReplaceDialog::_skip_pressed); - ADD_SIGNAL(MethodInfo("search")); - ADD_SIGNAL(MethodInfo("skip")); -} - -FindReplaceDialog::FindReplaceDialog() { - - set_self_modulate(Color(1, 1, 1, 0.8)); - - VBoxContainer *vb = memnew(VBoxContainer); - add_child(vb); - - search_text = memnew(LineEdit); - vb->add_margin_child(TTR("Search"), search_text); - search_text->connect("text_entered", this, "_search_text_entered"); - - replace_label = memnew(Label); - replace_label->set_text(TTR("Replace By")); - vb->add_child(replace_label); - replace_mc = memnew(MarginContainer); - vb->add_child(replace_mc); - - replace_text = memnew(LineEdit); - replace_text->set_anchor(MARGIN_RIGHT, ANCHOR_END); - replace_text->set_begin(Point2(15, 132)); - replace_text->set_end(Point2(-15, 135)); - - replace_mc->add_child(replace_text); - - replace_text->connect("text_entered", this, "_replace_text_entered"); - - MarginContainer *opt_mg = memnew(MarginContainer); - vb->add_child(opt_mg); - VBoxContainer *svb = memnew(VBoxContainer); - opt_mg->add_child(svb); - - svb->add_child(memnew(Label)); - - whole_words = memnew(CheckButton); - whole_words->set_text(TTR("Whole Words")); - svb->add_child(whole_words); - - case_sensitive = memnew(CheckButton); - case_sensitive->set_text(TTR("Case Sensitive")); - svb->add_child(case_sensitive); - - backwards = memnew(CheckButton); - backwards->set_text(TTR("Backwards")); - svb->add_child(backwards); - - opt_mg = memnew(MarginContainer); - vb->add_child(opt_mg); - VBoxContainer *rvb = memnew(VBoxContainer); - opt_mg->add_child(rvb); - replace_vb = rvb; - //rvb ->add_child(memnew(HSeparator)); - rvb->add_child(memnew(Label)); - - prompt = memnew(CheckButton); - prompt->set_text(TTR("Prompt On Replace")); - rvb->add_child(prompt); - prompt->connect("pressed", this, "_prompt_changed"); - - selection_only = memnew(CheckButton); - selection_only->set_text(TTR("Selection Only")); - rvb->add_child(selection_only); - - int margin = get_constant("margin", "Dialogs"); - int button_margin = get_constant("button_margin", "Dialogs"); - - skip = memnew(Button); - skip->set_anchor(MARGIN_LEFT, ANCHOR_END); - skip->set_anchor(MARGIN_TOP, ANCHOR_END); - skip->set_anchor(MARGIN_RIGHT, ANCHOR_END); - skip->set_anchor(MARGIN_BOTTOM, ANCHOR_END); - skip->set_begin(Point2(-70, -button_margin)); - skip->set_end(Point2(-10, -margin)); - skip->set_text(TTR("Skip")); - add_child(skip); - skip->connect("pressed", this, "_skip_pressed"); - - error_label = memnew(Label); - error_label->set_align(Label::ALIGN_CENTER); - error_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); - - vb->add_child(error_label); - - set_hide_on_ok(false); + hide_button = memnew(TextureButton); + add_child(hide_button); + hide_button->set_focus_mode(FOCUS_NONE); + hide_button->connect("pressed", this, "_hide_pressed"); + hide_button->set_expand(true); + hide_button->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED); } /*** CODE EDITOR ****/ @@ -1033,7 +664,7 @@ void CodeTextEditor::_reset_zoom() { Ref<DynamicFont> font = text_editor->get_font("font"); // reset source font size to default if (font.is_valid()) { - EditorSettings::get_singleton()->set("interface/editor/source_font_size", 14); + EditorSettings::get_singleton()->set("interface/editor/code_font_size", 14); font->set_size(14); } } @@ -1097,7 +728,7 @@ bool CodeTextEditor::_add_font_size(int p_delta) { if (font.is_valid()) { int new_size = CLAMP(font->get_size() + p_delta, 8 * EDSCALE, 96 * EDSCALE); if (new_size != font->get_size()) { - EditorSettings::get_singleton()->set("interface/editor/source_font_size", new_size / EDSCALE); + EditorSettings::get_singleton()->set("interface/editor/code_font_size", new_size / EDSCALE); font->set_size(new_size); } @@ -1139,20 +770,7 @@ void CodeTextEditor::set_error(const String &p_error) { void CodeTextEditor::_update_font() { - // FONTS - String editor_font = EDITOR_DEF("text_editor/theme/font", ""); - bool font_overridden = false; - if (editor_font != "") { - Ref<Font> fnt = ResourceLoader::load(editor_font); - if (fnt.is_valid()) { - text_editor->add_font_override("font", fnt); - font_overridden = true; - } - } - if (!font_overridden) { - - text_editor->add_font_override("font", get_font("source", "EditorFonts")); - } + text_editor->add_font_override("font", get_font("source", "EditorFonts")); } void CodeTextEditor::_on_settings_change() { @@ -1251,11 +869,12 @@ CodeTextEditor::CodeTextEditor() { error = memnew(Label); status_bar->add_child(error); - error->set_clip_text(true); //do not change, or else very long errors can push the whole container to the right + error->set_autowrap(true); error->set_valign(Label::VALIGN_CENTER); error->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); error->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); error->set_h_size_flags(SIZE_EXPAND_FILL); //required for it to display, given now it's clipping contents, do not touch + find_replace_bar->connect("error", error, "set_text"); status_bar->add_child(memnew(Label)); //to keep the height if the other labels are not visible diff --git a/editor/code_editor.h b/editor/code_editor.h index 6f4e45352b..db2e25b922 100644 --- a/editor/code_editor.h +++ b/editor/code_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CODE_EDITOR_H #define CODE_EDITOR_H @@ -62,12 +63,12 @@ class FindReplaceBar : public HBoxContainer { GDCLASS(FindReplaceBar, HBoxContainer); + Control *container; LineEdit *search_text; ToolButton *find_prev; ToolButton *find_next; CheckBox *case_sensitive; CheckBox *whole_words; - Label *error_label; TextureButton *hide_button; LineEdit *replace_text; @@ -75,9 +76,10 @@ class FindReplaceBar : public HBoxContainer { Button *replace_all; CheckBox *selection_only; - VBoxContainer *text_vbc; - HBoxContainer *replace_hbc; - HBoxContainer *replace_options_hbc; + HBoxContainer *hbc; + VBoxContainer *vbc_lineedit; + HBoxContainer *hbc_button_replace; + HBoxContainer *hbc_option_replace; TextEdit *text_edit; @@ -97,6 +99,7 @@ class FindReplaceBar : public HBoxContainer { void _search_text_changed(const String &p_text); void _search_text_entered(const String &p_text); void _replace_text_entered(const String &p_text); + void _update_size(); protected: void _notification(int p_what); @@ -130,62 +133,6 @@ public: FindReplaceBar(); }; -class FindReplaceDialog : public ConfirmationDialog { - - GDCLASS(FindReplaceDialog, ConfirmationDialog); - - LineEdit *search_text; - LineEdit *replace_text; - CheckButton *whole_words; - CheckButton *case_sensitive; - CheckButton *backwards; - CheckButton *prompt; - CheckButton *selection_only; - Button *skip; - Label *error_label; - MarginContainer *replace_mc; - Label *replace_label; - VBoxContainer *replace_vb; - - void _search_text_entered(const String &p_text); - void _replace_text_entered(const String &p_text); - void _prompt_changed(); - void _skip_pressed(); - - TextEdit *text_edit; - -protected: - void _search_callback(); - void _replace_skip_callback(); - - bool _search(); - void _replace(); - - virtual void ok_pressed(); - static void _bind_methods(); - -public: - String get_search_text() const; - String get_replace_text() const; - bool is_whole_words() const; - bool is_case_sensitive() const; - bool is_backwards() const; - bool is_replace_mode() const; - bool is_replace_all_mode() const; - bool is_replace_selection_only() const; - void set_replace_selection_only(bool p_enable); - - void set_error(const String &p_error); - - void popup_search(); - void popup_replace(); - - void set_text_edit(TextEdit *p_text_edit); - - void search_next(); - FindReplaceDialog(); -}; - typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<String> *r_options, bool &r_forced); class CodeTextEditor : public VBoxContainer { diff --git a/editor/collada/collada.cpp b/editor/collada/collada.cpp index f7f11f40f5..4ce57d7f63 100644 --- a/editor/collada/collada.cpp +++ b/editor/collada/collada.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef TOOLS_ENABLED #include "collada.h" @@ -907,7 +908,7 @@ void Collada::_parse_curve_geometry(XMLParser &parser, String p_id, String p_nam COLLADA_PRINT("curve name: " + p_name); String current_source; - // handles geometry node and the curve childs in this loop + // handles geometry node and the curve children in this loop // read sources with arrays and accessor for each curve if (parser.is_empty()) { return; @@ -995,7 +996,7 @@ void Collada::_parse_mesh_geometry(XMLParser &parser, String p_id, String p_name COLLADA_PRINT("mesh name: " + p_name); String current_source; - // handles geometry node and the mesh childs in this loop + // handles geometry node and the mesh children in this loop // read sources with arrays and accessor for each mesh if (parser.is_empty()) { return; diff --git a/editor/collada/collada.h b/editor/collada/collada.h index 34bd93bcfe..ec3284bc5c 100644 --- a/editor/collada/collada.h +++ b/editor/collada/collada.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef TOOLS_ENABLED #ifndef COLLADA_H diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index 9783d0cc4e..3466d17980 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "connections_dialog.h" #include "editor_node.h" diff --git a/editor/connections_dialog.h b/editor/connections_dialog.h index 59715c15c3..5e26e00f67 100644 --- a/editor/connections_dialog.h +++ b/editor/connections_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONNECTIONS_DIALOG_H #define CONNECTIONS_DIALOG_H diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index a601c8cd2b..48ceb82dc3 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "create_dialog.h" #include "class_db.h" @@ -37,7 +38,7 @@ #include "print_string.h" #include "scene/gui/box_container.h" -void CreateDialog::popup_create(bool p_dontclear) { +void CreateDialog::popup_create(bool p_dont_clear, bool p_replace_mode) { recent->clear(); @@ -89,11 +90,12 @@ void CreateDialog::popup_create(bool p_dontclear) { popup_centered_ratio(); } - if (p_dontclear) + if (p_dont_clear) { search_box->select_all(); - else { + } else { search_box->clear(); } + search_box->grab_focus(); _update_search(); @@ -104,8 +106,19 @@ void CreateDialog::popup_create(bool p_dontclear) { if (enable_rl) { search_options->add_constant_override("draw_relationship_lines", 1); search_options->add_color_override("relationship_line_color", rl_color); - } else + } else { search_options->add_constant_override("draw_relationship_lines", 0); + } + + is_replace_mode = p_replace_mode; + + if (p_replace_mode) { + set_title(vformat(TTR("Change %s Type"), base_type)); + get_ok()->set_text(TTR("Change")); + } else { + set_title(vformat(TTR("Create New %s"), base_type)); + get_ok()->set_text(TTR("Create")); + } } void CreateDialog::_text_changed(const String &p_newtext) { @@ -242,6 +255,10 @@ void CreateDialog::_update_search() { if (base_type == "Node" && type.begins_with("Editor")) continue; // do not show editor nodes + if (base_type == "Resource" && ClassDB::is_parent_class(type, "PluginScript")) + // PluginScript must be initialized before use, which is not possible here + continue; + if (!ClassDB::can_instance(type)) continue; // can't create what can't be instanced @@ -369,7 +386,11 @@ void CreateDialog::_notification(int p_what) { void CreateDialog::set_base_type(const String &p_base) { base_type = p_base; - set_title(vformat(TTR("Create New %s"), p_base)); + if (is_replace_mode) + set_title(vformat(TTR("Change %s Type"), p_base)); + else + set_title(vformat(TTR("Create New %s"), p_base)); + _update_search(); } @@ -624,6 +645,8 @@ void CreateDialog::_bind_methods() { CreateDialog::CreateDialog() { + is_replace_mode = false; + ClassDB::get_class_list(&type_list); type_list.sort_custom<StringName::AlphCompare>(); @@ -678,7 +701,6 @@ CreateDialog::CreateDialog() { search_box->connect("gui_input", this, "_sbox_input"); search_options = memnew(Tree); vbc->add_margin_child(TTR("Matches:"), search_options, true); - get_ok()->set_text(TTR("Create")); get_ok()->set_disabled(true); register_text_enter(search_box); set_hide_on_ok(false); diff --git a/editor/create_dialog.h b/editor/create_dialog.h index 56ba7f8a3e..da17dcbe89 100644 --- a/editor/create_dialog.h +++ b/editor/create_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CREATE_DIALOG_H #define CREATE_DIALOG_H @@ -52,6 +53,7 @@ class CreateDialog : public ConfirmationDialog { Button *favorite; LineEdit *search_box; Tree *search_options; + bool is_replace_mode; String base_type; String preferred_search_result_type; EditorHelpBit *help_bit; @@ -97,7 +99,7 @@ public: void set_preferred_search_result_type(const String &p_preferred_type); String get_preferred_search_result_type(); - void popup_create(bool p_dontclear); + void popup_create(bool p_dont_clear, bool p_replace_mode = false); CreateDialog(); }; diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index f18a966151..19fd297f69 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dependency_editor.h" #include "editor_node.h" @@ -514,7 +515,7 @@ void DependencyRemoveDialog::ok_pressed() { print_line("Moving to trash: " + path); Error err = OS::get_singleton()->move_to_trash(path); if (err != OK) { - EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:\n") + to_delete[i] + "\n"); + EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:") + "\n" + to_delete[i] + "\n"); } } @@ -594,6 +595,7 @@ DependencyErrorDialog::DependencyErrorDialog() { files->set_hide_root(true); vb->add_margin_child(TTR("Scene failed to load due to missing dependencies:"), files, true); files->set_v_size_flags(SIZE_EXPAND_FILL); + files->set_custom_minimum_size(Size2(1, 200)); get_ok()->set_text(TTR("Open Anyway")); get_cancel()->set_text(TTR("Close")); @@ -625,7 +627,7 @@ bool OrphanResourcesDialog::_fill_owners(EditorFileSystemDirectory *efsd, HashMa if (!efsd) return false; - bool has_childs = false; + bool has_children = false; for (int i = 0; i < efsd->get_subdir_count(); i++) { @@ -641,7 +643,7 @@ bool OrphanResourcesDialog::_fill_owners(EditorFileSystemDirectory *efsd, HashMa if (!children) { memdelete(dir_item); } else { - has_childs = true; + has_children = true; } } } @@ -681,12 +683,12 @@ bool OrphanResourcesDialog::_fill_owners(EditorFileSystemDirectory *efsd, HashMa ti->add_button(1, get_icon("GuiVisibilityVisible", "EditorIcons")); } ti->set_metadata(0, path); - has_childs = true; + has_children = true; } } } - return has_childs; + return has_children; } void OrphanResourcesDialog::refresh() { diff --git a/editor/dependency_editor.h b/editor/dependency_editor.h index bbe2b3494b..16135c352b 100644 --- a/editor/dependency_editor.h +++ b/editor/dependency_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DEPENDENCY_EDITOR_H #define DEPENDENCY_EDITOR_H diff --git a/editor/dictionary_property_edit.cpp b/editor/dictionary_property_edit.cpp index b1451dc378..4c0ad59385 100644 --- a/editor/dictionary_property_edit.cpp +++ b/editor/dictionary_property_edit.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dictionary_property_edit.h" #include "editor_node.h" diff --git a/editor/dictionary_property_edit.h b/editor/dictionary_property_edit.h index 8e495b31a9..83489fe7de 100644 --- a/editor/dictionary_property_edit.h +++ b/editor/dictionary_property_edit.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DICTIONARY_PROPERTY_EDIT_H #define DICTIONARY_PROPERTY_EDIT_H diff --git a/editor/doc/doc_data.cpp b/editor/doc/doc_data.cpp index 4a99ce8f51..58eaab78ed 100644 --- a/editor/doc/doc_data.cpp +++ b/editor/doc/doc_data.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "doc_data.h" #include "engine.h" diff --git a/editor/doc/doc_data.h b/editor/doc/doc_data.h index 53774ce1f0..0461133f9f 100644 --- a/editor/doc/doc_data.h +++ b/editor/doc/doc_data.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DOC_DATA_H #define DOC_DATA_H diff --git a/editor/doc/doc_dump.cpp b/editor/doc/doc_dump.cpp index 8d35cad6d6..905732a43f 100644 --- a/editor/doc/doc_dump.cpp +++ b/editor/doc/doc_dump.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "doc_dump.h" #include "os/file_access.h" diff --git a/editor/doc/doc_dump.h b/editor/doc/doc_dump.h index 70280195c4..48cf1a587b 100644 --- a/editor/doc/doc_dump.h +++ b/editor/doc/doc_dump.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DOC_DUMP_H #define DOC_DUMP_H diff --git a/editor/doc_code_font.h b/editor/doc_code_font.h deleted file mode 100644 index 41713befcb..0000000000 --- a/editor/doc_code_font.h +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* doc_code_font.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 Godot Engine contributors (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. */ -/*************************************************************************/ -static const int _bi_font_doc_code_font_height = 19; -static const int _bi_font_doc_code_font_ascent = 15; -static const int _bi_font_doc_code_font_charcount = 193; -static const int _bi_font_doc_code_font_characters[] = { 0, 253, 53, 2, 2, -1, 14, 0, 13, 253, 56, 2, 2, -1, 14, 0, 32, 253, 59, 2, 2, -1, 14, 4, 33, 221, 29, 3, 12, 1, 3, 5, 34, 144, 77, 6, 5, 0, 3, 7, 35, 180, 55, 9, 11, -1, 4, 8, 36, 215, 0, 8, 15, 0, 2, 8, 37, 28, 45, 12, 11, -1, 4, 12, 38, 199, 16, 11, 12, 0, 3, 11, 39, 157, 77, 3, 5, 0, 3, 4, 40, 36, 16, 4, 15, 0, 3, 5, 41, 31, 16, 4, 15, 0, 3, 5, 42, 93, 79, 9, 7, -1, 3, 8, 43, 110, 68, 9, 9, -1, 5, 8, 44, 121, 78, 4, 6, -1, 12, 4, 45, 204, 76, 5, 3, -1, 9, 5, 46, 216, 75, 4, 3, 0, 12, 4, 47, 233, 0, 8, 15, -1, 2, 7, 48, 246, 29, 9, 11, -1, 4, 8, 49, 208, 54, 8, 11, 0, 4, 8, 50, 219, 42, 9, 11, -1, 4, 8, 51, 229, 41, 9, 11, -1, 4, 8, 52, 239, 41, 9, 11, -1, 4, 8, 53, 0, 57, 9, 11, -1, 4, 8, 54, 160, 55, 9, 11, -1, 4, 8, 55, 10, 57, 9, 11, -1, 4, 8, 56, 20, 57, 9, 11, -1, 4, 8, 57, 40, 57, 9, 11, -1, 4, 8, 58, 78, 80, 3, 8, 0, 7, 4, 59, 72, 68, 4, 11, -1, 7, 4, 60, 18, 69, 8, 11, 0, 4, 8, 61, 112, 78, 8, 7, 0, 6, 8, 62, 0, 69, 8, 11, 0, 4, 8, 63, 184, 30, 7, 12, 0, 3, 7, 64, 148, 16, 13, 13, 0, 4, 14, 65, 117, 44, 11, 11, -1, 4, 10, 66, 50, 57, 9, 11, 0, 4, 9, 67, 197, 42, 10, 11, -1, 4, 8, 68, 153, 43, 10, 11, 0, 4, 10, 69, 244, 53, 8, 11, 0, 4, 8, 70, 43, 69, 7, 11, 0, 4, 7, 71, 93, 44, 11, 11, -1, 4, 10, 72, 60, 56, 9, 11, 0, 4, 10, 73, 77, 68, 4, 11, 0, 4, 4, 74, 249, 41, 6, 11, -1, 4, 5, 75, 70, 56, 9, 11, 0, 4, 9, 76, 27, 69, 7, 11, 0, 4, 7, 77, 14, 45, 13, 11, 0, 4, 14, 78, 208, 42, 10, 11, 0, 4, 11, 79, 41, 45, 12, 11, -1, 4, 11, 80, 199, 54, 8, 11, 0, 4, 9, 81, 162, 16, 13, 13, -1, 4, 11, 82, 80, 56, 9, 11, 0, 4, 9, 83, 90, 56, 9, 11, -1, 4, 8, 84, 100, 56, 9, 11, -1, 4, 8, 85, 164, 43, 10, 11, 0, 4, 10, 86, 129, 44, 11, 11, -1, 4, 9, 87, 229, 29, 16, 11, -1, 4, 15, 88, 175, 43, 10, 11, -1, 4, 9, 89, 186, 43, 10, 11, -1, 4, 8, 90, 110, 56, 9, 11, -1, 4, 8, 91, 26, 16, 4, 15, 0, 3, 5, 92, 123, 0, 10, 15, -2, 2, 7, 93, 251, 0, 4, 15, 0, 3, 5, 94, 82, 79, 10, 7, -2, 4, 8, 95, 180, 76, 9, 3, -1, 15, 8, 96, 161, 77, 6, 4, -1, 3, 5, 97, 27, 81, 8, 8, -1, 7, 8, 98, 68, 31, 8, 12, 0, 3, 9, 99, 18, 81, 8, 8, -1, 7, 7, 100, 211, 16, 9, 12, -1, 3, 9, 101, 228, 66, 9, 8, -1, 7, 8, 102, 176, 30, 7, 12, -1, 3, 5, 103, 120, 56, 9, 11, -1, 7, 8, 104, 59, 31, 8, 12, 0, 3, 9, 105, 66, 68, 5, 11, -1, 4, 4, 106, 141, 16, 6, 14, -2, 4, 4, 107, 104, 31, 8, 12, 0, 3, 8, 108, 251, 16, 3, 12, 0, 3, 4, 109, 144, 68, 13, 8, 0, 7, 13, 110, 9, 81, 8, 8, 0, 7, 9, 111, 208, 66, 9, 8, -1, 7, 9, 112, 217, 54, 8, 11, 0, 7, 9, 113, 140, 56, 9, 11, -1, 7, 9, 114, 53, 81, 6, 8, 0, 7, 6, 115, 45, 81, 7, 8, -1, 7, 6, 116, 102, 68, 7, 10, -1, 5, 6, 117, 36, 81, 8, 8, 0, 7, 9, 118, 238, 65, 9, 8, -1, 7, 8, 119, 158, 68, 13, 8, -1, 7, 12, 120, 218, 66, 9, 8, -1, 7, 7, 121, 150, 56, 9, 11, -1, 7, 8, 122, 248, 65, 7, 8, -1, 7, 6, 123, 14, 16, 5, 15, 0, 3, 6, 124, 41, 16, 3, 15, 2, 3, 8, 125, 20, 16, 5, 15, 0, 3, 6, 126, 135, 78, 8, 5, -1, 4, 8, 160, 253, 62, 2, 2, -1, 14, 4, 161, 225, 29, 3, 12, 0, 5, 5, 162, 35, 69, 7, 11, 0, 4, 8, 163, 190, 55, 8, 11, 0, 4, 8, 164, 82, 68, 9, 10, -1, 5, 8, 165, 105, 44, 11, 11, -2, 4, 8, 166, 45, 16, 3, 15, 2, 3, 8, 167, 125, 16, 8, 14, 0, 3, 8, 168, 197, 76, 6, 3, 0, 4, 7, 169, 186, 16, 12, 12, 0, 3, 13, 170, 137, 68, 6, 9, 0, 4, 7, 171, 197, 67, 10, 8, -1, 6, 9, 172, 126, 78, 8, 5, -1, 8, 8, 173, 210, 75, 5, 3, -1, 9, 5, 174, 103, 79, 8, 7, 0, 3, 8, 175, 190, 76, 6, 3, 0, 4, 6, 176, 151, 77, 5, 5, 0, 3, 5, 177, 221, 16, 9, 12, -1, 3, 8, 178, 60, 81, 6, 8, -1, 2, 5, 179, 67, 80, 5, 8, -1, 2, 5, 180, 168, 77, 6, 4, -1, 3, 5, 181, 170, 55, 9, 11, 0, 7, 9, 182, 176, 16, 9, 13, 0, 4, 10, 183, 221, 75, 3, 3, 0, 9, 4, 184, 175, 76, 4, 4, 0, 14, 5, 185, 73, 80, 4, 8, 0, 2, 4, 186, 129, 68, 7, 9, 0, 4, 7, 187, 185, 67, 11, 8, -1, 6, 9, 188, 54, 44, 12, 11, -2, 4, 11, 189, 67, 44, 12, 11, -2, 4, 11, 190, 80, 44, 12, 11, -1, 4, 11, 191, 192, 29, 7, 12, -1, 5, 7, 192, 88, 0, 11, 15, -1, 0, 10, 193, 64, 0, 11, 15, -1, 0, 10, 194, 76, 0, 11, 15, -1, 0, 10, 195, 100, 0, 11, 15, -1, 0, 10, 196, 74, 16, 11, 14, -1, 1, 10, 197, 62, 16, 11, 14, -1, 1, 10, 198, 0, 45, 13, 11, -1, 4, 12, 199, 107, 16, 8, 14, 0, 4, 8, 200, 188, 0, 8, 15, 0, 0, 8, 201, 206, 0, 8, 15, 0, 0, 8, 202, 224, 0, 8, 15, 0, 0, 8, 203, 116, 16, 8, 14, 0, 1, 8, 204, 0, 16, 6, 15, -2, 0, 4, 205, 7, 16, 6, 15, -1, 0, 4, 206, 242, 0, 8, 15, -2, 0, 4, 207, 134, 16, 6, 14, -1, 1, 4, 208, 141, 44, 11, 11, -1, 4, 10, 209, 145, 0, 10, 15, 0, 0, 11, 210, 0, 0, 12, 15, -1, 0, 11, 211, 39, 0, 12, 15, -1, 0, 11, 212, 26, 0, 12, 15, -1, 0, 11, 213, 13, 0, 12, 15, -1, 0, 11, 214, 49, 16, 12, 14, -1, 1, 11, 215, 0, 81, 8, 8, 0, 6, 8, 216, 52, 0, 11, 15, 0, 2, 11, 217, 167, 0, 10, 15, 0, 0, 10, 218, 134, 0, 10, 15, 0, 0, 10, 219, 156, 0, 10, 15, 0, 0, 10, 220, 86, 16, 10, 14, 0, 1, 10, 221, 112, 0, 10, 15, -1, 0, 8, 222, 226, 54, 8, 11, 0, 4, 9, 223, 77, 31, 8, 12, 0, 3, 9, 224, 113, 31, 8, 12, -1, 3, 8, 225, 122, 31, 8, 12, -1, 3, 8, 226, 131, 31, 8, 12, -1, 3, 8, 227, 167, 30, 8, 12, -1, 3, 8, 228, 235, 53, 8, 11, -1, 4, 8, 229, 50, 31, 8, 12, -1, 3, 8, 230, 172, 67, 12, 8, 0, 7, 12, 231, 51, 69, 7, 11, 0, 7, 7, 232, 40, 32, 9, 12, -1, 3, 8, 233, 231, 16, 9, 12, -1, 3, 8, 234, 241, 16, 9, 12, -1, 3, 8, 235, 30, 57, 9, 11, -1, 4, 8, 236, 200, 29, 6, 12, -2, 3, 4, 237, 214, 29, 6, 12, -1, 3, 4, 238, 207, 29, 6, 12, -1, 3, 4, 239, 59, 69, 6, 11, -1, 4, 4, 240, 86, 31, 8, 12, 0, 3, 9, 241, 95, 31, 8, 12, 0, 3, 9, 242, 0, 32, 9, 12, -1, 3, 9, 243, 10, 32, 9, 12, -1, 3, 9, 244, 20, 32, 9, 12, -1, 3, 9, 245, 30, 32, 9, 12, -1, 3, 9, 246, 130, 56, 9, 11, -1, 4, 9, 247, 120, 68, 8, 9, -1, 5, 8, 248, 92, 68, 9, 10, 0, 6, 9, 249, 140, 31, 8, 12, 0, 3, 9, 250, 149, 30, 8, 12, 0, 3, 9, 251, 158, 30, 8, 12, 0, 3, 9, 252, 9, 69, 8, 11, 0, 4, 9, 253, 178, 0, 9, 15, -1, 3, 8, 254, 197, 0, 8, 15, 0, 3, 9, 255, 97, 16, 9, 14, -1, 4, 8 }; diff --git a/editor/doc_font.h b/editor/doc_font.h deleted file mode 100644 index ae80db7b1c..0000000000 --- a/editor/doc_font.h +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* doc_font.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 Godot Engine contributors (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. */ -/*************************************************************************/ -static const int _bi_font_doc_font_height = 18; -static const int _bi_font_doc_font_ascent = 14; -static const int _bi_font_doc_font_charcount = 193; -static const int _bi_font_doc_font_characters[] = { 0, 253, 3, 2, 2, -1, 13, 0, 13, 253, 9, 2, 2, -1, 13, 0, 32, 253, 0, 2, 2, -1, 13, 3, 33, 220, 26, 3, 11, 1, 3, 5, 34, 187, 59, 5, 5, 0, 3, 6, 35, 88, 40, 9, 10, -1, 4, 7, 36, 50, 0, 8, 14, -1, 2, 7, 37, 175, 14, 11, 11, -1, 3, 11, 38, 187, 14, 11, 11, -1, 3, 10, 39, 198, 58, 3, 5, 0, 3, 3, 40, 98, 0, 4, 14, 0, 3, 5, 41, 103, 0, 4, 14, 0, 3, 5, 42, 146, 61, 7, 6, 0, 3, 7, 43, 246, 48, 8, 8, -1, 5, 7, 44, 193, 58, 4, 5, -1, 11, 4, 45, 13, 73, 5, 2, 0, 9, 5, 46, 241, 57, 3, 3, 0, 11, 4, 47, 84, 0, 7, 14, -1, 2, 6, 48, 246, 37, 8, 10, -1, 4, 7, 49, 33, 52, 7, 10, 0, 4, 7, 50, 237, 37, 8, 10, -1, 4, 7, 51, 219, 38, 8, 10, -1, 4, 7, 52, 128, 39, 9, 10, -1, 4, 7, 53, 41, 52, 7, 10, -1, 4, 7, 54, 9, 53, 7, 10, 0, 4, 7, 55, 228, 38, 8, 10, -1, 4, 7, 56, 57, 52, 7, 10, 0, 4, 7, 57, 65, 51, 7, 10, 0, 4, 7, 58, 98, 62, 4, 8, 0, 6, 4, 59, 162, 50, 5, 10, -1, 6, 4, 60, 174, 49, 8, 9, -1, 4, 7, 61, 179, 59, 7, 5, 0, 7, 7, 62, 228, 49, 8, 8, -1, 5, 7, 63, 89, 28, 7, 11, 0, 3, 7, 64, 54, 15, 12, 12, 0, 4, 13, 65, 36, 41, 10, 10, -1, 4, 9, 66, 97, 51, 7, 10, 0, 4, 8, 67, 174, 38, 8, 10, 0, 4, 8, 68, 156, 39, 8, 10, 0, 4, 9, 69, 105, 51, 7, 10, 0, 4, 7, 70, 121, 51, 6, 10, 0, 4, 7, 71, 0, 53, 8, 10, 0, 4, 9, 72, 192, 38, 8, 10, 0, 4, 9, 73, 251, 26, 3, 10, 0, 4, 4, 74, 156, 50, 5, 10, -1, 4, 5, 75, 147, 39, 8, 10, 0, 4, 8, 76, 135, 50, 6, 10, 0, 4, 6, 77, 13, 41, 11, 10, 0, 4, 12, 78, 210, 38, 8, 10, 0, 4, 10, 79, 68, 40, 9, 10, 0, 4, 10, 80, 113, 51, 7, 10, 0, 4, 8, 81, 199, 14, 10, 11, 0, 4, 10, 82, 183, 38, 8, 10, 0, 4, 8, 83, 128, 50, 6, 10, 0, 4, 7, 84, 108, 40, 9, 10, -1, 4, 7, 85, 165, 39, 8, 10, 0, 4, 9, 86, 25, 41, 10, 10, -1, 4, 9, 87, 236, 26, 14, 10, -1, 4, 13, 88, 98, 40, 9, 10, -1, 4, 8, 89, 118, 40, 9, 10, -1, 4, 7, 90, 138, 39, 8, 10, -1, 4, 7, 91, 49, 15, 4, 13, 0, 3, 5, 92, 76, 0, 7, 14, -1, 2, 6, 93, 43, 15, 5, 13, -1, 3, 5, 94, 137, 61, 8, 6, -1, 4, 7, 95, 245, 57, 9, 2, -1, 15, 7, 96, 230, 58, 5, 3, -1, 3, 4, 97, 57, 63, 7, 8, 0, 6, 7, 98, 81, 28, 7, 11, 0, 3, 8, 99, 79, 62, 6, 8, 0, 6, 6, 100, 33, 29, 7, 11, 0, 3, 8, 101, 9, 64, 7, 8, 0, 6, 8, 102, 200, 26, 6, 11, -1, 3, 5, 103, 153, 27, 7, 11, 0, 6, 7, 104, 121, 27, 7, 11, 0, 3, 8, 105, 224, 26, 3, 11, 0, 3, 4, 106, 92, 0, 5, 14, -2, 3, 4, 107, 25, 29, 7, 11, 0, 3, 7, 108, 228, 26, 3, 11, 0, 3, 4, 109, 204, 49, 11, 8, 0, 6, 12, 110, 17, 63, 7, 8, 0, 6, 8, 111, 33, 63, 7, 8, 0, 6, 8, 112, 17, 29, 7, 11, 0, 6, 8, 113, 9, 29, 7, 11, 0, 6, 8, 114, 86, 62, 5, 8, 0, 6, 5, 115, 92, 62, 5, 8, 0, 6, 6, 116, 168, 50, 5, 10, -1, 4, 5, 117, 49, 63, 7, 8, 0, 6, 8, 118, 0, 64, 8, 8, -1, 6, 7, 119, 216, 49, 11, 8, -1, 6, 10, 120, 41, 63, 7, 8, -1, 6, 7, 121, 0, 30, 8, 11, -1, 6, 7, 122, 72, 62, 6, 8, 0, 6, 6, 123, 8, 15, 6, 13, -1, 3, 5, 124, 0, 0, 3, 15, 1, 2, 7, 125, 15, 15, 6, 13, -1, 3, 5, 126, 202, 58, 8, 4, -1, 4, 7, 160, 253, 6, 2, 2, -1, 13, 3, 161, 232, 26, 3, 11, 0, 4, 5, 162, 149, 50, 6, 10, 0, 4, 7, 163, 17, 52, 7, 10, 0, 4, 7, 164, 183, 49, 8, 9, -1, 5, 7, 165, 47, 41, 10, 10, -2, 4, 7, 166, 4, 0, 3, 15, 2, 2, 7, 167, 122, 14, 7, 12, 0, 3, 7, 168, 0, 73, 6, 2, -1, 4, 6, 169, 162, 14, 12, 11, 0, 3, 13, 170, 65, 62, 6, 8, -1, 4, 6, 171, 112, 62, 8, 7, -1, 6, 8, 172, 211, 58, 7, 4, -1, 8, 7, 173, 19, 72, 5, 2, 0, 9, 5, 174, 103, 62, 8, 7, -1, 3, 8, 175, 7, 73, 5, 2, 0, 3, 6, 176, 171, 61, 7, 5, -1, 3, 5, 177, 58, 40, 9, 10, -1, 4, 7, 178, 154, 61, 5, 6, 0, 2, 5, 179, 160, 61, 5, 6, -1, 2, 5, 180, 224, 58, 5, 3, -1, 3, 4, 181, 241, 14, 8, 11, 0, 6, 8, 182, 97, 15, 8, 12, 0, 4, 9, 183, 236, 58, 4, 3, 0, 8, 4, 184, 219, 58, 4, 4, 0, 13, 5, 185, 166, 61, 4, 6, 0, 2, 4, 186, 25, 63, 7, 8, -1, 4, 6, 187, 129, 61, 7, 7, 0, 6, 8, 188, 221, 14, 9, 11, 0, 3, 10, 189, 231, 14, 9, 11, 0, 3, 10, 190, 210, 14, 10, 11, -1, 3, 10, 191, 41, 29, 7, 11, -1, 4, 7, 192, 141, 0, 10, 13, -1, 1, 9, 193, 130, 0, 10, 13, -1, 1, 9, 194, 119, 0, 10, 13, -1, 1, 9, 195, 20, 0, 10, 14, -1, 0, 9, 196, 67, 15, 10, 12, -1, 2, 9, 197, 108, 0, 10, 13, -1, 1, 9, 198, 0, 42, 12, 10, -1, 4, 11, 199, 228, 0, 8, 13, 0, 4, 8, 200, 245, 0, 7, 13, 0, 1, 7, 201, 237, 0, 7, 13, 0, 1, 7, 202, 0, 16, 7, 13, 0, 1, 7, 203, 130, 14, 7, 12, 0, 2, 7, 204, 36, 15, 6, 13, -2, 1, 4, 205, 22, 15, 6, 13, -1, 1, 4, 206, 29, 15, 6, 13, -1, 1, 4, 207, 154, 14, 7, 12, -2, 2, 4, 208, 78, 40, 9, 10, -1, 4, 9, 209, 59, 0, 8, 14, 0, 0, 10, 210, 172, 0, 9, 13, 0, 1, 10, 211, 152, 0, 9, 13, 0, 1, 10, 212, 182, 0, 9, 13, 0, 1, 10, 213, 31, 0, 9, 14, 0, 0, 10, 214, 78, 15, 9, 12, 0, 2, 10, 215, 121, 62, 7, 7, 0, 6, 7, 216, 8, 0, 11, 14, -1, 2, 10, 217, 192, 0, 8, 13, 0, 1, 9, 218, 210, 0, 8, 13, 0, 1, 9, 219, 201, 0, 8, 13, 0, 1, 9, 220, 88, 15, 8, 12, 0, 2, 9, 221, 162, 0, 9, 13, -1, 1, 7, 222, 81, 51, 7, 10, 0, 4, 8, 223, 49, 29, 7, 11, 0, 3, 8, 224, 57, 28, 7, 11, 0, 3, 7, 225, 65, 28, 7, 11, 0, 3, 7, 226, 73, 28, 7, 11, 0, 3, 7, 227, 138, 14, 7, 12, 0, 2, 7, 228, 25, 52, 7, 10, 0, 4, 7, 229, 146, 14, 7, 12, 0, 2, 7, 230, 192, 49, 11, 8, 0, 6, 12, 231, 207, 26, 6, 11, 0, 6, 6, 232, 97, 28, 7, 11, 0, 3, 8, 233, 105, 28, 7, 11, 0, 3, 8, 234, 113, 28, 7, 11, 0, 3, 8, 235, 73, 51, 7, 10, 0, 4, 8, 236, 214, 26, 5, 11, -2, 3, 3, 237, 250, 14, 5, 11, -1, 3, 3, 238, 193, 26, 6, 11, -2, 3, 3, 239, 142, 50, 6, 10, -2, 4, 3, 240, 185, 26, 7, 11, 0, 3, 8, 241, 106, 15, 7, 12, 0, 2, 8, 242, 129, 27, 7, 11, 0, 3, 8, 243, 137, 27, 7, 11, 0, 3, 8, 244, 145, 27, 7, 11, 0, 3, 8, 245, 114, 14, 7, 12, 0, 2, 8, 246, 49, 52, 7, 10, 0, 4, 8, 247, 237, 48, 8, 8, -1, 5, 7, 248, 201, 38, 8, 10, 0, 5, 8, 249, 161, 27, 7, 11, 0, 3, 8, 250, 169, 26, 7, 11, 0, 3, 8, 251, 177, 26, 7, 11, 0, 3, 8, 252, 89, 51, 7, 10, 0, 4, 8, 253, 41, 0, 8, 14, -1, 3, 7, 254, 68, 0, 7, 14, 0, 3, 8, 255, 219, 0, 8, 13, -1, 4, 7 }; diff --git a/editor/doc_title_font.h b/editor/doc_title_font.h deleted file mode 100644 index d190896f18..0000000000 --- a/editor/doc_title_font.h +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* doc_title_font.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 Godot Engine contributors (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. */ -/*************************************************************************/ -static const int _bi_font_doc_title_font_height = 22; -static const int _bi_font_doc_title_font_ascent = 17; -static const int _bi_font_doc_title_font_charcount = 193; -static const int _bi_font_doc_title_font_characters[] = { 0, 108, 97, 2, 2, -1, 16, 0, 13, 111, 97, 2, 2, -1, 16, 0, 32, 252, 55, 2, 2, -1, 16, 4, 33, 84, 48, 3, 13, 1, 4, 6, 34, 9, 99, 6, 6, 0, 4, 8, 35, 52, 76, 9, 12, -1, 5, 9, 36, 31, 18, 9, 16, 0, 3, 9, 37, 28, 35, 13, 13, -1, 4, 13, 38, 56, 35, 12, 13, 0, 4, 13, 39, 16, 99, 3, 6, 0, 4, 4, 40, 48, 0, 5, 17, 0, 3, 6, 41, 54, 0, 5, 17, 0, 3, 6, 42, 207, 84, 9, 8, 0, 3, 9, 43, 121, 86, 9, 9, 0, 7, 9, 44, 251, 71, 4, 6, -1, 13, 5, 45, 102, 97, 5, 3, 0, 10, 6, 46, 66, 99, 4, 4, 0, 13, 5, 47, 24, 0, 9, 17, -2, 3, 8, 48, 11, 76, 10, 12, -1, 5, 9, 49, 102, 74, 9, 12, 0, 5, 9, 50, 48, 63, 10, 12, -1, 5, 9, 51, 59, 63, 10, 12, -1, 5, 9, 52, 70, 63, 10, 12, -1, 5, 9, 53, 81, 62, 10, 12, -1, 5, 9, 54, 235, 59, 10, 12, -1, 5, 9, 55, 103, 61, 10, 12, -1, 5, 9, 56, 114, 60, 10, 12, -1, 5, 9, 57, 125, 60, 10, 12, -1, 5, 9, 58, 252, 45, 3, 9, 0, 8, 5, 59, 246, 71, 4, 11, -1, 8, 5, 60, 148, 73, 8, 12, 0, 5, 9, 61, 0, 100, 8, 7, 0, 8, 9, 62, 139, 73, 8, 12, 0, 5, 9, 63, 40, 49, 8, 13, 0, 4, 8, 64, 184, 17, 15, 14, 0, 5, 16, 65, 178, 47, 12, 12, -1, 5, 11, 66, 136, 60, 10, 12, 0, 5, 10, 67, 240, 45, 11, 12, -1, 5, 10, 68, 0, 63, 11, 12, 0, 5, 11, 69, 130, 73, 8, 12, 0, 5, 9, 70, 112, 74, 8, 12, 0, 5, 8, 71, 191, 46, 12, 12, -1, 5, 11, 72, 24, 63, 11, 12, 0, 5, 11, 73, 193, 72, 4, 12, 0, 5, 5, 74, 173, 73, 6, 12, -1, 5, 6, 75, 147, 60, 10, 12, 0, 5, 10, 76, 121, 73, 8, 12, 0, 5, 8, 77, 122, 47, 15, 12, 0, 5, 16, 78, 12, 63, 11, 12, 0, 5, 12, 79, 138, 47, 13, 12, -1, 5, 12, 80, 62, 76, 9, 12, 0, 5, 10, 81, 200, 17, 14, 14, -1, 5, 12, 82, 158, 60, 10, 12, 0, 5, 10, 83, 32, 76, 9, 12, -1, 5, 9, 84, 169, 60, 10, 12, -1, 5, 9, 85, 204, 46, 11, 12, 0, 5, 12, 86, 165, 47, 12, 12, -1, 5, 11, 87, 88, 48, 17, 12, -1, 5, 16, 88, 216, 46, 11, 12, -1, 5, 10, 89, 228, 46, 11, 12, -1, 5, 9, 90, 180, 60, 10, 12, -1, 5, 9, 91, 249, 0, 5, 16, 0, 4, 6, 92, 13, 0, 10, 17, -2, 3, 8, 93, 85, 17, 5, 16, 0, 4, 6, 94, 196, 85, 10, 8, -1, 5, 9, 95, 71, 99, 10, 3, -1, 17, 9, 96, 46, 99, 6, 4, -1, 4, 5, 97, 111, 87, 9, 9, -1, 8, 9, 98, 207, 32, 9, 13, 0, 4, 10, 99, 161, 86, 8, 9, -1, 8, 8, 100, 69, 34, 10, 13, -1, 4, 10, 101, 89, 88, 10, 9, -1, 8, 9, 102, 58, 49, 7, 13, -1, 4, 6, 103, 191, 59, 10, 12, -1, 8, 9, 104, 177, 33, 9, 13, 0, 4, 10, 105, 187, 73, 5, 12, -1, 5, 4, 106, 177, 17, 6, 15, -2, 5, 5, 107, 217, 32, 9, 13, 0, 4, 9, 108, 250, 17, 4, 13, 0, 4, 4, 109, 24, 89, 14, 9, 0, 8, 15, 110, 151, 86, 9, 9, 0, 8, 10, 111, 100, 87, 10, 9, -1, 8, 10, 112, 42, 76, 9, 12, 0, 8, 10, 113, 213, 59, 10, 12, -1, 8, 10, 114, 188, 86, 7, 9, 0, 8, 6, 115, 170, 86, 8, 9, -1, 8, 7, 116, 230, 72, 7, 11, -1, 6, 6, 117, 141, 86, 9, 9, 0, 8, 10, 118, 78, 89, 10, 9, -1, 8, 9, 119, 8, 89, 15, 9, -1, 8, 13, 120, 131, 86, 9, 9, -1, 8, 8, 121, 224, 59, 10, 12, -1, 8, 9, 122, 179, 86, 8, 9, -1, 8, 7, 123, 34, 0, 6, 17, -1, 3, 6, 124, 64, 0, 3, 17, 2, 3, 9, 125, 41, 0, 6, 17, 0, 3, 6, 126, 30, 99, 9, 5, 0, 5, 9, 160, 114, 97, 2, 2, -1, 16, 4, 161, 80, 48, 3, 13, 1, 6, 6, 162, 165, 73, 7, 12, 0, 5, 9, 163, 92, 74, 9, 12, 0, 5, 9, 164, 209, 72, 10, 11, -1, 6, 9, 165, 36, 63, 11, 12, -2, 5, 9, 166, 60, 0, 3, 17, 2, 3, 9, 167, 151, 17, 8, 15, 0, 4, 9, 168, 82, 99, 6, 3, 0, 5, 7, 169, 236, 17, 13, 13, 0, 4, 15, 170, 238, 72, 7, 11, 0, 5, 7, 171, 54, 89, 11, 9, -1, 7, 10, 172, 20, 99, 9, 5, -1, 10, 9, 173, 96, 98, 5, 3, 0, 10, 6, 174, 226, 84, 8, 8, 0, 4, 9, 175, 89, 98, 6, 3, 0, 4, 7, 176, 40, 99, 5, 5, 0, 4, 6, 177, 22, 76, 9, 12, 0, 5, 9, 178, 235, 84, 6, 8, 0, 3, 6, 179, 242, 84, 6, 8, 0, 3, 6, 180, 53, 99, 6, 4, -1, 4, 5, 181, 0, 76, 10, 12, 0, 8, 10, 182, 215, 17, 10, 14, 0, 5, 11, 183, 251, 78, 3, 4, 0, 9, 5, 184, 60, 99, 5, 4, 0, 16, 5, 185, 249, 83, 5, 8, -1, 3, 5, 186, 0, 89, 7, 10, 0, 5, 8, 187, 66, 89, 11, 9, -1, 7, 10, 188, 42, 35, 13, 13, -1, 4, 12, 189, 0, 35, 13, 13, -1, 4, 12, 190, 14, 35, 13, 13, -1, 4, 13, 191, 49, 49, 8, 13, -1, 6, 8, 192, 150, 0, 12, 16, -1, 1, 11, 193, 176, 0, 12, 16, -1, 1, 11, 194, 163, 0, 12, 16, -1, 1, 11, 195, 124, 0, 12, 16, -1, 1, 11, 196, 105, 17, 12, 15, -1, 2, 11, 197, 0, 0, 12, 17, -1, 0, 11, 198, 106, 47, 15, 12, -1, 5, 14, 199, 141, 17, 9, 15, 0, 5, 10, 200, 60, 18, 8, 16, 0, 1, 9, 201, 41, 18, 9, 16, 0, 1, 9, 202, 21, 18, 9, 16, 0, 1, 9, 203, 160, 17, 8, 15, 0, 2, 9, 204, 69, 17, 7, 16, -2, 1, 5, 205, 77, 17, 7, 16, -1, 1, 5, 206, 51, 18, 8, 16, -2, 1, 5, 207, 169, 17, 7, 15, -2, 2, 5, 208, 152, 47, 12, 12, -1, 5, 12, 209, 237, 0, 11, 16, 0, 1, 12, 210, 82, 0, 13, 16, -1, 1, 12, 211, 68, 0, 13, 16, -1, 1, 12, 212, 110, 0, 13, 16, -1, 1, 12, 213, 96, 0, 13, 16, -1, 1, 12, 214, 91, 17, 13, 15, -1, 2, 12, 215, 217, 84, 8, 8, 0, 8, 9, 216, 137, 0, 12, 16, 0, 3, 12, 217, 225, 0, 11, 16, 0, 1, 12, 218, 189, 0, 11, 16, 0, 1, 12, 219, 213, 0, 11, 16, 0, 1, 12, 220, 118, 17, 11, 15, 0, 2, 12, 221, 201, 0, 11, 16, -1, 1, 9, 222, 72, 76, 9, 12, 0, 5, 10, 223, 167, 33, 9, 13, 0, 4, 10, 224, 157, 33, 9, 13, -1, 4, 9, 225, 30, 49, 9, 13, -1, 4, 9, 226, 227, 32, 9, 13, -1, 4, 9, 227, 237, 31, 9, 13, -1, 4, 9, 228, 82, 75, 9, 12, -1, 5, 9, 229, 226, 17, 9, 14, -1, 3, 9, 230, 39, 89, 14, 9, 0, 8, 14, 231, 157, 73, 7, 12, 0, 8, 8, 232, 146, 33, 10, 13, -1, 4, 9, 233, 80, 34, 10, 13, -1, 4, 9, 234, 91, 33, 10, 13, -1, 4, 9, 235, 92, 61, 10, 12, -1, 5, 9, 236, 66, 49, 6, 13, -2, 4, 4, 237, 73, 48, 6, 13, -1, 4, 4, 238, 247, 31, 8, 13, -2, 4, 4, 239, 180, 73, 6, 12, -1, 5, 4, 240, 187, 32, 9, 13, 0, 4, 10, 241, 197, 32, 9, 13, 0, 4, 10, 242, 102, 33, 10, 13, -1, 4, 10, 243, 113, 33, 10, 13, -1, 4, 10, 244, 124, 33, 10, 13, -1, 4, 10, 245, 135, 33, 10, 13, -1, 4, 10, 246, 202, 59, 10, 12, -1, 5, 10, 247, 220, 72, 9, 11, -1, 6, 9, 248, 198, 72, 10, 11, 0, 7, 10, 249, 0, 49, 9, 13, 0, 4, 10, 250, 10, 49, 9, 13, 0, 4, 10, 251, 20, 49, 9, 13, 0, 4, 10, 252, 246, 58, 9, 12, 0, 5, 10, 253, 0, 18, 10, 16, -1, 4, 9, 254, 11, 18, 9, 16, 0, 4, 10, 255, 130, 17, 10, 15, -1, 5, 9 }; diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp index 1d6d933924..9ab539da07 100644 --- a/editor/editor_about.cpp +++ b/editor/editor_about.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_about.h" #include "editor_node.h" @@ -131,7 +132,8 @@ 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-2018 Juan Linietsky, Ariel Manzur.\n\xc2\xa9 2014-2017 ") + + about_text->set_text(VERSION_FULL_NAME + hash + + String::utf8("\n\xc2\xa9 2007-2018 Juan Linietsky, Ariel Manzur.\n\xc2\xa9 2014-2018 ") + TTR("Godot Engine contributors") + "\n"); hbc->add_child(about_text); diff --git a/editor/editor_about.h b/editor/editor_about.h index c573382679..b32fdf6567 100644 --- a/editor/editor_about.h +++ b/editor/editor_about.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_ABOUT_H #define EDITOR_ABOUT_H diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp index 8a3e1e85f7..f1c8c08d08 100644 --- a/editor/editor_asset_installer.cpp +++ b/editor/editor_asset_installer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_asset_installer.h" #include "editor_node.h" diff --git a/editor/editor_asset_installer.h b/editor/editor_asset_installer.h index 09ea405c07..a80087861a 100644 --- a/editor/editor_asset_installer.h +++ b/editor/editor_asset_installer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORASSETINSTALLER_H #define EDITORASSETINSTALLER_H diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index a64b4922f2..9d0de930f2 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_audio_buses.h" #include "editor_node.h" diff --git a/editor/editor_audio_buses.h b/editor/editor_audio_buses.h index 850cb0bd15..4cdcb65d7b 100644 --- a/editor/editor_audio_buses.h +++ b/editor/editor_audio_buses.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORAUDIOBUSES_H #define EDITORAUDIOBUSES_H diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp index 960e0e0bb7..393c33c1b0 100644 --- a/editor/editor_autoload_settings.cpp +++ b/editor/editor_autoload_settings.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_autoload_settings.h" #include "editor_node.h" diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index 4acee1363c..95ed40d889 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_data.h" #include "editor_node.h" @@ -37,7 +38,7 @@ #include "project_settings.h" #include "scene/resources/packed_scene.h" -void EditorHistory::_cleanup_history() { +void EditorHistory::cleanup_history() { for (int i = 0; i < history.size(); i++) { @@ -47,8 +48,14 @@ void EditorHistory::_cleanup_history() { if (!history[i].path[j].ref.is_null()) continue; - if (ObjectDB::get_instance(history[i].path[j].object)) - continue; //has isntance, try next + Object *obj = ObjectDB::get_instance(history[i].path[j].object); + if (obj) { + Node *n = Object::cast_to<Node>(obj); + if (n && n->is_inside_tree()) + continue; + if (!n) // Possibly still alive + continue; + } if (j <= history[i].level) { //before or equal level, complete fail @@ -151,7 +158,7 @@ bool EditorHistory::is_at_end() const { bool EditorHistory::next() { - _cleanup_history(); + cleanup_history(); if ((current + 1) < history.size()) current++; @@ -163,7 +170,7 @@ bool EditorHistory::next() { bool EditorHistory::previous() { - _cleanup_history(); + cleanup_history(); if (current > 0) current--; @@ -822,7 +829,7 @@ void EditorSelection::add_node(Node *p_node) { } selection[p_node] = meta; - p_node->connect("tree_exited", this, "_node_removed", varray(p_node), CONNECT_ONESHOT); + p_node->connect("tree_exiting", this, "_node_removed", varray(p_node), CONNECT_ONESHOT); //emit_signal("selection_changed"); } @@ -840,7 +847,7 @@ void EditorSelection::remove_node(Node *p_node) { if (meta) memdelete(meta); selection.erase(p_node); - p_node->disconnect("tree_exited", this, "_node_removed"); + p_node->disconnect("tree_exiting", this, "_node_removed"); //emit_signal("selection_changed"); } bool EditorSelection::is_selected(Node *p_node) const { @@ -880,6 +887,7 @@ void EditorSelection::_bind_methods() { ClassDB::bind_method(D_METHOD("remove_node", "node"), &EditorSelection::remove_node); ClassDB::bind_method(D_METHOD("get_selected_nodes"), &EditorSelection::_get_selected_nodes); ClassDB::bind_method(D_METHOD("get_transformable_selected_nodes"), &EditorSelection::_get_transformable_selected_nodes); + ClassDB::bind_method(D_METHOD("_emit_change"), &EditorSelection::_emit_change); ADD_SIGNAL(MethodInfo("selection_changed")); } @@ -923,7 +931,15 @@ void EditorSelection::update() { if (!changed) return; changed = false; + if (!emitted) { + emitted = true; + call_deferred("_emit_change"); + } +} + +void EditorSelection::_emit_change() { emit_signal("selection_changed"); + emitted = false; } List<Node *> &EditorSelection::get_selected_node_list() { @@ -947,6 +963,7 @@ void EditorSelection::clear() { } EditorSelection::EditorSelection() { + emitted = false; changed = false; nl_changed = false; } diff --git a/editor/editor_data.h b/editor/editor_data.h index 2c95c3feea..844145853d 100644 --- a/editor/editor_data.h +++ b/editor/editor_data.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_DATA_H #define EDITOR_DATA_H @@ -69,11 +70,11 @@ class EditorHistory { Variant value; }; - void _cleanup_history(); - void _add_object(ObjectID p_object, const String &p_property, int p_level_change); public: + void cleanup_history(); + bool is_at_beginning() const; bool is_at_end() const; @@ -210,9 +211,10 @@ class EditorSelection : public Object { GDCLASS(EditorSelection, Object); -public: +private: Map<Node *, Object *> selection; + bool emitted; bool changed; bool nl_changed; @@ -224,6 +226,7 @@ public: void _update_nl(); Array _get_selected_nodes(); Array _get_transformable_selected_nodes(); + void _emit_change(); protected: static void _bind_methods(); diff --git a/editor/editor_dir_dialog.cpp b/editor/editor_dir_dialog.cpp index bf9c1ec9c6..c094b2b559 100644 --- a/editor/editor_dir_dialog.cpp +++ b/editor/editor_dir_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_dir_dialog.h" #include "editor/editor_file_system.h" diff --git a/editor/editor_dir_dialog.h b/editor/editor_dir_dialog.h index 8f585ae311..7c19e7de38 100644 --- a/editor/editor_dir_dialog.h +++ b/editor/editor_dir_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_DIR_DIALOG_H #define EDITOR_DIR_DIALOG_H diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index 1a10040bac..c9ac62a74d 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_export.h" #include "editor/editor_file_system.h" @@ -1347,7 +1348,7 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr } if (template_path != String() && !FileAccess::exists(template_path)) { - EditorNode::get_singleton()->show_warning(TTR("Template file not found:\n") + template_path); + EditorNode::get_singleton()->show_warning(TTR("Template file not found:") + "\n" + template_path); return ERR_FILE_NOT_FOUND; } @@ -1361,7 +1362,19 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr String pck_path = p_path.get_basename() + ".pck"; - return save_pack(p_preset, pck_path); + Vector<SharedObject> so_files; + + err = save_pack(p_preset, pck_path, &so_files); + + if (err != OK || so_files.empty()) + return err; + //if shared object files, copy them + da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + for (int i = 0; i < so_files.size(); i++) { + da->copy(so_files[i].path, p_path.get_base_dir().plus_file(so_files[i].path.get_file())); + } + memdelete(da); + return OK; } void EditorExportPlatformPC::set_extension(const String &p_extension, const String &p_feature_key) { diff --git a/editor/editor_export.h b/editor/editor_export.h index aa0391c8f5..e851769279 100644 --- a/editor/editor_export.h +++ b/editor/editor_export.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_EXPORT_H #define EDITOR_EXPORT_H diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index 1bf4c6741d..22b33cc98f 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_file_dialog.h" #include "dependency_editor.h" #include "editor_resource_preview.h" @@ -457,6 +458,23 @@ void EditorFileDialog::_item_selected(int p_item) { get_ok()->set_disabled(_is_open_should_be_disabled()); } +void EditorFileDialog::_multi_selected(int p_item, bool p_selected) { + + int current = p_item; + if (current < 0 || current >= item_list->get_item_count()) + return; + + Dictionary d = item_list->get_item_metadata(current); + + if (!d["dir"] && p_selected) { + + file->set_text(d["name"]); + _request_single_thumbnail(get_current_dir().plus_file(get_current_file())); + } + + get_ok()->set_disabled(_is_open_should_be_disabled()); +} + void EditorFileDialog::_items_clear_selection() { item_list->unselect_all(); @@ -1289,6 +1307,7 @@ void EditorFileDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("_unhandled_input"), &EditorFileDialog::_unhandled_input); ClassDB::bind_method(D_METHOD("_item_selected"), &EditorFileDialog::_item_selected); + ClassDB::bind_method(D_METHOD("_multi_selected"), &EditorFileDialog::_multi_selected); ClassDB::bind_method(D_METHOD("_items_clear_selection"), &EditorFileDialog::_items_clear_selection); ClassDB::bind_method(D_METHOD("_item_list_item_rmb_selected"), &EditorFileDialog::_item_list_item_rmb_selected); ClassDB::bind_method(D_METHOD("_item_list_rmb_clicked"), &EditorFileDialog::_item_list_rmb_clicked); @@ -1597,6 +1616,7 @@ EditorFileDialog::EditorFileDialog() { connect("confirmed", this, "_action_pressed"); item_list->connect("item_selected", this, "_item_selected", varray(), CONNECT_DEFERRED); + item_list->connect("multi_selected", this, "_multi_selected", varray(), CONNECT_DEFERRED); item_list->connect("item_activated", this, "_item_db_selected", varray()); item_list->connect("nothing_selected", this, "_items_clear_selection"); dir->connect("text_entered", this, "_dir_entered"); diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h index 1a7fa756cc..b1f8f1108c 100644 --- a/editor/editor_file_dialog.h +++ b/editor/editor_file_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORFILEDIALOG_H #define EDITORFILEDIALOG_H @@ -158,6 +159,7 @@ private: void _recent_selected(int p_idx); void _item_selected(int p_item); + void _multi_selected(int p_item, bool p_selected); void _items_clear_selection(); void _item_dc_selected(int p_item); diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index bff090cdbc..dca32d7492 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_file_system.h" #include "editor_node.h" @@ -1508,6 +1509,19 @@ void EditorFileSystem::_reimport_file(const String &p_file) { void EditorFileSystem::reimport_files(const Vector<String> &p_files) { + { //check that .import folder exists + DirAccess *da = DirAccess::open("res://"); + if (da->change_dir(".import") != OK) { + Error err = da->make_dir(".import"); + if (err) { + memdelete(da); + ERR_EXPLAIN("Failed to create 'res://.import' folder."); + ERR_FAIL_COND(err != OK); + } + } + memdelete(da); + } + importing = true; EditorProgress pr("reimport", TTR("(Re)Importing Assets"), p_files.size()); diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h index 3e0325dfdc..a587d2879a 100644 --- a/editor/editor_file_system.h +++ b/editor/editor_file_system.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_FILE_SYSTEM_H #define EDITOR_FILE_SYSTEM_H diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp index f2882561aa..a58257962a 100644 --- a/editor/editor_fonts.cpp +++ b/editor/editor_fonts.cpp @@ -27,12 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_fonts.h" #include "builtin_fonts.gen.h" -#include "doc_code_font.h" -#include "doc_font.h" -#include "doc_title_font.h" #include "editor_scale.h" #include "editor_settings.h" #include "scene/resources/default_theme/default_theme.h" @@ -77,12 +75,50 @@ static Ref<BitmapFont> make_font(int p_height, int p_ascent, int p_valign, int p Ref<DynamicFont> m_name; \ m_name.instance(); \ m_name->set_size(m_size); \ - m_name->set_font_data(DefaultFont); \ + if (CustomFont.is_valid()) { \ + m_name->set_font_data(CustomFont); \ + m_name->add_fallback(DefaultFont); \ + } else { \ + m_name->set_font_data(DefaultFont); \ + } \ + m_name->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); \ + m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); \ + MAKE_FALLBACKS(m_name); + +#define MAKE_SOURCE_FONT(m_name, m_size) \ + Ref<DynamicFont> m_name; \ + m_name.instance(); \ + m_name->set_size(m_size); \ + if (CustomFontSource.is_valid()) { \ + m_name->set_font_data(CustomFontSource); \ + m_name->add_fallback(dfmono); \ + } else { \ + m_name->set_font_data(dfmono); \ + } \ m_name->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); \ m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); \ MAKE_FALLBACKS(m_name); void editor_register_fonts(Ref<Theme> p_theme) { + /* Custom font */ + + String custom_font = EditorSettings::get_singleton()->get("interface/editor/main_font"); + Ref<DynamicFontData> CustomFont; + if (custom_font.length() > 0) { + CustomFont.instance(); + CustomFont->set_font_path(custom_font); + CustomFont->set_force_autohinter(true); //just looks better..i think? + } + + /* Custom source code font */ + + String custom_font_source = EditorSettings::get_singleton()->get("interface/editor/code_font"); + Ref<DynamicFontData> CustomFontSource; + if (custom_font_source.length() > 0) { + CustomFontSource.instance(); + CustomFontSource->set_font_path(custom_font_source); + } + /* Droid Sans */ Ref<DynamicFontData> DefaultFont; @@ -122,7 +158,7 @@ void editor_register_fonts(Ref<Theme> p_theme) { dfmono->set_font_ptr(_font_Hack_Regular, _font_Hack_Regular_size); //dfd->set_force_autohinter(true); //just looks better..i think? - int default_font_size = int(EditorSettings::get_singleton()->get("interface/editor/font_size")) * EDSCALE; + int default_font_size = int(EditorSettings::get_singleton()->get("interface/editor/main_font_size")) * EDSCALE; MAKE_DEFAULT_FONT(df, default_font_size); p_theme->set_default_theme_font(df); @@ -130,10 +166,6 @@ void editor_register_fonts(Ref<Theme> p_theme) { MAKE_DEFAULT_FONT(df_title, default_font_size + 2 * EDSCALE); p_theme->set_font("title", "EditorFonts", df_title); - //Ref<BitmapFont> doc_font = make_font(_bi_font_doc_font_height,_bi_font_doc_font_ascent,0,_bi_font_doc_font_charcount,_bi_font_doc_font_characters,p_theme->get_icon("DocFont","EditorIcons")); - //Ref<BitmapFont> doc_title_font = make_font(_bi_font_doc_title_font_height,_bi_font_doc_title_font_ascent,0,_bi_font_doc_title_font_charcount,_bi_font_doc_title_font_characters,p_theme->get_icon("DocTitleFont","EditorIcons")); - //Ref<BitmapFont> doc_code_font = make_font(_bi_font_doc_code_font_height,_bi_font_doc_code_font_ascent,0,_bi_font_doc_code_font_charcount,_bi_font_doc_code_font_characters,p_theme->get_icon("DocCodeFont","EditorIcons")); - MAKE_DEFAULT_FONT(df_doc_title, int(EDITOR_DEF("text_editor/help/help_title_font_size", 23)) * EDSCALE); MAKE_DEFAULT_FONT(df_doc, int(EDITOR_DEF("text_editor/help/help_font_size", 15)) * EDSCALE); @@ -144,41 +176,15 @@ void editor_register_fonts(Ref<Theme> p_theme) { MAKE_DEFAULT_FONT(df_rulers, 8 * EDSCALE); p_theme->set_font("rulers", "EditorFonts", df_rulers); - Ref<DynamicFont> df_code; - df_code.instance(); - df_code->set_size(int(EditorSettings::get_singleton()->get("interface/editor/source_font_size")) * EDSCALE); - df_code->set_font_data(dfmono); - MAKE_FALLBACKS(df_code); - + MAKE_SOURCE_FONT(df_code, int(EditorSettings::get_singleton()->get("interface/editor/code_font_size")) * EDSCALE); p_theme->set_font("source", "EditorFonts", df_code); - Ref<DynamicFont> df_doc_code; - df_doc_code.instance(); - df_doc_code->set_size(int(EDITOR_DEF("text_editor/help/help_source_font_size", 14)) * EDSCALE); - df_doc_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); - df_doc_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); - df_doc_code->set_font_data(dfmono); - MAKE_FALLBACKS(df_doc_code); - + MAKE_SOURCE_FONT(df_doc_code, int(EDITOR_DEF("text_editor/help/help_source_font_size", 14)) * EDSCALE); p_theme->set_font("doc_source", "EditorFonts", df_doc_code); - Ref<DynamicFont> df_output_code; - df_output_code.instance(); - df_output_code->set_size(int(EDITOR_DEF("run/output/font_size", 13)) * EDSCALE); - df_output_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); - df_output_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); - df_output_code->set_font_data(dfmono); - MAKE_FALLBACKS(df_output_code); - + MAKE_SOURCE_FONT(df_output_code, int(EDITOR_DEF("run/output/font_size", 13)) * EDSCALE); p_theme->set_font("output_source", "EditorFonts", df_output_code); - Ref<DynamicFont> df_text_editor_status_code; - df_text_editor_status_code.instance(); - df_text_editor_status_code->set_size(14 * EDSCALE); - df_text_editor_status_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); - df_text_editor_status_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); - df_text_editor_status_code->set_font_data(dfmono); - MAKE_FALLBACKS(df_text_editor_status_code); - + MAKE_SOURCE_FONT(df_text_editor_status_code, 14 * EDSCALE); p_theme->set_font("status_source", "EditorFonts", df_text_editor_status_code); } diff --git a/editor/editor_fonts.h b/editor/editor_fonts.h index abbccb685d..d079b41b82 100644 --- a/editor/editor_fonts.h +++ b/editor/editor_fonts.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_FONTS_H #define EDITOR_FONTS_H diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index c094d4be6b..198a52fef2 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_help.h" #include "doc_data_compressed.gen.h" @@ -36,6 +37,8 @@ #include "os/keyboard.h" #define CONTRIBUTE_URL "http://docs.godotengine.org/en/latest/community/contributing/updating_the_class_reference.html" +#define CONTRIBUTE2_URL "https://github.com/godotengine/godot-docs" +#define REQUEST_URL "https://github.com/godotengine/godot-docs/issues/new" void EditorHelpSearch::popup() { @@ -1289,6 +1292,46 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) { class_desc->add_newline(); } + { + + class_desc->push_color(title_color); + class_desc->push_font(doc_title_font); + class_desc->add_text(TTR("Online Tutorials:")); + class_desc->pop(); + class_desc->pop(); + class_desc->push_indent(1); + + class_desc->push_font(doc_code_font); + + class_desc->add_newline(); + // class_desc->add_newline(); + + Vector<String> tutorials = cd.tutorials.split_spaces(); + if (tutorials.size() != 0) { + + for (int i = 0; i < tutorials.size(); i++) { + String link = tutorials[i]; + String linktxt = link; + int seppos = linktxt.find("//"); + if (seppos != -1) { + linktxt = link.right(seppos + 2); + } + + class_desc->push_color(symbol_color); + class_desc->append_bbcode("[url=" + link + "]" + linktxt + "[/url]"); + class_desc->pop(); + class_desc->add_newline(); + } + } else { + class_desc->push_color(comment_color); + class_desc->append_bbcode(TTR("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].").replace("$url2", REQUEST_URL).replace("$url", CONTRIBUTE2_URL).replace("$color", link_color_text)); + class_desc->pop(); + } + class_desc->pop(); + class_desc->pop(); + class_desc->add_newline(); + class_desc->add_newline(); + } if (property_descr) { section_line.push_back(Pair<String, int>(TTR("Properties"), class_desc->get_line_count() - 2)); diff --git a/editor/editor_help.h b/editor/editor_help.h index adcd73471e..db4c33afb0 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_HELP_H #define EDITOR_HELP_H diff --git a/editor/editor_initialize_ssl.cpp b/editor/editor_initialize_ssl.cpp index 81521bc0a5..aedbfb7bd7 100644 --- a/editor/editor_initialize_ssl.cpp +++ b/editor/editor_initialize_ssl.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_initialize_ssl.h" #include "certs_compressed.gen.h" diff --git a/editor/editor_initialize_ssl.h b/editor/editor_initialize_ssl.h index 52b67dea92..71d16b8c53 100644 --- a/editor/editor_initialize_ssl.h +++ b/editor/editor_initialize_ssl.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_INITIALIZE_SSL_H #define EDITOR_INITIALIZE_SSL_H diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp index cf19af7ef6..e301d12214 100644 --- a/editor/editor_log.cpp +++ b/editor/editor_log.cpp @@ -27,8 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_log.h" +#include "core/os/keyboard.h" #include "editor_node.h" #include "scene/gui/center_container.h" #include "scene/resources/dynamic_font.h" @@ -65,7 +67,9 @@ void EditorLog::_notification(int p_what) { Ref<DynamicFont> df_output_code = get_font("output_source", "EditorFonts"); if (df_output_code.is_valid()) { df_output_code->set_size(int(EDITOR_DEF("run/output/font_size", 13)) * EDSCALE); - log->add_font_override("normal_font", get_font("output_source", "EditorFonts")); + if (log != NULL) { + log->add_font_override("normal_font", get_font("output_source", "EditorFonts")); + } } } @@ -154,6 +158,7 @@ EditorLog::EditorLog() { clearbutton = memnew(Button); hb->add_child(clearbutton); clearbutton->set_text(TTR("Clear")); + clearbutton->set_shortcut(ED_SHORTCUT("editor/clear_output", TTR("Clear Output"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_K)); clearbutton->connect("pressed", this, "_clear_request"); log = memnew(RichTextLabel); diff --git a/editor/editor_log.h b/editor/editor_log.h index c75dc0dd44..42137f71cc 100644 --- a/editor/editor_log.h +++ b/editor/editor_log.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_LOG_H #define EDITOR_LOG_H diff --git a/editor/editor_name_dialog.cpp b/editor/editor_name_dialog.cpp index 25d12a75ff..bacb288273 100644 --- a/editor/editor_name_dialog.cpp +++ b/editor/editor_name_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_name_dialog.h" #include "class_db.h" diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index bd37e7d0be..98991cd7c0 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_node.h" #include "core/bind/core_bind.h" @@ -59,6 +60,7 @@ #include "editor/editor_themes.h" #include "editor/import/editor_import_collada.h" #include "editor/import/editor_scene_importer_gltf.h" +#include "editor/import/resource_importer_bitmask.h" #include "editor/import/resource_importer_csv_translation.h" #include "editor/import/resource_importer_obj.h" #include "editor/import/resource_importer_scene.h" @@ -367,7 +369,7 @@ void EditorNode::_notification(int p_what) { search_button->set_icon(gui_base->get_icon("Search", "EditorIcons")); object_menu->set_icon(gui_base->get_icon("Tools", "EditorIcons")); - // clear_button->set_icon(gui_base->get_icon("Close", "EditorIcons")); dont have access to that node. needs to become a class property + // clear_button->set_icon(gui_base->get_icon("Close", "EditorIcons")); don't have access to that node. needs to become a class property update_menu->set_icon(gui_base->get_icon("Collapse", "EditorIcons")); dock_tab_move_left->set_icon(theme->get_icon("Back", "EditorIcons")); dock_tab_move_right->set_icon(theme->get_icon("Forward", "EditorIcons")); @@ -391,42 +393,6 @@ void EditorNode::_fs_changed() { E->get()->invalidate(); } - if (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) { - break; - } - preset.unref(); - } - if (preset.is_null()) { - String err = "Unknown export preset: " + export_defer.preset; - ERR_PRINT(err.utf8().get_data()); - } else { - Ref<EditorExportPlatform> platform = preset->get_platform(); - if (platform.is_null()) { - String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform."; - ERR_PRINT(err.utf8().get_data()); - } else { - // ensures export_project does not loop infinitely, because notifications may - // come during the export - export_defer.preset = ""; - if (!preset->is_runnable() && (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip"))) { - if (export_defer.path.ends_with(".zip")) { - platform->save_zip(preset, export_defer.path); - } else if (export_defer.path.ends_with(".pck")) { - platform->save_pack(preset, export_defer.path); - } - } else { - platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0); - } - } - } - - get_tree()->quit(); - } - { //reload changed resources List<Ref<Resource> > changed; @@ -463,6 +429,42 @@ void EditorNode::_fs_changed() { } _mark_unsaved_scenes(); + + if (export_defer.preset != "" && !EditorFileSystem::get_singleton()->is_scanning()) { + 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) { + break; + } + preset.unref(); + } + if (preset.is_null()) { + String err = "Unknown export preset: " + export_defer.preset; + ERR_PRINT(err.utf8().get_data()); + } else { + Ref<EditorExportPlatform> platform = preset->get_platform(); + if (platform.is_null()) { + String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform."; + ERR_PRINT(err.utf8().get_data()); + } else { + // ensures export_project does not loop infinitely, because notifications may + // come during the export + export_defer.preset = ""; + if (!preset->is_runnable() && (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip"))) { + if (export_defer.path.ends_with(".zip")) { + platform->save_zip(preset, export_defer.path); + } else if (export_defer.path.ends_with(".pck")) { + platform->save_pack(preset, export_defer.path); + } + } else { + platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0); + } + } + } + + get_tree()->quit(); + } } void EditorNode::_resources_reimported(const Vector<String> &p_resources) { @@ -1020,7 +1022,7 @@ void EditorNode::_save_scene(String p_file, int idx) { current_option = -1; accept->get_ok()->set_text(TTR("I see..")); - accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances) couldn't be satisfied.")); + accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances or inheritance) couldn't be satisfied.")); accept->popup_centered_minsize(); return; } @@ -1028,6 +1030,13 @@ void EditorNode::_save_scene(String p_file, int idx) { // force creation of node path cache // (hacky but needed for the tree to update properly) Node *dummy_scene = sdata->instance(PackedScene::GEN_EDIT_STATE_INSTANCE); + if (!dummy_scene) { + current_option = -1; + accept->get_ok()->set_text(TTR("I see..")); + accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances or inheritance) couldn't be satisfied.")); + accept->popup_centered_minsize(); + return; + } memdelete(dummy_scene); int flg = 0; @@ -1389,7 +1398,7 @@ void EditorNode::_property_editor_forward() { } void EditorNode::_property_editor_back() { - if (editor_history.previous()) + if (editor_history.previous() || editor_history.get_path_size() == 1) _edit_current(); } @@ -4230,7 +4239,7 @@ void EditorNode::_bottom_panel_switch(bool p_enable, int p_idx) { bottom_panel_items[i].button->set_pressed(i == p_idx); bottom_panel_items[i].control->set_visible(i == p_idx); } - if (ScriptEditor::get_singleton()->get_debugger() == bottom_panel_items[p_idx].control) { // this is the debug panel wich uses tabs, so the top section should be smaller + if (ScriptEditor::get_singleton()->get_debugger() == bottom_panel_items[p_idx].control) { // this is the debug panel which uses tabs, so the top section should be smaller bottom_panel->add_style_override("panel", gui_base->get_stylebox("BottomPanelDebuggerOverride", "EditorStyles")); } else { bottom_panel->add_style_override("panel", gui_base->get_stylebox("panel", "TabContainer")); @@ -4419,10 +4428,11 @@ void EditorNode::_dropped_files(const Vector<String> &p_files, int p_screen) { String to_path = ProjectSettings::get_singleton()->globalize_path(get_filesystem_dock()->get_current_path()); DirAccessRef dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + Vector<String> just_copy = String("ttf,otf").split(","); for (int i = 0; i < p_files.size(); i++) { String from = p_files[i]; - if (!ResourceFormatImporter::get_singleton()->can_be_imported(from)) { + if (!ResourceFormatImporter::get_singleton()->can_be_imported(from) && (just_copy.find(from.get_extension().to_lower()) != -1)) { continue; } String to = to_path.plus_file(from.get_file()); @@ -4739,13 +4749,13 @@ EditorNode::EditorNode() { scene_distraction = false; script_distraction = false; - FileAccess::set_backup_save(true); - TranslationServer::get_singleton()->set_enabled(false); // load settings if (!EditorSettings::get_singleton()) EditorSettings::create(); + FileAccess::set_backup_save(EDITOR_GET("filesystem/on_save/safe_save_on_backup_then_rename")); + { int dpi_mode = EditorSettings::get_singleton()->get("interface/editor/hidpi_mode"); if (dpi_mode == 0) { @@ -4805,7 +4815,15 @@ EditorNode::EditorNode() { Ref<EditorSceneImporterGLTF> import_gltf; import_gltf.instance(); import_scene->add_importer(import_gltf); + + Ref<EditorSceneImporterESCN> import_escn; + import_escn.instance(); + import_scene->add_importer(import_escn); } + + Ref<ResourceImporterBitMap> import_bitmap; + import_bitmap.instance(); + ResourceFormatImporter::get_singleton()->add_importer(import_bitmap); } _pvrtc_register_compressors(); diff --git a/editor/editor_node.h b/editor/editor_node.h index d090d83241..03102cdc81 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_NODE_H #define EDITOR_NODE_H diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp index c01f56581f..9506a0e951 100644 --- a/editor/editor_path.cpp +++ b/editor/editor_path.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_path.h" #include "editor_node.h" diff --git a/editor/editor_path.h b/editor/editor_path.h index 597746faf4..a86e6b7b28 100644 --- a/editor/editor_path.h +++ b/editor/editor_path.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_PATH_H #define EDITOR_PATH_H diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index b3ac5e4ce5..b1a0efaea6 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_plugin.h" #include "editor/editor_node.h" @@ -200,6 +201,14 @@ ScriptEditor *EditorInterface::get_script_editor() { return ScriptEditor::get_singleton(); } +void EditorInterface::select_file(const String &p_file) { + return EditorNode::get_singleton()->get_filesystem_dock()->select_file(p_file); +} + +String EditorInterface::get_selected_path() const { + return EditorNode::get_singleton()->get_filesystem_dock()->get_selected_path(); +} + void EditorInterface::inspect_object(Object *p_obj, const String &p_for_property) { EditorNode::get_singleton()->push_item(p_obj, p_for_property); @@ -226,6 +235,14 @@ Control *EditorInterface::get_base_control() { return EditorNode::get_singleton()->get_gui_base(); } +void EditorInterface::set_plugin_enabled(const String &p_plugin, bool p_enabled) { + EditorNode::get_singleton()->set_addon_plugin_enabled(p_plugin, p_enabled); +} + +bool EditorInterface::is_plugin_enabled(const String &p_plugin) const { + return EditorNode::get_singleton()->is_addon_plugin_enabled(p_plugin); +} + Error EditorInterface::save_scene() { if (!get_edited_scene_root()) return ERR_CANT_CREATE; @@ -259,6 +276,11 @@ void EditorInterface::_bind_methods() { ClassDB::bind_method(D_METHOD("get_resource_filesystem"), &EditorInterface::get_resource_file_system); ClassDB::bind_method(D_METHOD("get_editor_viewport"), &EditorInterface::get_editor_viewport); ClassDB::bind_method(D_METHOD("make_mesh_previews", "meshes", "preview_size"), &EditorInterface::_make_mesh_previews); + ClassDB::bind_method(D_METHOD("select_file", "p_file"), &EditorInterface::select_file); + ClassDB::bind_method(D_METHOD("get_selected_path"), &EditorInterface::get_selected_path); + + ClassDB::bind_method(D_METHOD("set_plugin_enabled", "plugin", "enabled"), &EditorInterface::set_plugin_enabled); + ClassDB::bind_method(D_METHOD("is_plugin_enabled", "plugin"), &EditorInterface::is_plugin_enabled); ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene); ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true)); @@ -653,7 +675,7 @@ void EditorPlugin::_bind_methods() { ClassDB::bind_method(D_METHOD("get_editor_interface"), &EditorPlugin::get_editor_interface); - ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_canvas_gui_input", PropertyInfo(Variant::TRANSFORM2D, "canvas_xform"), PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"))); + ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_canvas_gui_input", PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"))); ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_draw_over_viewport", PropertyInfo(Variant::OBJECT, "overlay", PROPERTY_HINT_RESOURCE_TYPE, "Control"))); ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_force_draw_over_viewport", PropertyInfo(Variant::OBJECT, "overlay", PROPERTY_HINT_RESOURCE_TYPE, "Control"))); ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_spatial_gui_input", PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera"), PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"))); diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index 4bfa1fa7cf..3d585120c0 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_PLUGIN_H #define EDITOR_PLUGIN_H @@ -76,6 +77,9 @@ public: Array get_open_scenes() const; ScriptEditor *get_script_editor(); + void select_file(const String &p_file); + String get_selected_path() const; + void inspect_object(Object *p_obj, const String &p_for_property = String()); EditorSelection *get_selection(); @@ -86,6 +90,9 @@ public: Control *get_base_control(); + void set_plugin_enabled(const String &p_plugin, bool p_enabled); + bool is_plugin_enabled(const String &p_plugin) const; + Error save_scene(); void save_scene_as(const String &p_scene, bool p_with_preview = true); @@ -174,7 +181,7 @@ public: virtual bool handles(Object *p_object) const; virtual Dictionary get_state() const; //save editor state so it can't be reloaded when reloading scene virtual void set_state(const Dictionary &p_state); //restore editor state (likely was saved with the scene) - virtual void clear(); // clear any temporary data in te editor, reset it (likely new scene or load another scene) + virtual void clear(); // clear any temporary data in the editor, reset it (likely new scene or load another scene) virtual void save_external_data(); // if editor references external resources/scenes, save them virtual void apply_changes(); // if changes are pending in editor, apply them virtual void get_breakpoints(List<String> *p_breakpoints); diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index 234363cdff..8803a03f2d 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_plugin_settings.h" #include "editor_node.h" diff --git a/editor/editor_plugin_settings.h b/editor/editor_plugin_settings.h index fac14fa177..aacbd05dd4 100644 --- a/editor/editor_plugin_settings.h +++ b/editor/editor_plugin_settings.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORPLUGINSETTINGS_H #define EDITORPLUGINSETTINGS_H diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp index c55d62fbe5..34c9ca6630 100644 --- a/editor/editor_profiler.cpp +++ b/editor/editor_profiler.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_profiler.h" #include "editor_scale.h" diff --git a/editor/editor_profiler.h b/editor/editor_profiler.h index c4543848ab..d902a97c5d 100644 --- a/editor/editor_profiler.h +++ b/editor/editor_profiler.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORPROFILER_H #define EDITORPROFILER_H diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp index b981f74242..93787a7a4c 100644 --- a/editor/editor_resource_preview.cpp +++ b/editor/editor_resource_preview.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_resource_preview.h" #include "editor_scale.h" diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h index 6f1719e0a5..e2276aa11d 100644 --- a/editor/editor_resource_preview.h +++ b/editor/editor_resource_preview.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORRESOURCEPREVIEW_H #define EDITORRESOURCEPREVIEW_H diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp index ecb4b4aa8f..749cf6aa2b 100644 --- a/editor/editor_run.cpp +++ b/editor/editor_run.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_run.h" #include "editor_settings.h" diff --git a/editor/editor_run.h b/editor/editor_run.h index 9eee1122c8..8da607e6dc 100644 --- a/editor/editor_run.h +++ b/editor/editor_run.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_RUN_H #define EDITOR_RUN_H diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp index a546f34c17..caa1d4be62 100644 --- a/editor/editor_run_native.cpp +++ b/editor/editor_run_native.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_run_native.h" #include "editor_export.h" diff --git a/editor/editor_run_native.h b/editor/editor_run_native.h index d9bce34e48..5bfe600a04 100644 --- a/editor/editor_run_native.h +++ b/editor/editor_run_native.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_RUN_NATIVE_H #define EDITOR_RUN_NATIVE_H diff --git a/editor/editor_run_script.cpp b/editor/editor_run_script.cpp index 4ead241bbb..93d201864e 100644 --- a/editor/editor_run_script.cpp +++ b/editor/editor_run_script.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_run_script.h" #include "editor_node.h" diff --git a/editor/editor_run_script.h b/editor/editor_run_script.h index c613e61feb..027fdd428d 100644 --- a/editor/editor_run_script.h +++ b/editor/editor_run_script.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_RUN_SCRIPT_H #define EDITOR_RUN_SCRIPT_H diff --git a/editor/editor_scale.cpp b/editor/editor_scale.cpp index d3ef5bfa32..365ea95e3e 100644 --- a/editor/editor_scale.cpp +++ b/editor/editor_scale.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_scale.h" #include "os/os.h" diff --git a/editor/editor_scale.h b/editor/editor_scale.h index 9af245e8d2..87f64598e3 100644 --- a/editor/editor_scale.h +++ b/editor/editor_scale.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_SCALE_H #define EDITOR_SCALE_H diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 5a16ec7eab..433f501fc8 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http:/www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_settings.h" #include "core/io/compression.h" @@ -53,7 +54,18 @@ Ref<EditorSettings> EditorSettings::singleton = NULL; // Properties -bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool p_emit_signal) { +bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) { + + _THREAD_SAFE_METHOD_ + + bool changed = _set_only(p_name, p_value); + if (changed) { + emit_signal("settings_changed"); + } + return true; +} + +bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value) { _THREAD_SAFE_METHOD_ @@ -72,7 +84,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool add_shortcut(name, sc); } - return true; + return false; } bool changed = false; @@ -101,10 +113,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool } } - if (changed && p_emit_signal) { - emit_signal("settings_changed"); - } - return true; + return changed; } bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const { @@ -204,7 +213,7 @@ void EditorSettings::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(pi); } - p_list->push_back(PropertyInfo(Variant::ARRAY, "shortcuts", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); //do not edit + p_list->push_back(PropertyInfo(Variant::ARRAY, "shortcuts", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); //do not edit } void EditorSettings::_add_property_info_bind(const Dictionary &p_info) { @@ -272,12 +281,14 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("interface/editor/hidpi_mode", 0); hints["interface/editor/hidpi_mode"] = PropertyInfo(Variant::INT, "interface/editor/hidpi_mode", PROPERTY_HINT_ENUM, "Auto,VeryLoDPI,LoDPI,MidDPI,HiDPI", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); _initial_set("interface/scene_tabs/show_script_button", false); - _initial_set("interface/editor/font_size", 14); - hints["interface/editor/font_size"] = PropertyInfo(Variant::INT, "interface/editor/font_size", PROPERTY_HINT_RANGE, "10,40,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); - _initial_set("interface/editor/source_font_size", 14); - hints["interface/editor/source_font_size"] = PropertyInfo(Variant::INT, "interface/editor/source_font_size", PROPERTY_HINT_RANGE, "8,96,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); - _initial_set("interface/editor/custom_font", ""); - hints["interface/editor/custom_font"] = PropertyInfo(Variant::STRING, "interface/editor/custom_font", PROPERTY_HINT_GLOBAL_FILE, "*.font,*.tres,*.res", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); + _initial_set("interface/editor/main_font_size", 14); + hints["interface/editor/main_font_size"] = PropertyInfo(Variant::INT, "interface/editor/main_font_size", PROPERTY_HINT_RANGE, "10,40,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); + _initial_set("interface/editor/code_font_size", 14); + hints["interface/editor/code_font_size"] = PropertyInfo(Variant::INT, "interface/editor/code_font_size", PROPERTY_HINT_RANGE, "8,96,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); + _initial_set("interface/editor/main_font", ""); + hints["interface/editor/main_font"] = PropertyInfo(Variant::STRING, "interface/editor/main_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); + _initial_set("interface/editor/code_font", ""); + hints["interface/editor/code_font"] = PropertyInfo(Variant::STRING, "interface/editor/code_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); _initial_set("interface/editor/dim_editor_on_dialog_popup", true); _initial_set("interface/editor/dim_amount", 0.6f); hints["interface/editor/dim_amount"] = PropertyInfo(Variant::REAL, "interface/editor/dim_amount", PROPERTY_HINT_RANGE, "0,1,0.01", PROPERTY_USAGE_DEFAULT); @@ -366,13 +377,13 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { hints["text_editor/cursor/caret_blink_speed"] = PropertyInfo(Variant::REAL, "text_editor/cursor/caret_blink_speed", PROPERTY_HINT_RANGE, "0.1, 10, 0.1"); _initial_set("text_editor/cursor/right_click_moves_caret", true); - _initial_set("text_editor/theme/font", ""); - hints["text_editor/theme/font"] = PropertyInfo(Variant::STRING, "text_editor/theme/font", PROPERTY_HINT_GLOBAL_FILE, "*.font,*.tres,*.res"); _initial_set("text_editor/completion/auto_brace_complete", false); + _initial_set("text_editor/completion/put_callhint_tooltip_below_current_line", true); + _initial_set("text_editor/completion/callhint_tooltip_offset", Vector2()); _initial_set("text_editor/files/restore_scripts_on_load", true); _initial_set("text_editor/completion/complete_file_paths", true); _initial_set("text_editor/files/maximum_recent_files", 20); - hints["text_editor/files/maximum_recent_files"] = PropertyInfo(Variant::INT, "text_editor/files/maximum_recent_files", PROPERTY_HINT_RANGE, "1, 200, 0"); + hints["text_editor/files/maximum_recent_files"] = PropertyInfo(Variant::INT, "text_editor/files/maximum_recent_files", PROPERTY_HINT_RANGE, "1, 200, 1"); _initial_set("docks/scene_tree/start_create_dialog_fully_expanded", false); _initial_set("docks/scene_tree/draw_relationship_lines", false); @@ -502,6 +513,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("filesystem/resources/auto_reload_modified_images", true); _initial_set("filesystem/import/automatic_reimport_on_sources_changed", true); + _initial_set("filesystem/on_save/safe_save_on_backup_then_rename", true); if (p_extra_config.is_valid()) { @@ -981,7 +993,7 @@ void EditorSettings::raise_order(const String &p_setting) { props[p_setting].order = ++last_order; } -void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value) { +void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value, bool p_update_current) { _THREAD_SAFE_METHOD_ @@ -989,6 +1001,9 @@ void EditorSettings::set_initial_value(const StringName &p_setting, const Varian return; props[p_setting].initial = p_value; props[p_setting].has_default_value = true; + if (p_update_current) { + set(p_setting, p_value); + } } Variant _EDITOR_DEF(const String &p_setting, const Variant &p_default) { @@ -1173,8 +1188,10 @@ void EditorSettings::list_text_editor_themes() { void EditorSettings::load_text_editor_theme() { if (get("text_editor/theme/color_theme") == "Default" || get("text_editor/theme/color_theme") == "Adaptive" || get("text_editor/theme/color_theme") == "Custom") { - _load_default_text_editor_theme(); // sorry for "Settings changed" console spam - return; + if (get("text_editor/theme/color_theme") == "Default") { + _load_default_text_editor_theme(); + } + return; // sorry for "Settings changed" console spam } String theme_path = get_text_editor_themes_dir().plus_file((String)get("text_editor/theme/color_theme") + ".tet"); @@ -1329,8 +1346,44 @@ Ref<ShortCut> ED_GET_SHORTCUT(const String &p_path) { return sc; } +struct ShortCutMapping { + const char *path; + uint32_t keycode; +}; + Ref<ShortCut> ED_SHORTCUT(const String &p_path, const String &p_name, uint32_t p_keycode) { +#ifdef OSX_ENABLED + static const ShortCutMapping macos_mappings[] = { + { "editor/play", KEY_MASK_CMD | KEY_B }, + { "editor/play_scene", KEY_MASK_CMD | KEY_R }, + { "editor/pause_scene", KEY_MASK_CMD | KEY_MASK_CTRL | KEY_Y }, + { "editor/stop", KEY_MASK_CMD | KEY_PERIOD }, + { "editor/play_custom_scene", KEY_MASK_SHIFT | KEY_MASK_CMD | KEY_R }, + { "editor/editor_2d", KEY_MASK_ALT | KEY_1 }, + { "editor/editor_3d", KEY_MASK_ALT | KEY_2 }, + { "editor/editor_script", KEY_MASK_ALT | KEY_3 }, + { "editor/editor_help", KEY_MASK_ALT | KEY_SPACE }, + { "editor/fullscreen_mode", KEY_MASK_CMD | KEY_MASK_CTRL | KEY_F }, + { "editor/distraction_free_mode", KEY_MASK_CMD | KEY_MASK_CTRL | KEY_D }, + { "script_text_editor/contextual_help", KEY_MASK_ALT | KEY_MASK_SHIFT | KEY_SPACE }, + { "script_text_editor/find_next", KEY_MASK_CMD | KEY_G }, + { "script_text_editor/find_previous", KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_G }, + { "script_text_editor/toggle_breakpoint", KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_B } + }; + + if (p_keycode == KEY_DELETE) { + p_keycode = KEY_MASK_CMD | KEY_BACKSPACE; + } else { + for (int i = 0; i < sizeof(macos_mappings) / sizeof(ShortCutMapping); i++) { + if (p_path == macos_mappings[i].path) { + p_keycode = macos_mappings[i].keycode; + break; + } + } + } +#endif + Ref<InputEventKey> ie; if (p_keycode) { ie.instance(); @@ -1384,7 +1437,7 @@ void EditorSettings::_bind_methods() { ClassDB::bind_method(D_METHOD("set_setting", "name", "value"), &EditorSettings::set_setting); ClassDB::bind_method(D_METHOD("get_setting", "name"), &EditorSettings::get_setting); ClassDB::bind_method(D_METHOD("erase", "property"), &EditorSettings::erase); - ClassDB::bind_method(D_METHOD("set_initial_value", "name", "value"), &EditorSettings::set_initial_value); + ClassDB::bind_method(D_METHOD("set_initial_value", "name", "value", "update_current"), &EditorSettings::set_initial_value); ClassDB::bind_method(D_METHOD("property_can_revert", "name"), &EditorSettings::property_can_revert); ClassDB::bind_method(D_METHOD("property_get_revert", "name"), &EditorSettings::property_get_revert); ClassDB::bind_method(D_METHOD("add_property_info", "info"), &EditorSettings::_add_property_info_bind); diff --git a/editor/editor_settings.h b/editor/editor_settings.h index b079f71b6a..914316ee61 100644 --- a/editor/editor_settings.h +++ b/editor/editor_settings.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_SETTINGS_H #define EDITOR_SETTINGS_H @@ -110,7 +111,8 @@ private: bool save_changed_setting; bool optimize_save; //do not save stuff that came from config but was not set from engine - bool _set(const StringName &p_name, const Variant &p_value, bool p_emit_signal = true); + bool _set(const StringName &p_name, const Variant &p_value); + bool _set_only(const StringName &p_name, const Variant &p_value); bool _get(const StringName &p_name, Variant &r_ret) const; void _initial_set(const StringName &p_name, const Variant &p_value); void _get_property_list(List<PropertyInfo> *p_list) const; @@ -143,9 +145,12 @@ public: bool has_setting(const String &p_setting) const; void erase(const String &p_setting); void raise_order(const String &p_setting); - void set_initial_value(const StringName &p_setting, const Variant &p_value); + void set_initial_value(const StringName &p_setting, const Variant &p_value, bool update_current = false); void set_manually(const StringName &p_setting, const Variant &p_value, bool p_emit_signal = false) { - _set(p_setting, p_value, p_emit_signal); + if (p_emit_signal) + _set(p_setting, p_value); + else + _set_only(p_setting, p_value); } bool property_can_revert(const String &p_setting); Variant property_get_revert(const String &p_setting); diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp index 0eaf475c14..7527b198b8 100644 --- a/editor/editor_sub_scene.cpp +++ b/editor/editor_sub_scene.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_sub_scene.h" #include "scene/gui/margin_container.h" diff --git a/editor/editor_sub_scene.h b/editor/editor_sub_scene.h index 56c08c7532..cf4d6fd5b9 100644 --- a/editor/editor_sub_scene.h +++ b/editor/editor_sub_scene.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_SUB_SCENE_H #define EDITOR_SUB_SCENE_H diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 3644893663..096a60afa3 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_themes.h" #include "core/io/resource_loader.h" @@ -192,6 +193,10 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme = exceptions.push_back("ZoomReset"); exceptions.push_back("LockViewport"); exceptions.push_back("GroupViewport"); + exceptions.push_back("StatusError"); + exceptions.push_back("StatusSuccess"); + exceptions.push_back("StatusWarning"); + exceptions.push_back("NodeWarning"); clock_t begin_time = clock(); @@ -207,7 +212,7 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme = } // generate thumb files with the given thumb size - bool force_filter = !(p_thumb_size == 64 && p_thumb_size == 32); // we dont need filter with original resolution + bool force_filter = !(p_thumb_size == 64 && p_thumb_size == 32); // we don't need filter with original resolution if (p_thumb_size >= 64) { float scale = (float)p_thumb_size / 64.0 * EDSCALE; for (int i = 0; i < editor_bg_thumbs_count; i++) { @@ -332,6 +337,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { const Color font_color = mono_color.linear_interpolate(base_color, 0.25); const Color font_color_hl = mono_color.linear_interpolate(base_color, 0.15); const Color font_color_disabled = Color(mono_color.r, mono_color.g, mono_color.b, 0.3); + const Color font_color_selection = Color::html("#7d7d7d"); const Color color_disabled = mono_color.inverted().linear_interpolate(base_color, 0.7); const Color color_disabled_bg = mono_color.inverted().linear_interpolate(base_color, 0.9); @@ -790,6 +796,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_color("read_only", "LineEdit", font_color_disabled); theme->set_color("font_color", "LineEdit", font_color); theme->set_color("cursor_color", "LineEdit", font_color); + theme->set_color("selection_color", "LineEdit", font_color_selection); // TextEdit theme->set_stylebox("normal", "TextEdit", style_widget); @@ -799,6 +806,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("tab", "TextEdit", theme->get_icon("GuiTab", "EditorIcons")); theme->set_color("font_color", "TextEdit", font_color); theme->set_color("caret_color", "TextEdit", highlight_color); + theme->set_color("selection_color", "TextEdit", font_color_selection); // H/VSplitContainer theme->set_stylebox("bg", "VSplitContainer", make_stylebox(theme->get_icon("GuiVsplitBg", "EditorIcons"), 1, 1, 1, 1)); @@ -1049,7 +1057,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { const Color word_highlighted_color = alpha1; const Color number_color = basetype_color.linear_interpolate(mono_color, dark_theme ? 0.5 : 0.3); const Color function_color = main_color; - const Color member_variable_color = mono_color; + const Color member_variable_color = main_color.linear_interpolate(mono_color, 0.6); const Color mark_color = Color(error_color.r, error_color.g, error_color.b, 0.3); const Color breakpoint_color = error_color; const Color code_folding_color = alpha4; @@ -1059,67 +1067,67 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { EditorSettings *setting = EditorSettings::get_singleton(); String text_editor_color_theme = setting->get("text_editor/theme/color_theme"); if (text_editor_color_theme == "Adaptive") { - setting->set_manually("text_editor/highlighting/symbol_color", symbol_color); - setting->set_manually("text_editor/highlighting/keyword_color", keyword_color); - setting->set_manually("text_editor/highlighting/base_type_color", basetype_color); - setting->set_manually("text_editor/highlighting/engine_type_color", type_color); - setting->set_manually("text_editor/highlighting/comment_color", comment_color); - setting->set_manually("text_editor/highlighting/string_color", string_color); - setting->set_manually("text_editor/highlighting/background_color", background_color); - setting->set_manually("text_editor/highlighting/completion_background_color", completion_background_color); - setting->set_manually("text_editor/highlighting/completion_selected_color", completion_selected_color); - setting->set_manually("text_editor/highlighting/completion_existing_color", completion_existing_color); - setting->set_manually("text_editor/highlighting/completion_scroll_color", completion_scroll_color); - setting->set_manually("text_editor/highlighting/completion_font_color", completion_font_color); - setting->set_manually("text_editor/highlighting/text_color", text_color); - setting->set_manually("text_editor/highlighting/line_number_color", line_number_color); - setting->set_manually("text_editor/highlighting/caret_color", caret_color); - setting->set_manually("text_editor/highlighting/caret_background_color", caret_background_color); - setting->set_manually("text_editor/highlighting/text_selected_color", text_selected_color); - setting->set_manually("text_editor/highlighting/selection_color", selection_color); - setting->set_manually("text_editor/highlighting/brace_mismatch_color", brace_mismatch_color); - setting->set_manually("text_editor/highlighting/current_line_color", current_line_color); - setting->set_manually("text_editor/highlighting/line_length_guideline_color", line_length_guideline_color); - setting->set_manually("text_editor/highlighting/word_highlighted_color", word_highlighted_color); - setting->set_manually("text_editor/highlighting/number_color", number_color); - setting->set_manually("text_editor/highlighting/function_color", function_color); - setting->set_manually("text_editor/highlighting/member_variable_color", member_variable_color); - setting->set_manually("text_editor/highlighting/mark_color", mark_color); - setting->set_manually("text_editor/highlighting/breakpoint_color", breakpoint_color); - setting->set_manually("text_editor/highlighting/code_folding_color", code_folding_color); - setting->set_manually("text_editor/highlighting/search_result_color", search_result_color); - setting->set_manually("text_editor/highlighting/search_result_border_color", search_result_border_color); + setting->set_initial_value("text_editor/highlighting/symbol_color", symbol_color, true); + setting->set_initial_value("text_editor/highlighting/keyword_color", keyword_color, true); + setting->set_initial_value("text_editor/highlighting/base_type_color", basetype_color, true); + setting->set_initial_value("text_editor/highlighting/engine_type_color", type_color, true); + setting->set_initial_value("text_editor/highlighting/comment_color", comment_color, true); + setting->set_initial_value("text_editor/highlighting/string_color", string_color, true); + setting->set_initial_value("text_editor/highlighting/background_color", background_color, true); + setting->set_initial_value("text_editor/highlighting/completion_background_color", completion_background_color, true); + setting->set_initial_value("text_editor/highlighting/completion_selected_color", completion_selected_color, true); + setting->set_initial_value("text_editor/highlighting/completion_existing_color", completion_existing_color, true); + setting->set_initial_value("text_editor/highlighting/completion_scroll_color", completion_scroll_color, true); + setting->set_initial_value("text_editor/highlighting/completion_font_color", completion_font_color, true); + setting->set_initial_value("text_editor/highlighting/text_color", text_color, true); + setting->set_initial_value("text_editor/highlighting/line_number_color", line_number_color, true); + setting->set_initial_value("text_editor/highlighting/caret_color", caret_color, true); + setting->set_initial_value("text_editor/highlighting/caret_background_color", caret_background_color, true); + setting->set_initial_value("text_editor/highlighting/text_selected_color", text_selected_color, true); + setting->set_initial_value("text_editor/highlighting/selection_color", selection_color, true); + setting->set_initial_value("text_editor/highlighting/brace_mismatch_color", brace_mismatch_color, true); + setting->set_initial_value("text_editor/highlighting/current_line_color", current_line_color, true); + setting->set_initial_value("text_editor/highlighting/line_length_guideline_color", line_length_guideline_color, true); + setting->set_initial_value("text_editor/highlighting/word_highlighted_color", word_highlighted_color, true); + setting->set_initial_value("text_editor/highlighting/number_color", number_color, true); + setting->set_initial_value("text_editor/highlighting/function_color", function_color, true); + setting->set_initial_value("text_editor/highlighting/member_variable_color", member_variable_color, true); + setting->set_initial_value("text_editor/highlighting/mark_color", mark_color, true); + setting->set_initial_value("text_editor/highlighting/breakpoint_color", breakpoint_color, true); + setting->set_initial_value("text_editor/highlighting/code_folding_color", code_folding_color, true); + setting->set_initial_value("text_editor/highlighting/search_result_color", search_result_color, true); + setting->set_initial_value("text_editor/highlighting/search_result_border_color", search_result_border_color, true); } else if (text_editor_color_theme == "Default") { - setting->set_manually("text_editor/highlighting/symbol_color", Color::html("badfff")); - setting->set_manually("text_editor/highlighting/keyword_color", Color::html("ffffb3")); - setting->set_manually("text_editor/highlighting/base_type_color", Color::html("a4ffd4")); - setting->set_manually("text_editor/highlighting/engine_type_color", Color::html("83d3ff")); - setting->set_manually("text_editor/highlighting/comment_color", Color::html("676767")); - setting->set_manually("text_editor/highlighting/string_color", Color::html("ef6ebe")); - setting->set_manually("text_editor/highlighting/background_color", Color::html("3b000000")); - setting->set_manually("text_editor/highlighting/completion_background_color", Color::html("2C2A32")); - setting->set_manually("text_editor/highlighting/completion_selected_color", Color::html("434244")); - setting->set_manually("text_editor/highlighting/completion_existing_color", Color::html("21dfdfdf")); - setting->set_manually("text_editor/highlighting/completion_scroll_color", Color::html("ffffff")); - setting->set_manually("text_editor/highlighting/completion_font_color", Color::html("aaaaaa")); - setting->set_manually("text_editor/highlighting/text_color", Color::html("aaaaaa")); - setting->set_manually("text_editor/highlighting/line_number_color", Color::html("66aaaaaa")); - setting->set_manually("text_editor/highlighting/caret_color", Color::html("aaaaaa")); - setting->set_manually("text_editor/highlighting/caret_background_color", Color::html("000000")); - setting->set_manually("text_editor/highlighting/text_selected_color", Color::html("000000")); - setting->set_manually("text_editor/highlighting/selection_color", Color::html("6ca9c2")); - setting->set_manually("text_editor/highlighting/brace_mismatch_color", Color(1, 0.2, 0.2)); - setting->set_manually("text_editor/highlighting/current_line_color", Color(0.3, 0.5, 0.8, 0.15)); - setting->set_manually("text_editor/highlighting/line_length_guideline_color", Color(0.3, 0.5, 0.8, 0.1)); - setting->set_manually("text_editor/highlighting/word_highlighted_color", Color(0.8, 0.9, 0.9, 0.15)); - setting->set_manually("text_editor/highlighting/number_color", Color::html("EB9532")); - setting->set_manually("text_editor/highlighting/function_color", Color::html("66a2ce")); - setting->set_manually("text_editor/highlighting/member_variable_color", Color::html("e64e59")); - setting->set_manually("text_editor/highlighting/mark_color", Color(1.0, 0.4, 0.4, 0.4)); - setting->set_manually("text_editor/highlighting/breakpoint_color", Color(0.8, 0.8, 0.4, 0.2)); - setting->set_manually("text_editor/highlighting/code_folding_color", Color(0.8, 0.8, 0.8, 0.8)); - setting->set_manually("text_editor/highlighting/search_result_color", Color(0.05, 0.25, 0.05, 1)); - setting->set_manually("text_editor/highlighting/search_result_border_color", Color(0.1, 0.45, 0.1, 1)); + setting->set_initial_value("text_editor/highlighting/symbol_color", Color::html("badfff"), true); + setting->set_initial_value("text_editor/highlighting/keyword_color", Color::html("ffffb3"), true); + setting->set_initial_value("text_editor/highlighting/base_type_color", Color::html("a4ffd4"), true); + setting->set_initial_value("text_editor/highlighting/engine_type_color", Color::html("83d3ff"), true); + setting->set_initial_value("text_editor/highlighting/comment_color", Color::html("676767"), true); + setting->set_initial_value("text_editor/highlighting/string_color", Color::html("ef6ebe"), true); + setting->set_initial_value("text_editor/highlighting/background_color", Color::html("3b000000"), true); + setting->set_initial_value("text_editor/highlighting/completion_background_color", Color::html("2C2A32"), true); + setting->set_initial_value("text_editor/highlighting/completion_selected_color", Color::html("434244"), true); + setting->set_initial_value("text_editor/highlighting/completion_existing_color", Color::html("21dfdfdf"), true); + setting->set_initial_value("text_editor/highlighting/completion_scroll_color", Color::html("ffffff"), true); + setting->set_initial_value("text_editor/highlighting/completion_font_color", Color::html("aaaaaa"), true); + setting->set_initial_value("text_editor/highlighting/text_color", Color::html("aaaaaa"), true); + setting->set_initial_value("text_editor/highlighting/line_number_color", Color::html("66aaaaaa"), true); + setting->set_initial_value("text_editor/highlighting/caret_color", Color::html("aaaaaa"), true); + setting->set_initial_value("text_editor/highlighting/caret_background_color", Color::html("000000"), true); + setting->set_initial_value("text_editor/highlighting/text_selected_color", Color::html("000000"), true); + setting->set_initial_value("text_editor/highlighting/selection_color", Color::html("6ca9c2"), true); + setting->set_initial_value("text_editor/highlighting/brace_mismatch_color", Color(1, 0.2, 0.2), true); + setting->set_initial_value("text_editor/highlighting/current_line_color", Color(0.3, 0.5, 0.8, 0.15), true); + setting->set_initial_value("text_editor/highlighting/line_length_guideline_color", Color(0.3, 0.5, 0.8, 0.1), true); + setting->set_initial_value("text_editor/highlighting/word_highlighted_color", Color(0.8, 0.9, 0.9, 0.15), true); + setting->set_initial_value("text_editor/highlighting/number_color", Color::html("EB9532"), true); + setting->set_initial_value("text_editor/highlighting/function_color", Color::html("66a2ce"), true); + setting->set_initial_value("text_editor/highlighting/member_variable_color", Color::html("e64e59"), true); + setting->set_initial_value("text_editor/highlighting/mark_color", Color(1.0, 0.4, 0.4, 0.4), true); + setting->set_initial_value("text_editor/highlighting/breakpoint_color", Color(0.8, 0.8, 0.4, 0.2), true); + setting->set_initial_value("text_editor/highlighting/code_folding_color", Color(0.8, 0.8, 0.8, 0.8), true); + setting->set_initial_value("text_editor/highlighting/search_result_color", Color(0.05, 0.25, 0.05, 1), true); + setting->set_initial_value("text_editor/highlighting/search_result_border_color", Color(0.1, 0.45, 0.1, 1), true); } return theme; @@ -1135,16 +1143,5 @@ Ref<Theme> create_custom_theme(const Ref<Theme> p_theme) { theme = create_editor_theme(p_theme); } - String global_font = EditorSettings::get_singleton()->get("interface/editor/custom_font"); - if (global_font != "") { - Ref<Font> fnt = ResourceLoader::load(global_font); - if (fnt.is_valid()) { - if (!theme.is_valid()) { - theme.instance(); - } - theme->set_default_theme_font(fnt); - } - } - return theme; } diff --git a/editor/editor_themes.h b/editor/editor_themes.h index 6f4e527cb2..7d8d3a5308 100644 --- a/editor/editor_themes.h +++ b/editor/editor_themes.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_THEMES_H #define EDITOR_THEMES_H diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp index 0206e37c43..c4ecf3c098 100644 --- a/editor/export_template_manager.cpp +++ b/editor/export_template_manager.cpp @@ -27,8 +27,11 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "export_template_manager.h" +#include "core/os/input.h" +#include "core/os/keyboard.h" #include "editor_node.h" #include "editor_scale.h" #include "io/json.h" @@ -250,7 +253,7 @@ void ExportTemplateManager::_install_from_file(const String &p_file, bool p_use_ DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); Error err = d->make_dir_recursive(template_path); if (err != OK) { - EditorNode::get_singleton()->show_warning(TTR("Error creating path for templates:\n") + template_path); + EditorNode::get_singleton()->show_warning(TTR("Error creating path for templates:") + "\n" + template_path); unzClose(pkg); return; } @@ -421,6 +424,11 @@ void ExportTemplateManager::_http_download_templates_completed(int p_status, int void ExportTemplateManager::_begin_template_download(const String &p_url) { + if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) { + OS::get_singleton()->shell_open(p_url); + return; + } + for (int i = 0; i < template_list->get_child_count(); i++) { BaseButton *b = Object::cast_to<BaseButton>(template_list->get_child(0)); if (b) { @@ -575,7 +583,7 @@ ExportTemplateManager::ExportTemplateManager() { template_downloader->add_child(vbc); ScrollContainer *sc = memnew(ScrollContainer); sc->set_custom_minimum_size(Size2(400, 200) * EDSCALE); - vbc->add_margin_child(TTR("Select mirror from list: "), sc); + vbc->add_margin_child(TTR("Select mirror from list: (Shift+Click: Open in Browser)"), sc); template_list = memnew(VBoxContainer); sc->add_child(template_list); sc->set_enable_v_scroll(true); diff --git a/editor/export_template_manager.h b/editor/export_template_manager.h index 413fe82593..62336162fd 100644 --- a/editor/export_template_manager.h +++ b/editor/export_template_manager.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EXPORT_TEMPLATE_MANAGER_H #define EXPORT_TEMPLATE_MANAGER_H diff --git a/editor/file_type_cache.cpp b/editor/file_type_cache.cpp index 73adea5779..02e647b733 100644 --- a/editor/file_type_cache.cpp +++ b/editor/file_type_cache.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_type_cache.h" #include "os/file_access.h" diff --git a/editor/file_type_cache.h b/editor/file_type_cache.h index d3ffccc1a8..33b50cb1c4 100644 --- a/editor/file_type_cache.h +++ b/editor/file_type_cache.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_TYPE_CACHE_H #define FILE_TYPE_CACHE_H diff --git a/editor/fileserver/editor_file_server.cpp b/editor/fileserver/editor_file_server.cpp index de620070aa..a218070933 100644 --- a/editor/fileserver/editor_file_server.cpp +++ b/editor/fileserver/editor_file_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_file_server.h" #include "../editor_settings.h" @@ -54,7 +55,7 @@ void EditorFileServer::_subthread_start(void *s) { ClientData *cd = (ClientData *)s; - cd->connection->set_nodelay(true); + cd->connection->set_no_delay(true); uint8_t buf4[8]; Error err = cd->connection->get_data(buf4, 4); if (err != OK) { diff --git a/editor/fileserver/editor_file_server.h b/editor/fileserver/editor_file_server.h index a4a7dba1d2..d73c78ee70 100644 --- a/editor/fileserver/editor_file_server.h +++ b/editor/fileserver/editor_file_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_FILE_SERVER_H #define EDITOR_FILE_SERVER_H diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 949455ff98..8ead8d3982 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "filesystem_dock.h" #include "editor_node.h" @@ -76,7 +77,7 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory return true; } -void FileSystemDock::_update_tree(bool keep_collapse_state) { +void FileSystemDock::_update_tree(bool keep_collapse_state, bool p_uncollapse_root) { Vector<String> uncollapsed_paths; if (keep_collapse_state) { @@ -128,6 +129,10 @@ void FileSystemDock::_update_tree(bool keep_collapse_state) { ti->set_metadata(0, fave); } + if (p_uncollapse_root) { + uncollapsed_paths.push_back("res://"); + } + _create_tree(root, EditorFileSystem::get_singleton()->get_filesystem(), uncollapsed_paths); tree->ensure_cursor_is_visible(); updating_tree = false; @@ -153,6 +158,7 @@ void FileSystemDock::_notification(int p_what) { } else { tree->set_v_size_flags(SIZE_FILL); + button_tree->hide(); if (!tree->is_visible()) { tree->show(); button_favorite->show(); @@ -162,7 +168,6 @@ void FileSystemDock::_notification(int p_what) { if (!file_list_vb->is_visible()) { file_list_vb->show(); - button_tree->hide(); _update_files(true); } } @@ -203,7 +208,7 @@ void FileSystemDock::_notification(int p_what) { if (EditorFileSystem::get_singleton()->is_scanning()) { _set_scanning_mode(); } else { - _update_tree(false); + _update_tree(false, true); } } break; @@ -548,7 +553,7 @@ void FileSystemDock::_update_files(bool p_keep_selection) { } else { type_icon = get_icon("ImportFail", ei); big_icon = file_thumbnail_broken; - tooltip += TTR("\nStatus: Import of file failed. Please fix file and reimport manually."); + tooltip += "\n" + TTR("Status: Import of file failed. Please fix file and reimport manually."); } int item_index; @@ -752,7 +757,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_ return; } else if (!p_item.is_file && new_path.begins_with(old_path)) { //This check doesn't erroneously catch renaming to a longer name as folder paths always end with "/" - EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.\n") + old_path + "\n"); + EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.") + "\n" + old_path + "\n"); return; } @@ -772,7 +777,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_ if (p_item.is_file && FileAccess::exists(old_path + ".import")) { err = da->rename(old_path + ".import", new_path + ".import"); if (err != OK) { - EditorNode::get_singleton()->add_io_error(TTR("Error moving:\n") + old_path + ".import\n"); + EditorNode::get_singleton()->add_io_error(TTR("Error moving:") + "\n" + old_path + ".import\n"); } } @@ -796,7 +801,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_ print_line(" Remap: " + changed_paths[i] + " -> " + p_renames[changed_paths[i]]); } } else { - EditorNode::get_singleton()->add_io_error(TTR("Error moving:\n") + old_path + "\n"); + EditorNode::get_singleton()->add_io_error(TTR("Error moving:") + "\n" + old_path + "\n"); } memdelete(da); } @@ -813,23 +818,23 @@ void FileSystemDock::_try_duplicate_item(const FileOrFolder &p_item, const Strin return; } else if (!p_item.is_file && new_path.begins_with(old_path)) { //This check doesn't erroneously catch renaming to a longer name as folder paths always end with "/" - EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.\n") + old_path + "\n"); + EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.") + "\n" + old_path + "\n"); return; } DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES); print_line("Duplicating " + old_path + " -> " + new_path); - Error err = da->copy(old_path, new_path); + Error err = p_item.is_file ? da->copy(old_path, new_path) : da->copy_dir(old_path, new_path); if (err == OK) { //Move/Rename any corresponding import settings too if (p_item.is_file && FileAccess::exists(old_path + ".import")) { err = da->copy(old_path + ".import", new_path + ".import"); if (err != OK) { - EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:\n") + old_path + ".import\n"); + EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:") + "\n" + old_path + ".import\n"); } } } else { - EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:\n") + old_path + "\n"); + EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:") + "\n" + old_path + "\n"); } memdelete(da); } @@ -901,7 +906,7 @@ void FileSystemDock::_update_dependencies_after_move(const Map<String, String> & if (ResourceLoader::get_resource_type(file) == "PackedScene") editor->reload_scene(file); } else { - EditorNode::get_singleton()->add_io_error(TTR("Unable to update dependencies:\n") + remaps[i] + "\n"); + EditorNode::get_singleton()->add_io_error(TTR("Unable to update dependencies:") + "\n" + remaps[i] + "\n"); } } } @@ -980,10 +985,12 @@ void FileSystemDock::_duplicate_operation_confirm() { return; } - String old_path = to_duplicate.path.ends_with("/") ? to_duplicate.path.substr(0, to_duplicate.path.length() - 1) : to_rename.path; - String new_path = old_path.get_base_dir().plus_file(new_name); - if (old_path == new_path) { - return; + String new_path; + String base_dir = to_duplicate.path.get_base_dir(); + if (to_duplicate.is_file) { + new_path = base_dir.plus_file(new_name); + } else { + new_path = base_dir.substr(0, base_dir.find_last("/")) + "/" + new_name; } //Present a more user friendly warning for name conflict @@ -995,7 +1002,7 @@ void FileSystemDock::_duplicate_operation_confirm() { } memdelete(da); - _try_duplicate_item(to_duplicate, new_name); + _try_duplicate_item(to_duplicate, new_path); //Rescan everything print_line("call rescan!"); diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h index 45c0aff439..2e86b83efc 100644 --- a/editor/filesystem_dock.h +++ b/editor/filesystem_dock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILESYSTEM_DOCK_H #define FILESYSTEM_DOCK_H @@ -156,7 +157,7 @@ private: bool import_dock_needs_update; bool _create_tree(TreeItem *p_parent, EditorFileSystemDirectory *p_dir, Vector<String> &uncollapsed_paths); - void _update_tree(bool keep_collapse_state); + void _update_tree(bool keep_collapse_state, bool p_uncollapse_root = false); void _update_files(bool p_keep_selection); void _update_file_display_toggle_button(); diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp index 6f823534ca..bac18be4a9 100644 --- a/editor/groups_editor.cpp +++ b/editor/groups_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "groups_editor.h" #include "editor_node.h" diff --git a/editor/groups_editor.h b/editor/groups_editor.h index c60ab4bc22..ad3d5cd14f 100644 --- a/editor/groups_editor.h +++ b/editor/groups_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GROUPS_EDITOR_H #define GROUPS_EDITOR_H diff --git a/editor/icons/SCsub b/editor/icons/SCsub index 0e4a4796ec..9bd036dfa9 100644 --- a/editor/icons/SCsub +++ b/editor/icons/SCsub @@ -52,9 +52,9 @@ def make_editor_icons_action(target, source, env): # some special cases if icon_name in ['Int', 'Bool', 'Float']: icon_name = icon_name.lower() - if icon_name.endswith("MediumThumb"): # dont know a better way to handle this + if icon_name.endswith("MediumThumb"): # don't know a better way to handle this thumb_medium_indices.append(str(index)) - if icon_name.endswith("BigThumb"): # dont know a better way to handle this + if icon_name.endswith("BigThumb"): # don't know a better way to handle this thumb_big_indices.append(str(index)) s.write('\t"%s"' % icon_name) diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index 52659b360f..863b13cbd7 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_import_collada.h" #include "editor/collada/collada.h" @@ -1550,7 +1551,7 @@ void ColladaImport::create_animations(bool p_make_tracks_in_all_bones, bool p_im node = node_name_map[at.target]; } else { - print_line("Couldnt find node: " + at.target); + print_line("Couldn't find node: " + at.target); continue; } } else { @@ -1735,7 +1736,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones } if (xform_idx == -1) { - print_line("couldnt find matching node " + at.target + " xform for track " + at.param); + print_line("couldn't find matching node " + at.target + " xform for track " + at.param); continue; } diff --git a/editor/import/editor_import_collada.h b/editor/import/editor_import_collada.h index 004b07b5be..5dd3ff58fa 100644 --- a/editor/import/editor_import_collada.h +++ b/editor/import/editor_import_collada.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_IMPORT_COLLADA_H #define EDITOR_IMPORT_COLLADA_H diff --git a/editor/import/editor_import_plugin.cpp b/editor/import/editor_import_plugin.cpp index 6297e1eca6..07c77a9df0 100644 --- a/editor/import/editor_import_plugin.cpp +++ b/editor/import/editor_import_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_import_plugin.h" #include "core/script_language.h" diff --git a/editor/import/editor_import_plugin.h b/editor/import/editor_import_plugin.h index 9f860401ed..61a0a944f5 100644 --- a/editor/import/editor_import_plugin.h +++ b/editor/import/editor_import_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_IMPORT_PLUGIN_H #define EDITOR_IMPORT_PLUGIN_H diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index 189e98ea68..1c4617c353 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* editor_scene_importer_gltf.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "editor_scene_importer_gltf.h" #include "io/json.h" #include "math_defs.h" @@ -880,18 +910,24 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) { { //gltf does not seem to normalize the weights for some reason.. int wc = weights.size(); PoolVector<float>::Write w = weights.write(); - for (int i = 0; i < wc; i += 4) { + + //PoolVector<int> v = array[Mesh::ARRAY_BONES]; + //PoolVector<int>::Read r = v.read(); + + for (int j = 0; j < wc; j += 4) { float total = 0.0; - total += w[i + 0]; - total += w[i + 1]; - total += w[i + 2]; - total += w[i + 3]; + total += w[j + 0]; + total += w[j + 1]; + total += w[j + 2]; + total += w[j + 3]; if (total > 0.0) { - w[i + 0] /= total; - w[i + 1] /= total; - w[i + 2] /= total; - w[i + 3] /= total; + w[j + 0] /= total; + w[j + 1] /= total; + w[j + 2] /= total; + w[j + 3] /= total; } + + //print_line(itos(j / 4) + ": " + itos(r[j + 0]) + ":" + rtos(w[j + 0]) + ", " + itos(r[j + 1]) + ":" + rtos(w[j + 1]) + ", " + itos(r[j + 2]) + ":" + rtos(w[j + 2]) + ", " + itos(r[j + 3]) + ":" + rtos(w[j + 3])); } } array[Mesh::ARRAY_WEIGHTS] = weights; @@ -1338,6 +1374,10 @@ Error EditorSceneImporterGLTF::_parse_skins(GLTFState &state) { //state.nodes[skeleton]->skeleton_skin = state.skins.size(); print_line("setting skeleton skin to" + itos(skeleton)); skin.skeleton = skeleton; + if (!state.skeleton_nodes.has(skeleton)) { + state.skeleton_nodes[skeleton] = Vector<int>(); + } + state.skeleton_nodes[skeleton].push_back(i); } if (d.has("name")) { @@ -1641,7 +1681,8 @@ void EditorSceneImporterGLTF::_generate_node(GLTFState &state, int p_node, Node MeshInstance *mi = Object::cast_to<MeshInstance>(node); //move skeleton around and place it on node, as the node _is_ a skeleton. Skeleton *s = skeletons[n->skin]; - mi->set_skeleton_path(mi->get_path_to(s)); + state.paths_to_skeleton[mi] = s; + //move it later, as skeleton may be moved around first } #if 0 @@ -1655,16 +1696,27 @@ void EditorSceneImporterGLTF::_generate_node(GLTFState &state, int p_node, Node #endif for (int i = 0; i < n->children.size(); i++) { if (state.nodes[n->children[i]]->joints.size()) { - _generate_bone(state, n->children[i], skeletons, Vector<int>()); + _generate_bone(state, n->children[i], skeletons, Vector<int>(), node); } else { _generate_node(state, n->children[i], node, p_owner, skeletons); } } } -void EditorSceneImporterGLTF::_generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones) { +void EditorSceneImporterGLTF::_generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones, Node *p_parent_node) { ERR_FAIL_INDEX(p_node, state.nodes.size()); + if (state.skeleton_nodes.has(p_node)) { + //reparent skeletons to proper place + Vector<int> nodes = state.skeleton_nodes[p_node]; + for (int i = 0; i < nodes.size(); i++) { + Node *owner = skeletons[i]->get_owner(); + skeletons[i]->get_parent()->remove_child(skeletons[i]); + p_parent_node->add_child(skeletons[i]); + skeletons[i]->set_owner(owner); + } + } + GLTFNode *n = state.nodes[p_node]; Vector<int> parent_bones; @@ -1684,7 +1736,7 @@ void EditorSceneImporterGLTF::_generate_bone(GLTFState &state, int p_node, Vecto } for (int i = 0; i < n->children.size(); i++) { - _generate_bone(state, n->children[i], skeletons, parent_bones); + _generate_bone(state, n->children[i], skeletons, parent_bones, p_parent_node); } } @@ -2000,12 +2052,18 @@ Spatial *EditorSceneImporterGLTF::_generate_scene(GLTFState &state, int p_bake_f } for (int i = 0; i < state.root_nodes.size(); i++) { if (state.nodes[state.root_nodes[i]]->joints.size()) { - _generate_bone(state, state.root_nodes[i], skeletons, Vector<int>()); + _generate_bone(state, state.root_nodes[i], skeletons, Vector<int>(), root); } else { _generate_node(state, state.root_nodes[i], root, root, skeletons); } } + for (Map<Node *, Skeleton *>::Element *E = state.paths_to_skeleton.front(); E; E = E->next()) { + MeshInstance *mi = Object::cast_to<MeshInstance>(E->key()); + ERR_CONTINUE(!mi); + mi->set_skeleton_path(mi->get_path_to(E->get())); + } + for (int i = 0; i < skeletons.size(); i++) { skeletons[i]->localize_rests(); } diff --git a/editor/import/editor_scene_importer_gltf.h b/editor/import/editor_scene_importer_gltf.h index abbdfa418b..088036ce75 100644 --- a/editor/import/editor_scene_importer_gltf.h +++ b/editor/import/editor_scene_importer_gltf.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* editor_scene_importer_gltf.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 EDITOR_SCENE_IMPORTER_GLTF_H #define EDITOR_SCENE_IMPORTER_GLTF_H @@ -244,6 +274,9 @@ class EditorSceneImporterGLTF : public EditorSceneImporter { Vector<GLTFAnimation> animations; + Map<int, Vector<int> > skeleton_nodes; + Map<Node *, Skeleton *> paths_to_skeleton; + //Map<int, Vector<int> > skin_users; //cache skin users ~GLTFState() { @@ -278,7 +311,7 @@ class EditorSceneImporterGLTF : public EditorSceneImporter { Vector<Basis> _decode_accessor_as_basis(GLTFState &state, int p_accessor, bool p_for_vertex); Vector<Transform> _decode_accessor_as_xform(GLTFState &state, int p_accessor, bool p_for_vertex); - void _generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones); + void _generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones, Node *p_parent_node); void _generate_node(GLTFState &state, int p_node, Node *p_parent, Node *p_owner, Vector<Skeleton *> &skeletons); void _import_animation(GLTFState &state, AnimationPlayer *ap, int index, int bake_fps, Vector<Skeleton *> skeletons); diff --git a/editor/import/resource_importer_bitmask.cpp b/editor/import/resource_importer_bitmask.cpp new file mode 100644 index 0000000000..a5d3959952 --- /dev/null +++ b/editor/import/resource_importer_bitmask.cpp @@ -0,0 +1,91 @@ +#include "resource_importer_bitmask.h" +#include "core/image.h" +#include "editor/editor_file_system.h" +#include "editor/editor_node.h" +#include "io/config_file.h" +#include "io/image_loader.h" +#include "scene/resources/bit_mask.h" +#include "scene/resources/texture.h" + +String ResourceImporterBitMap::get_importer_name() const { + + return "bitmap"; +} + +String ResourceImporterBitMap::get_visible_name() const { + + return "BitMap"; +} +void ResourceImporterBitMap::get_recognized_extensions(List<String> *p_extensions) const { + + ImageLoader::get_recognized_extensions(p_extensions); +} +String ResourceImporterBitMap::get_save_extension() const { + return "res"; +} + +String ResourceImporterBitMap::get_resource_type() const { + + return "BitMap"; +} + +bool ResourceImporterBitMap::get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const { + + return true; +} + +int ResourceImporterBitMap::get_preset_count() const { + return 0; +} +String ResourceImporterBitMap::get_preset_name(int p_idx) const { + + return String(); +} + +void ResourceImporterBitMap::get_import_options(List<ImportOption> *r_options, int p_preset) const { + + r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "create_from", PROPERTY_HINT_ENUM, "Black & White,Alpha"), 0)); + r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "threshold", PROPERTY_HINT_RANGE, "0,1,0.01"), 0.5)); +} + +Error ResourceImporterBitMap::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files) { + + int create_from = p_options["create_from"]; + float threshold = p_options["threshold"]; + Ref<Image> image; + image.instance(); + Error err = ImageLoader::load_image(p_source_file, image); + if (err != OK) + return err; + + int w = image->get_width(); + int h = image->get_height(); + + Ref<BitMap> bitmap; + bitmap.instance(); + bitmap->create(Size2(w, h)); + image->lock(); + + for (int i = 0; i < h; i++) { + for (int j = 0; j < w; j++) { + + bool bit; + Color c = image->get_pixel(j, i); + if (create_from == 0) { //b&W + bit = c.get_v() > threshold; + } else { + bit = c.a > threshold; + } + + bitmap->set_bit(Vector2(j, i), bit); + } + } + + return ResourceSaver::save(p_save_path + ".res", bitmap); +} + +ResourceImporterBitMap::ResourceImporterBitMap() { +} + +ResourceImporterBitMap::~ResourceImporterBitMap() { +} diff --git a/editor/import/resource_importer_bitmask.h b/editor/import/resource_importer_bitmask.h new file mode 100644 index 0000000000..8a3cafa7ce --- /dev/null +++ b/editor/import/resource_importer_bitmask.h @@ -0,0 +1,29 @@ +#ifndef RESOURCE_IMPORTER_BITMASK_H +#define RESOURCE_IMPORTER_BITMASK_H + +#include "image.h" +#include "io/resource_import.h" + +class StreamBitMap; + +class ResourceImporterBitMap : public ResourceImporter { + GDCLASS(ResourceImporterBitMap, ResourceImporter) + +public: + virtual String get_importer_name() const; + virtual String get_visible_name() const; + virtual void get_recognized_extensions(List<String> *p_extensions) const; + virtual String get_save_extension() const; + virtual String get_resource_type() const; + + virtual int get_preset_count() const; + virtual String get_preset_name(int p_idx) const; + + virtual void get_import_options(List<ImportOption> *r_options, int p_preset = 0) const; + virtual bool get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const; + virtual Error import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = NULL); + + ResourceImporterBitMap(); + ~ResourceImporterBitMap(); +}; +#endif // RESOURCE_IMPORTER_BITMASK_H diff --git a/editor/import/resource_importer_csv_translation.cpp b/editor/import/resource_importer_csv_translation.cpp index 70093d13a7..22c32f5fc9 100644 --- a/editor/import/resource_importer_csv_translation.cpp +++ b/editor/import/resource_importer_csv_translation.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_csv_translation.h" #include "compressed_translation.h" diff --git a/editor/import/resource_importer_csv_translation.h b/editor/import/resource_importer_csv_translation.h index ca6e63f8aa..f5f230c6bd 100644 --- a/editor/import/resource_importer_csv_translation.h +++ b/editor/import/resource_importer_csv_translation.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTERCSVTRANSLATION_H #define RESOURCEIMPORTERCSVTRANSLATION_H diff --git a/editor/import/resource_importer_obj.cpp b/editor/import/resource_importer_obj.cpp index d2cdfb5013..78fc9ec9bd 100644 --- a/editor/import/resource_importer_obj.cpp +++ b/editor/import/resource_importer_obj.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_obj.h" #include "io/resource_saver.h" diff --git a/editor/import/resource_importer_obj.h b/editor/import/resource_importer_obj.h index 8710432aa1..3f6d1104d7 100644 --- a/editor/import/resource_importer_obj.h +++ b/editor/import/resource_importer_obj.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTEROBJ_H #define RESOURCEIMPORTEROBJ_H diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp index d36cb5cb59..44948b8209 100644 --- a/editor/import/resource_importer_scene.cpp +++ b/editor/import/resource_importer_scene.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_scene.h" #include "editor/editor_node.h" @@ -45,6 +46,7 @@ #include "scene/resources/box_shape.h" #include "scene/resources/plane_shape.h" #include "scene/resources/ray_shape.h" +#include "scene/resources/scene_format_text.h" #include "scene/resources/sphere_shape.h" uint32_t EditorSceneImporter::get_import_flags() const { @@ -1394,3 +1396,25 @@ ResourceImporterScene *ResourceImporterScene::singleton = NULL; ResourceImporterScene::ResourceImporterScene() { singleton = this; } +/////////////////////////////////////// + +uint32_t EditorSceneImporterESCN::get_import_flags() const { + return IMPORT_SCENE; +} +void EditorSceneImporterESCN::get_extensions(List<String> *r_extensions) const { + r_extensions->push_back("escn"); +} +Node *EditorSceneImporterESCN::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) { + + Error error; + Ref<PackedScene> ps = ResourceFormatLoaderText::singleton->load(p_path, p_path, &error); + ERR_FAIL_COND_V(!ps.is_valid(), NULL); + + Node *scene = ps->instance(); + ERR_FAIL_COND_V(!scene, NULL); + + return scene; +} +Ref<Animation> EditorSceneImporterESCN::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) { + ERR_FAIL_V(Ref<Animation>()); +} diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h index 4d0e236cf1..9c3ec7a29b 100644 --- a/editor/import/resource_importer_scene.h +++ b/editor/import/resource_importer_scene.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTERSCENE_H #define RESOURCEIMPORTERSCENE_H @@ -154,4 +155,14 @@ public: ResourceImporterScene(); }; +class EditorSceneImporterESCN : public EditorSceneImporter { + GDCLASS(EditorSceneImporterESCN, EditorSceneImporter); + +public: + virtual uint32_t get_import_flags() const; + virtual void get_extensions(List<String> *r_extensions) const; + virtual Node *import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err = NULL); + virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps); +}; + #endif // RESOURCEIMPORTERSCENE_H diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp index 45ce347244..8119b84b7e 100644 --- a/editor/import/resource_importer_texture.cpp +++ b/editor/import/resource_importer_texture.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_texture.h" #include "editor/editor_file_system.h" diff --git a/editor/import/resource_importer_texture.h b/editor/import/resource_importer_texture.h index 3d9e657017..fd6f75c3f4 100644 --- a/editor/import/resource_importer_texture.h +++ b/editor/import/resource_importer_texture.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTTEXTURE_H #define RESOURCEIMPORTTEXTURE_H diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp index de82c12b98..03155b3a48 100644 --- a/editor/import/resource_importer_wav.cpp +++ b/editor/import/resource_importer_wav.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_wav.h" #include "io/marshalls.h" @@ -267,9 +268,15 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s for (int i = 0; i < 10; i++) file->get_32(); // i wish to know why should i do this... no doc! - loop = file->get_32() ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD; - loop_begin = file->get_32(); - loop_end = file->get_32(); + // only read 0x00 (loop forward) and 0x01 (loop ping-pong) and skip anything else because + // it's not supported (loop backward), reserved for future uses or sampler specific + // from https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#smpl (loop type values table) + int loop_type = file->get_32(); + if (loop_type == 0x00 || loop_type == 0x01) { + loop = loop_type ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD; + loop_begin = file->get_32(); + loop_end = file->get_32(); + } } file->seek(file_pos + chunksize); } @@ -386,7 +393,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s Vector<float> new_data; new_data.resize((last - first + 1) * format_channels); - for (int i = first * format_channels; i <= last * format_channels; i++) { + for (int i = first * format_channels; i < (last + 1) * format_channels; i++) { new_data[i - first * format_channels] = data[i]; } diff --git a/editor/import/resource_importer_wav.h b/editor/import/resource_importer_wav.h index 89a6bfb015..cfce5a31ee 100644 --- a/editor/import/resource_importer_wav.h +++ b/editor/import/resource_importer_wav.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTWAV_H #define RESOURCEIMPORTWAV_H diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp index cec7fc6a4c..ce2a4ec6d8 100644 --- a/editor/import_dock.cpp +++ b/editor/import_dock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "import_dock.h" #include "editor_node.h" diff --git a/editor/import_dock.h b/editor/import_dock.h index d6b5c4d9b4..a7a7eda8d8 100644 --- a/editor/import_dock.h +++ b/editor/import_dock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMPORTDOCK_H #define IMPORTDOCK_H diff --git a/editor/multi_node_edit.cpp b/editor/multi_node_edit.cpp index 030510feee..73e78ddf2a 100644 --- a/editor/multi_node_edit.cpp +++ b/editor/multi_node_edit.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "multi_node_edit.h" #include "core/helper/math_fieldwise.h" diff --git a/editor/multi_node_edit.h b/editor/multi_node_edit.h index c6422faaf2..614832320e 100644 --- a/editor/multi_node_edit.h +++ b/editor/multi_node_edit.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MULTI_NODE_EDIT_H #define MULTI_NODE_EDIT_H diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp index 429eb4ae34..83e09b7676 100644 --- a/editor/node_dock.cpp +++ b/editor/node_dock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "node_dock.h" #include "editor_node.h" diff --git a/editor/node_dock.h b/editor/node_dock.h index 23bc7af90b..4b2a9d14da 100644 --- a/editor/node_dock.h +++ b/editor/node_dock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NODE_DOCK_H #define NODE_DOCK_H diff --git a/editor/output_strings.cpp b/editor/output_strings.cpp index 37198ef6ab..b0b72510a9 100644 --- a/editor/output_strings.cpp +++ b/editor/output_strings.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "output_strings.h" void OutputStrings::update_scrollbars() { diff --git a/editor/output_strings.h b/editor/output_strings.h index 58d966a6ee..0729971704 100644 --- a/editor/output_strings.h +++ b/editor/output_strings.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OUTPUT_STRINGS_H #define OUTPUT_STRINGS_H diff --git a/editor/pane_drag.cpp b/editor/pane_drag.cpp index eb76a1ad00..d8c504a85d 100644 --- a/editor/pane_drag.cpp +++ b/editor/pane_drag.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "pane_drag.h" void PaneDrag::_gui_input(const Ref<InputEvent> &p_input) { diff --git a/editor/pane_drag.h b/editor/pane_drag.h index 22e46a6df7..e80664eee7 100644 --- a/editor/pane_drag.h +++ b/editor/pane_drag.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PANE_DRAG_H #define PANE_DRAG_H diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index 06d07ad5e6..5052b69e24 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "abstract_polygon_2d_editor.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h index 38aff47706..9ba03bcdf6 100644 --- a/editor/plugins/abstract_polygon_2d_editor.h +++ b/editor/plugins/abstract_polygon_2d_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ABSTRACT_POLYGON_2D_EDITOR_H #define ABSTRACT_POLYGON_2D_EDITOR_H diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index dcc766ad0d..c22e1cd88b 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation_player_editor_plugin.h" #include "editor/animation_editor.h" @@ -72,7 +73,7 @@ void AnimationPlayerEditor::_notification(int p_what) { if (player->is_playing()) { { - String animname = player->get_current_animation(); + String animname = player->get_assigned_animation(); if (player->has_animation(animname)) { Ref<Animation> anim = player->get_animation(animname); @@ -185,8 +186,8 @@ void AnimationPlayerEditor::_play_pressed() { if (current != "") { - if (current == player->get_current_animation()) - player->stop(); //so it wont blend with itself + if (current == player->get_assigned_animation()) + player->stop(); //so it won't blend with itself player->play(current); } @@ -208,9 +209,9 @@ void AnimationPlayerEditor::_play_from_pressed() { float time = player->get_current_animation_position(); - if (current == player->get_current_animation() && player->is_playing()) { + if (current == player->get_assigned_animation() && player->is_playing()) { - player->stop(); //so it wont blend with itself + player->stop(); //so it won't blend with itself } player->play(current); @@ -233,8 +234,8 @@ void AnimationPlayerEditor::_play_bw_pressed() { if (current != "") { - if (current == player->get_current_animation()) - player->stop(); //so it wont blend with itself + if (current == player->get_assigned_animation()) + player->stop(); //so it won't blend with itself player->play(current, -1, -1, true); } @@ -255,8 +256,8 @@ void AnimationPlayerEditor::_play_bw_from_pressed() { if (current != "") { float time = player->get_current_animation_position(); - if (current == player->get_current_animation()) - player->stop(); //so it wont blend with itself + if (current == player->get_assigned_animation()) + player->stop(); //so it won't blend with itself player->play(current, -1, -1, true); player->seek(time); @@ -298,7 +299,7 @@ void AnimationPlayerEditor::_animation_selected(int p_which) { if (current != "") { - player->set_current_animation(current); + player->set_assigned_animation(current); Ref<Animation> anim = player->get_animation(current); { @@ -653,7 +654,7 @@ Dictionary AnimationPlayerEditor::get_state() const { d["visible"] = is_visible_in_tree(); if (EditorNode::get_singleton()->get_edited_scene() && is_visible_in_tree() && player) { d["player"] = EditorNode::get_singleton()->get_edited_scene()->get_path_to(player); - d["animation"] = player->get_current_animation(); + d["animation"] = player->get_assigned_animation(); } return d; @@ -781,7 +782,7 @@ void AnimationPlayerEditor::_update_animation() { } scale->set_text(String::num(player->get_speed_scale(), 2)); - String current = player->get_current_animation(); + String current = player->get_assigned_animation(); for (int i = 0; i < animation->get_item_count(); i++) { @@ -828,7 +829,7 @@ void AnimationPlayerEditor::_update_player() { else animation->add_item(E->get()); - if (player->get_current_animation() == E->get()) + if (player->get_assigned_animation() == E->get()) active_idx = animation->get_item_count() - 1; } @@ -985,7 +986,7 @@ void AnimationPlayerEditor::_seek_value_changed(float p_value, bool p_set) { }; updating = true; - String current = player->get_current_animation(); //animation->get_item_text( animation->get_selected() ); + String current = player->get_assigned_animation(); //animation->get_item_text( animation->get_selected() ); if (current == "" || !player->has_animation(current)) { updating = false; current = ""; @@ -1335,7 +1336,7 @@ void AnimationPlayerEditor::_prepare_onion_layers_1() { void AnimationPlayerEditor::_prepare_onion_layers_2() { - Ref<Animation> anim = player->get_animation(player->get_current_animation()); + Ref<Animation> anim = player->get_animation(player->get_assigned_animation()); if (!anim.is_valid()) return; diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h index 67c6aa1fd7..a7b7c6c465 100644 --- a/editor/plugins/animation_player_editor_plugin.h +++ b/editor/plugins/animation_player_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_PLAYER_EDITOR_PLUGIN_H #define ANIMATION_PLAYER_EDITOR_PLUGIN_H diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp index 9337bd21fc..f0e186e4b0 100644 --- a/editor/plugins/animation_tree_editor_plugin.cpp +++ b/editor/plugins/animation_tree_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation_tree_editor_plugin.h" #include "core/io/resource_loader.h" diff --git a/editor/plugins/animation_tree_editor_plugin.h b/editor/plugins/animation_tree_editor_plugin.h index c46d84893e..aeb5b1744f 100644 --- a/editor/plugins/animation_tree_editor_plugin.h +++ b/editor/plugins/animation_tree_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_TREE_EDITOR_PLUGIN_H #define ANIMATION_TREE_EDITOR_PLUGIN_H diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 19b92a8d58..915132c75c 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "asset_library_editor_plugin.h" #include "editor_node.h" diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h index 8974e01448..b344716c1d 100644 --- a/editor/plugins/asset_library_editor_plugin.h +++ b/editor/plugins/asset_library_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ASSET_LIBRARY_EDITOR_PLUGIN_H #define ASSET_LIBRARY_EDITOR_PLUGIN_H diff --git a/editor/plugins/baked_lightmap_editor_plugin.cpp b/editor/plugins/baked_lightmap_editor_plugin.cpp index 08f4d06ef7..59b79bd070 100644 --- a/editor/plugins/baked_lightmap_editor_plugin.cpp +++ b/editor/plugins/baked_lightmap_editor_plugin.cpp @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* baked_lightmap_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "baked_lightmap_editor_plugin.h" void BakedLightmapEditorPlugin::_bake() { @@ -20,7 +50,6 @@ void BakedLightmapEditorPlugin::_bake() { case BakedLightmap::BAKE_ERROR_CANT_CREATE_IMAGE: EditorNode::get_singleton()->show_warning(TTR("Failed creating lightmap images, make sure path is writable.")); break; - defaut : {} } } } @@ -61,7 +90,7 @@ void BakedLightmapEditorPlugin::bake_func_begin(int p_steps) { bool BakedLightmapEditorPlugin::bake_func_step(int p_step, const String &p_description) { ERR_FAIL_COND_V(tmp_progress == NULL, false); - return tmp_progress->step(p_description, p_step); + return tmp_progress->step(p_description, p_step, false); } void BakedLightmapEditorPlugin::bake_func_end() { diff --git a/editor/plugins/baked_lightmap_editor_plugin.h b/editor/plugins/baked_lightmap_editor_plugin.h index d64c33884a..a32b573851 100644 --- a/editor/plugins/baked_lightmap_editor_plugin.h +++ b/editor/plugins/baked_lightmap_editor_plugin.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* baked_lightmap_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 BAKED_LIGHTMAP_EDITOR_PLUGIN_H #define BAKED_LIGHTMAP_EDITOR_PLUGIN_H diff --git a/editor/plugins/camera_editor_plugin.cpp b/editor/plugins/camera_editor_plugin.cpp index c5cdbc0ad8..37fbb54c30 100644 --- a/editor/plugins/camera_editor_plugin.cpp +++ b/editor/plugins/camera_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "camera_editor_plugin.h" #include "spatial_editor_plugin.h" diff --git a/editor/plugins/camera_editor_plugin.h b/editor/plugins/camera_editor_plugin.h index 1fcdc50f68..275624beeb 100644 --- a/editor/plugins/camera_editor_plugin.h +++ b/editor/plugins/camera_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CAMERA_EDITOR_PLUGIN_H #define CAMERA_EDITOR_PLUGIN_H diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 53b52c5f1b..7d6025cb03 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "canvas_item_editor_plugin.h" #include "editor/animation_editor.h" @@ -339,7 +340,7 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, const // Grid Point2 offset = grid_offset; if (snap_relative) { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); if (selection.size() == 1 && Object::cast_to<Node2D>(selection[0])) { offset = Object::cast_to<Node2D>(selection[0])->get_global_position(); } else { @@ -381,7 +382,7 @@ void CanvasItemEditor::_unhandled_key_input(const Ref<InputEvent> &p_ev) { drag = DRAG_PIVOT; } else if (set_pivot_shortcut.is_valid() && set_pivot_shortcut->is_shortcut(p_ev) && drag == DRAG_NONE && can_move_pivot) { if (!Input::get_singleton()->is_mouse_button_pressed(0)) { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); Vector2 mouse_pos = viewport->get_local_mouse_position(); if (selection.size() && viewport->get_rect().has_point(mouse_pos)) { //just in case, make it work if over viewport @@ -612,6 +613,7 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no if (Object::cast_to<Viewport>(p_node)) return; + const real_t grab_distance = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8); CanvasItem *c = Object::cast_to<CanvasItem>(p_node); for (int i = p_node->get_child_count() - 1; i >= 0; i--) { @@ -630,14 +632,17 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no if (c && c->is_visible_in_tree() && !c->has_meta("_edit_lock_") && !Object::cast_to<CanvasLayer>(c)) { Rect2 rect = c->_edit_get_rect(); - Point2 local_pos = (p_parent_xform * p_canvas_xform * c->get_transform()).affine_inverse().xform(p_pos); + Transform2D to_local = (p_parent_xform * p_canvas_xform * c->get_transform()).affine_inverse(); + Point2 local_pos = to_local.xform(p_pos); + const real_t local_grab_distance = (to_local.xform(p_pos + Vector2(grab_distance, 0)) - local_pos).length(); + Rect2 local_pos_rect = Rect2(local_pos, Vector2(0, 0)).grow(local_grab_distance); - if (rect.has_point(local_pos)) { + if (rect.intersects(local_pos_rect) && c->_edit_is_selected_on_click(local_pos, local_grab_distance)) { Node2D *node = Object::cast_to<Node2D>(c); _SelectResult res; res.item = c; - res.z = node ? node->get_z() : 0; + res.z_index = node ? node->get_z_index() : 0; res.has_z = node; r_items.push_back(res); } @@ -746,7 +751,7 @@ void CanvasItemEditor::_key_move(const Vector2 &p_dir, bool p_snap, KeyMoveMODE undo_redo->create_action(TTR("Move Action"), UndoRedo::MERGE_ENDS); - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -806,7 +811,7 @@ Point2 CanvasItemEditor::_find_topleftmost_point() { Rect2 r2; r2.position = tl; - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -830,7 +835,7 @@ Point2 CanvasItemEditor::_find_topleftmost_point() { int CanvasItemEditor::get_item_count() { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); int ic = 0; for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -997,7 +1002,7 @@ CanvasItemEditor::DragType CanvasItemEditor::_get_anchor_handle_drag_type(const void CanvasItemEditor::_prepare_drag(const Point2 &p_click_pos) { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -1233,7 +1238,7 @@ void CanvasItemEditor::_gui_input_viewport_base(const Ref<InputEvent> &p_event) if (b->get_button_index() == BUTTON_LEFT && b->is_pressed()) { if (show_guides && show_rulers && EditorNode::get_singleton()->get_edited_scene()) { Transform2D xform = viewport_scrollable->get_transform() * transform; - // Retreive the guide lists + // Retrieve the guide lists Array vguides; if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) { vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_"); @@ -1291,7 +1296,7 @@ void CanvasItemEditor::_gui_input_viewport_base(const Ref<InputEvent> &p_event) if (show_guides && EditorNode::get_singleton()->get_edited_scene()) { Transform2D xform = viewport_scrollable->get_transform() * transform; - // Retreive the guide lists + // Retrieve the guide lists Array vguides; if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) { vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_"); @@ -1522,7 +1527,7 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { bone_ik_list.clear(); } else { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); @@ -1603,7 +1608,7 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { } else { undo_redo->create_action(TTR("Edit CanvasItem")); - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -1900,7 +1905,7 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { return; } - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); @@ -1948,9 +1953,9 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { if (node) { real_t angle = node->get_rotation(); - node->set_rotation(snap_angle(angle + (dfrom - center).angle_to(dto - center), angle)); display_rotate_to = dto; - display_rotate_from = center; + display_rotate_from = center + node->get_pivot_offset().rotated(angle); + node->set_rotation(snap_angle(angle + (dfrom - display_rotate_from).angle_to(display_rotate_to - display_rotate_from), angle)); viewport->update(); } } @@ -1994,29 +1999,29 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) { switch (drag) { case DRAG_ANCHOR_TOP_LEFT: - if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x); - if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y); + if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x, false); + if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y, false); continue; break; case DRAG_ANCHOR_TOP_RIGHT: - if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x); - if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y); + if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x, false); + if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y, false); continue; break; case DRAG_ANCHOR_BOTTOM_RIGHT: - if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x); - if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y); + if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x, false); + if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y, false); break; case DRAG_ANCHOR_BOTTOM_LEFT: - if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x); - if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y); + if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x, false); + if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y, false); continue; break; case DRAG_ANCHOR_ALL: - if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x); - if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x); - if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y); - if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y); + if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x, false); + if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x, false); + if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y, false); + if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y, false); continue; break; } @@ -2916,7 +2921,7 @@ void CanvasItemEditor::_draw_viewport() { // hide/show buttons depending on the selection bool all_locked = true; bool all_group = true; - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); if (selection.empty()) { all_locked = false; all_group = false; @@ -2971,7 +2976,7 @@ void CanvasItemEditor::_notification(int p_what) { EditorNode::get_singleton()->get_scene_root()->set_snap_controls_to_pixels(GLOBAL_GET("gui/common/snap_controls_to_pixels")); - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); bool all_control = true; bool has_control = false; @@ -3272,7 +3277,7 @@ void CanvasItemEditor::_update_scroll(float) { } void CanvasItemEditor::_set_anchors_and_margins_preset(Control::LayoutPreset p_preset) { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); undo_redo->create_action(TTR("Change Anchors and Margins")); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -3316,7 +3321,7 @@ void CanvasItemEditor::_set_anchors_and_margins_preset(Control::LayoutPreset p_p } void CanvasItemEditor::_set_anchors_preset(Control::LayoutPreset p_preset) { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); undo_redo->create_action(TTR("Change Anchors")); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -3459,12 +3464,12 @@ void CanvasItemEditor::_popup_callback(int p_op) { case LOCK_SELECTED: { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); - if (!canvas_item || !canvas_item->is_visible_in_tree()) + if (!canvas_item || !canvas_item->is_inside_tree()) continue; if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) @@ -3477,12 +3482,12 @@ void CanvasItemEditor::_popup_callback(int p_op) { } break; case UNLOCK_SELECTED: { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); - if (!canvas_item || !canvas_item->is_visible_in_tree()) + if (!canvas_item || !canvas_item->is_inside_tree()) continue; if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) @@ -3497,12 +3502,12 @@ void CanvasItemEditor::_popup_callback(int p_op) { } break; case GROUP_SELECTED: { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); - if (!canvas_item || !canvas_item->is_visible_in_tree()) + if (!canvas_item || !canvas_item->is_inside_tree()) continue; if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) @@ -3515,12 +3520,12 @@ void CanvasItemEditor::_popup_callback(int p_op) { } break; case UNGROUP_SELECTED: { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get()); - if (!canvas_item || !canvas_item->is_visible_in_tree()) + if (!canvas_item || !canvas_item->is_inside_tree()) continue; if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root()) @@ -3873,7 +3878,7 @@ void CanvasItemEditor::_popup_callback(int p_op) { } break; case SKELETON_SET_IK_CHAIN: { - List<Node *> &selection = editor_selection->get_selected_node_list(); + List<Node *> selection = editor_selection->get_selected_node_list(); for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { @@ -3986,6 +3991,7 @@ void CanvasItemEditor::_bind_methods() { ClassDB::bind_method("_snap_changed", &CanvasItemEditor::_snap_changed); ClassDB::bind_method(D_METHOD("_selection_result_pressed"), &CanvasItemEditor::_selection_result_pressed); ClassDB::bind_method(D_METHOD("_selection_menu_hide"), &CanvasItemEditor::_selection_menu_hide); + ClassDB::bind_method(D_METHOD("set_state"), &CanvasItemEditor::set_state); ADD_SIGNAL(MethodInfo("item_lock_status_changed")); ADD_SIGNAL(MethodInfo("item_group_status_changed")); @@ -4344,7 +4350,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { additive_selection = false; // Update the menus checkboxes - set_state(get_state()); + call_deferred("set_state", get_state()); } CanvasItemEditor *CanvasItemEditor::singleton = NULL; @@ -4429,6 +4435,7 @@ void CanvasItemEditorViewport::_on_change_type_closed() { void CanvasItemEditorViewport::_create_preview(const Vector<String> &files) const { label->set_position(get_global_position() + Point2(14, 14) * EDSCALE); label_desc->set_position(label->get_position() + Point2(0, label->get_size().height)); + bool add_preview = false; for (int i = 0; i < files.size(); i++) { String path = files[i]; RES res = ResourceLoader::load(path); @@ -4450,9 +4457,12 @@ void CanvasItemEditorViewport::_create_preview(const Vector<String> &files) cons } } } - editor->get_scene_root()->add_child(preview_node); + add_preview = true; } } + + if (add_preview) + editor->get_scene_root()->add_child(preview_node); } void CanvasItemEditorViewport::_remove_preview() { @@ -4597,6 +4607,14 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons void CanvasItemEditorViewport::_perform_drop_data() { _remove_preview(); + // Without root dropping multiple files is not allowed + if (!target_node && selected_files.size() > 1) { + accept->get_ok()->set_text(TTR("Ok")); + accept->set_text(TTR("Cannot instantiate multiple nodes without root.")); + accept->popup_centered_minsize(); + return; + } + Vector<String> error_files; editor_data->get_undo_redo().create_action(TTR("Create Node")); @@ -4607,30 +4625,40 @@ void CanvasItemEditorViewport::_perform_drop_data() { if (res.is_null()) { continue; } - Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res)); Ref<PackedScene> scene = Ref<PackedScene>(Object::cast_to<PackedScene>(*res)); - if (texture != NULL) { - Node *child; - if (default_type == "Light2D") - child = memnew(Light2D); - else if (default_type == "Particles2D") - child = memnew(Particles2D); - else if (default_type == "Polygon2D") - child = memnew(Polygon2D); - else if (default_type == "TouchScreenButton") - child = memnew(TouchScreenButton); - else if (default_type == "TextureRect") - child = memnew(TextureRect); - else if (default_type == "NinePatchRect") - child = memnew(NinePatchRect); - else - child = memnew(Sprite); // default - - _create_nodes(target_node, child, path, drop_pos); - } else if (scene != NULL) { - bool success = _create_instance(target_node, path, drop_pos); - if (!success) { - error_files.push_back(path); + if (scene != NULL && scene.is_valid()) { + if (!target_node) { + // Without root node act the same as "Load Inherited Scene" + Error err = EditorNode::get_singleton()->load_scene(path, false, true); + if (err != OK) { + error_files.push_back(path); + } + } else { + bool success = _create_instance(target_node, path, drop_pos); + if (!success) { + error_files.push_back(path); + } + } + } else { + Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res)); + if (texture != NULL && texture.is_valid()) { + Node *child; + if (default_type == "Light2D") + child = memnew(Light2D); + else if (default_type == "Particles2D") + child = memnew(Particles2D); + else if (default_type == "Polygon2D") + child = memnew(Polygon2D); + else if (default_type == "TouchScreenButton") + child = memnew(TouchScreenButton); + else if (default_type == "TextureRect") + child = memnew(TextureRect); + else if (default_type == "NinePatchRect") + child = memnew(NinePatchRect); + else + child = memnew(Sprite); // default + + _create_nodes(target_node, child, path, drop_pos); } } } @@ -4655,14 +4683,14 @@ bool CanvasItemEditorViewport::can_drop_data(const Point2 &p_point, const Varian if (String(d["type"]) == "files") { Vector<String> files = d["files"]; bool can_instance = false; - for (int i = 0; i < files.size(); i++) { // check if dragged files contain resource or scene can be created at least one + for (int i = 0; i < files.size(); i++) { // check if dragged files contain resource or scene can be created at least once RES res = ResourceLoader::load(files[i]); if (res.is_null()) { continue; } String type = res->get_class(); if (type == "PackedScene") { - Ref<PackedScene> sdata = ResourceLoader::load(files[i]); + Ref<PackedScene> sdata = Ref<PackedScene>(Object::cast_to<PackedScene>(*res)); Node *instanced_scene = sdata->instance(PackedScene::GEN_EDIT_STATE_INSTANCE); if (!instanced_scene) { continue; @@ -4676,7 +4704,7 @@ bool CanvasItemEditorViewport::can_drop_data(const Point2 &p_point, const Varian type == "StreamTexture" || type == "AtlasTexture" || type == "LargeTexture") { - Ref<Texture> texture = ResourceLoader::load(files[i]); + Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res)); if (texture.is_valid() == false) { continue; } @@ -4702,6 +4730,7 @@ bool CanvasItemEditorViewport::can_drop_data(const Point2 &p_point, const Varian } void CanvasItemEditorViewport::_show_resource_type_selector() { + _remove_preview(); List<BaseButton *> btn_list; button_group->get_buttons(&btn_list); @@ -4713,6 +4742,17 @@ void CanvasItemEditorViewport::_show_resource_type_selector() { selector->popup_centered_minsize(); } +bool CanvasItemEditorViewport::_only_packed_scenes_selected() const { + + for (int i = 0; i < selected_files.size(); ++i) { + if (ResourceLoader::load(selected_files[i])->get_class() != "PackedScene") { + return false; + } + } + + return true; +} + void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p_data) { bool is_shift = Input::get_singleton()->is_key_pressed(KEY_SHIFT); bool is_alt = Input::get_singleton()->is_key_pressed(KEY_ALT); @@ -4722,6 +4762,8 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p if (d.has("type") && String(d["type"]) == "files") { selected_files = d["files"]; } + if (selected_files.size() == 0) + return; List<Node *> list = editor->get_editor_selection()->get_selected_node_list(); if (list.size() == 0) { @@ -4731,25 +4773,19 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p } else { drop_pos = p_point; target_node = NULL; - _show_resource_type_selector(); - return; } } - if (list.size() != 1) { - accept->get_ok()->set_text(TTR("I see..")); - accept->set_text(TTR("This operation requires a single selected node.")); - accept->popup_centered_minsize(); - _remove_preview(); - return; - } - target_node = list[0]; - if (is_shift && target_node != editor->get_edited_scene()) { - target_node = target_node->get_parent(); + if (list.size() > 0) { + target_node = list[0]; + if (is_shift && target_node != editor->get_edited_scene()) { + target_node = target_node->get_parent(); + } } + drop_pos = p_point; - if (is_alt) { + if (is_alt && !_only_packed_scenes_selected()) { _show_resource_type_selector(); } else { _perform_drop_data(); diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h index f14f1a92a6..ace87f9fe2 100644 --- a/editor/plugins/canvas_item_editor_plugin.h +++ b/editor/plugins/canvas_item_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTROL_EDITOR_PLUGIN_H #define CONTROL_EDITOR_PLUGIN_H @@ -252,10 +253,10 @@ class CanvasItemEditor : public VBoxContainer { struct _SelectResult { CanvasItem *item; - float z; + float z_index; bool has_z; _FORCE_INLINE_ bool operator<(const _SelectResult &p_rr) const { - return has_z && p_rr.has_z ? p_rr.z < z : p_rr.has_z; + return has_z && p_rr.has_z ? p_rr.z_index < z_index : p_rr.has_z; } }; @@ -575,6 +576,7 @@ class CanvasItemEditorViewport : public Control { void _remove_preview(); bool _cyclical_dependency_exists(const String &p_target_scene_path, Node *p_desired_node); + bool _only_packed_scenes_selected() const; void _create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point); bool _create_instance(Node *parent, String &path, const Point2 &p_point); void _perform_drop_data(); diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.cpp b/editor/plugins/collision_polygon_2d_editor_plugin.cpp index 53b06c17be..b624d69810 100644 --- a/editor/plugins/collision_polygon_2d_editor_plugin.cpp +++ b/editor/plugins/collision_polygon_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_polygon_2d_editor_plugin.h" Node2D *CollisionPolygon2DEditor::_get_node() const { diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.h b/editor/plugins/collision_polygon_2d_editor_plugin.h index 82a30d6b97..ba691ab76a 100644 --- a/editor/plugins/collision_polygon_2d_editor_plugin.h +++ b/editor/plugins/collision_polygon_2d_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_POLYGON_2D_EDITOR_PLUGIN_H #define COLLISION_POLYGON_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/collision_polygon_editor_plugin.cpp b/editor/plugins/collision_polygon_editor_plugin.cpp index c95f10441b..d8d3c0cee6 100644 --- a/editor/plugins/collision_polygon_editor_plugin.cpp +++ b/editor/plugins/collision_polygon_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_polygon_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/collision_polygon_editor_plugin.h b/editor/plugins/collision_polygon_editor_plugin.h index 0ccdf0ad16..f1f215b092 100644 --- a/editor/plugins/collision_polygon_editor_plugin.h +++ b/editor/plugins/collision_polygon_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_POLYGON_EDITOR_PLUGIN_H #define COLLISION_POLYGON_EDITOR_PLUGIN_H diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp index 1da3d55b3d..b003664dca 100644 --- a/editor/plugins/collision_shape_2d_editor_plugin.cpp +++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_shape_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h index 7e5dd44c5e..10784f1129 100644 --- a/editor/plugins/collision_shape_2d_editor_plugin.h +++ b/editor/plugins/collision_shape_2d_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SHAPE_2D_EDITOR_PLUGIN_H #define COLLISION_SHAPE_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/cube_grid_theme_editor_plugin.cpp b/editor/plugins/cube_grid_theme_editor_plugin.cpp index 416441befc..81f45b9f55 100644 --- a/editor/plugins/cube_grid_theme_editor_plugin.cpp +++ b/editor/plugins/cube_grid_theme_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "cube_grid_theme_editor_plugin.h" #include "editor/editor_node.h" @@ -289,8 +290,7 @@ MeshLibraryEditorPlugin::MeshLibraryEditorPlugin(EditorNode *p_node) { theme_editor = memnew(MeshLibraryEditor(p_node)); p_node->get_viewport()->add_child(theme_editor); - theme_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE); - theme_editor->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_BEGIN); + theme_editor->set_anchors_and_margins_preset(Control::PRESET_TOP_WIDE); theme_editor->set_end(Point2(0, 22)); theme_editor->hide(); } diff --git a/editor/plugins/cube_grid_theme_editor_plugin.h b/editor/plugins/cube_grid_theme_editor_plugin.h index fc5b3d8006..36a8f8f203 100644 --- a/editor/plugins/cube_grid_theme_editor_plugin.h +++ b/editor/plugins/cube_grid_theme_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CUBE_GRID_THEME_EDITOR_PLUGIN_H #define CUBE_GRID_THEME_EDITOR_PLUGIN_H diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp index c865ddd4b0..7c49408c35 100644 --- a/editor/plugins/curve_editor_plugin.cpp +++ b/editor/plugins/curve_editor_plugin.cpp @@ -177,7 +177,7 @@ void CurveEditor::on_gui_input(const Ref<InputEvent> &p_event) { set_hover_point_index(i); set_selected_point(i); - // This is to prevent the user from loosing a point out of view. + // This is to prevent the user from losing a point out of view. if (point_pos.y < curve.get_min_value()) point_pos.y = curve.get_min_value(); else if (point_pos.y > curve.get_max_value()) @@ -347,7 +347,8 @@ void CurveEditor::open_context_menu(Vector2 pos) { _context_menu->set_item_checked(_context_menu->get_item_index(CONTEXT_LINEAR), is_linear); } else { - _context_menu->add_separator(); + if (_selected_point > 0 || _selected_point + 1 < _curve_ref->get_point_count()) + _context_menu->add_separator(); if (_selected_point > 0) { _context_menu->add_check_item(TTR("Left linear"), CONTEXT_LEFT_LINEAR); @@ -367,6 +368,7 @@ void CurveEditor::open_context_menu(Vector2 pos) { _context_menu->add_submenu_item(TTR("Load preset"), _presets_menu->get_name()); + _context_menu->set_size(Size2(0, 0)); _context_menu->popup(); } @@ -566,7 +568,6 @@ static void plot_curve_accurate(const Curve &curve, float step, T plot_func) { Vector2 prev_pos = a; float len = b.x - a.x; - //float step = 4.f / view_size.x; for (float x = step; x < len; x += step) { pos.x = a.x + x; @@ -694,24 +695,6 @@ void CurveEditor::_draw() { CanvasItemPlotCurve plot_func(*this, line_color, edge_line_color); plot_curve_accurate(curve, 4.f / view_size.x, plot_func); - /*// TEST draw baked curve - { - Vector2 pos = Vector2(0, curve.interpolate_baked(0)); - Vector2 prev_pos = pos; - - float len = 1.0; - float step = 4.f / view_size.x; - - for(float x = step; x < len; x += step) { - pos.x = x; - pos.y = curve.interpolate_baked(x); - draw_line(get_point_view_pos(prev_pos), get_point_view_pos(pos), Color(0,1,0)); - prev_pos = pos; - } - - draw_line(get_point_view_pos(prev_pos), get_point_view_pos(Vector2(1, curve.interpolate_baked(1))), Color(0,1,0)); - }//*/ - // Draw points draw_set_transform_matrix(Transform2D()); diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp index a42f5b09bb..215964235e 100644 --- a/editor/plugins/editor_preview_plugins.cpp +++ b/editor/plugins/editor_preview_plugins.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor_preview_plugins.h" #include "editor/editor_scale.h" diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h index d77bf5e7bb..2e12515e30 100644 --- a/editor/plugins/editor_preview_plugins.h +++ b/editor/plugins/editor_preview_plugins.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITORPREVIEWPLUGINS_H #define EDITORPREVIEWPLUGINS_H diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp index 48978aeae5..06da64b181 100644 --- a/editor/plugins/gi_probe_editor_plugin.cpp +++ b/editor/plugins/gi_probe_editor_plugin.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* gi_probe_editor_plugin.h */ +/* gi_probe_editor_plugin.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gi_probe_editor_plugin.h" void GIProbeEditorPlugin::_bake() { @@ -72,7 +73,7 @@ void GIProbeEditorPlugin::bake_func_begin(int p_steps) { void GIProbeEditorPlugin::bake_func_step(int p_step, const String &p_description) { ERR_FAIL_COND(tmp_progress == NULL); - tmp_progress->step(p_description, p_step); + tmp_progress->step(p_description, p_step, false); } void GIProbeEditorPlugin::bake_func_end() { diff --git a/editor/plugins/gi_probe_editor_plugin.h b/editor/plugins/gi_probe_editor_plugin.h index cf1c8b5aa3..017e9bd743 100644 --- a/editor/plugins/gi_probe_editor_plugin.h +++ b/editor/plugins/gi_probe_editor_plugin.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* gi_probe_editor_plugin.cpp */ +/* gi_probe_editor_plugin.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GIPROBEEDITORPLUGIN_H #define GIPROBEEDITORPLUGIN_H diff --git a/editor/plugins/gradient_editor_plugin.cpp b/editor/plugins/gradient_editor_plugin.cpp index 738a92380c..e89cb68935 100644 --- a/editor/plugins/gradient_editor_plugin.cpp +++ b/editor/plugins/gradient_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gradient_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/gradient_editor_plugin.h b/editor/plugins/gradient_editor_plugin.h index 6eeb28aa81..52f4c59575 100644 --- a/editor/plugins/gradient_editor_plugin.h +++ b/editor/plugins/gradient_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TOOLS_EDITOR_PLUGINS_COLOR_RAMP_EDITOR_PLUGIN_H_ #define TOOLS_EDITOR_PLUGINS_COLOR_RAMP_EDITOR_PLUGIN_H_ diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp index 436a9c6532..fd5a1f185f 100644 --- a/editor/plugins/item_list_editor_plugin.cpp +++ b/editor/plugins/item_list_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "item_list_editor_plugin.h" #include "io/resource_loader.h" diff --git a/editor/plugins/item_list_editor_plugin.h b/editor/plugins/item_list_editor_plugin.h index 6dbea59585..bd7d3db10d 100644 --- a/editor/plugins/item_list_editor_plugin.h +++ b/editor/plugins/item_list_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ITEM_LIST_EDITOR_PLUGIN_H #define ITEM_LIST_EDITOR_PLUGIN_H diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp index 31287ccdfb..a3be10dc33 100644 --- a/editor/plugins/light_occluder_2d_editor_plugin.cpp +++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "light_occluder_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h index a519acb601..39de8b1020 100644 --- a/editor/plugins/light_occluder_2d_editor_plugin.h +++ b/editor/plugins/light_occluder_2d_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H #define LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/line_2d_editor_plugin.cpp b/editor/plugins/line_2d_editor_plugin.cpp index 5d5dc8f449..47d5a73078 100644 --- a/editor/plugins/line_2d_editor_plugin.cpp +++ b/editor/plugins/line_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "line_2d_editor_plugin.h" Node2D *Line2DEditor::_get_node() const { diff --git a/editor/plugins/line_2d_editor_plugin.h b/editor/plugins/line_2d_editor_plugin.h index 04272064ea..e2e42c2087 100644 --- a/editor/plugins/line_2d_editor_plugin.h +++ b/editor/plugins/line_2d_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LINE_2D_EDITOR_PLUGIN_H #define LINE_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/material_editor_plugin.h b/editor/plugins/material_editor_plugin.h index 11d707d044..80a5c535b8 100644 --- a/editor/plugins/material_editor_plugin.h +++ b/editor/plugins/material_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MATERIAL_EDITOR_PLUGIN_H #define MATERIAL_EDITOR_PLUGIN_H diff --git a/editor/plugins/mesh_editor_plugin.cpp b/editor/plugins/mesh_editor_plugin.cpp index 4c09d3b760..ea8f921034 100644 --- a/editor/plugins/mesh_editor_plugin.cpp +++ b/editor/plugins/mesh_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mesh_editor_plugin.h" void MeshEditor::_gui_input(Ref<InputEvent> p_event) { diff --git a/editor/plugins/mesh_editor_plugin.h b/editor/plugins/mesh_editor_plugin.h index b13c6524dc..cc20bfcbf3 100644 --- a/editor/plugins/mesh_editor_plugin.h +++ b/editor/plugins/mesh_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MESH_EDITOR_PLUGIN_H #define MESH_EDITOR_PLUGIN_H diff --git a/editor/plugins/mesh_instance_editor_plugin.cpp b/editor/plugins/mesh_instance_editor_plugin.cpp index 3ad8cef079..cb5f7ba76c 100644 --- a/editor/plugins/mesh_instance_editor_plugin.cpp +++ b/editor/plugins/mesh_instance_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mesh_instance_editor_plugin.h" #include "scene/3d/collision_shape.h" diff --git a/editor/plugins/mesh_instance_editor_plugin.h b/editor/plugins/mesh_instance_editor_plugin.h index a1c0d9eab0..30caeae7ec 100644 --- a/editor/plugins/mesh_instance_editor_plugin.h +++ b/editor/plugins/mesh_instance_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MESH_INSTANCE_EDITOR_PLUGIN_H #define MESH_INSTANCE_EDITOR_PLUGIN_H diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp index 12fe25f4d7..45f8e25959 100644 --- a/editor/plugins/multimesh_editor_plugin.cpp +++ b/editor/plugins/multimesh_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "multimesh_editor_plugin.h" #include "scene/3d/mesh_instance.h" diff --git a/editor/plugins/multimesh_editor_plugin.h b/editor/plugins/multimesh_editor_plugin.h index 67dd92f3a9..201e735893 100644 --- a/editor/plugins/multimesh_editor_plugin.h +++ b/editor/plugins/multimesh_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MULTIMESH_EDITOR_PLUGIN_H #define MULTIMESH_EDITOR_PLUGIN_H diff --git a/editor/plugins/navigation_mesh_editor_plugin.cpp b/editor/plugins/navigation_mesh_editor_plugin.cpp index 8c80225db6..da3c744324 100644 --- a/editor/plugins/navigation_mesh_editor_plugin.cpp +++ b/editor/plugins/navigation_mesh_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation_mesh_editor_plugin.h" #include "io/marshalls.h" #include "io/resource_saver.h" @@ -107,7 +108,7 @@ NavigationMeshEditor::NavigationMeshEditor() { button_bake->set_text(TTR("Bake!")); button_bake->set_toggle_mode(true); button_reset = memnew(Button); - button_bake->set_tooltip(TTR("Bake the navigation mesh.\n")); + button_bake->set_tooltip(TTR("Bake the navigation mesh.") + "\n"); bake_info = memnew(Label); bake_hbox->add_child(button_bake); diff --git a/editor/plugins/navigation_mesh_editor_plugin.h b/editor/plugins/navigation_mesh_editor_plugin.h index cecaff5648..9382467d85 100644 --- a/editor/plugins/navigation_mesh_editor_plugin.h +++ b/editor/plugins/navigation_mesh_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATION_MESH_GENERATOR_PLUGIN_H #define NAVIGATION_MESH_GENERATOR_PLUGIN_H diff --git a/editor/plugins/navigation_mesh_generator.cpp b/editor/plugins/navigation_mesh_generator.cpp index 0bebdf3c90..5d4e5520f4 100644 --- a/editor/plugins/navigation_mesh_generator.cpp +++ b/editor/plugins/navigation_mesh_generator.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation_mesh_generator.h" #ifdef RECAST_ENABLED @@ -137,12 +138,12 @@ void NavigationMeshGenerator::_convert_detail_mesh_to_native_navigation_mesh(con void NavigationMeshGenerator::_build_recast_navigation_mesh(Ref<NavigationMesh> p_nav_mesh, EditorProgress *ep, rcHeightfield *hf, rcCompactHeightfield *chf, rcContourSet *cset, rcPolyMesh *poly_mesh, rcPolyMeshDetail *detail_mesh, - Vector<float> &verticies, Vector<int> &indices) { + Vector<float> &vertices, Vector<int> &indices) { rcContext ctx; ep->step(TTR("Setting up Configuration..."), 1); - const float *verts = verticies.ptr(); - const int nverts = verticies.size() / 3; + const float *verts = vertices.ptr(); + const int nverts = vertices.size() / 3; const int *tris = indices.ptr(); const int ntris = indices.size() / 3; @@ -264,12 +265,12 @@ void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node) EditorProgress ep("bake", TTR("Navigation Mesh Generator Setup:"), 11); ep.step(TTR("Parsing Geometry..."), 0); - Vector<float> verticies; + Vector<float> vertices; Vector<int> indices; - _parse_geometry(Object::cast_to<Spatial>(p_node)->get_global_transform().affine_inverse(), p_node, verticies, indices); + _parse_geometry(Object::cast_to<Spatial>(p_node)->get_global_transform().affine_inverse(), p_node, vertices, indices); - if (verticies.size() > 0 && indices.size() > 0) { + if (vertices.size() > 0 && indices.size() > 0) { rcHeightfield *hf = NULL; rcCompactHeightfield *chf = NULL; @@ -277,7 +278,7 @@ void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node) rcPolyMesh *poly_mesh = NULL; rcPolyMeshDetail *detail_mesh = NULL; - _build_recast_navigation_mesh(p_nav_mesh, &ep, hf, chf, cset, poly_mesh, detail_mesh, verticies, indices); + _build_recast_navigation_mesh(p_nav_mesh, &ep, hf, chf, cset, poly_mesh, detail_mesh, vertices, indices); if (hf) { rcFreeHeightField(hf); diff --git a/editor/plugins/navigation_mesh_generator.h b/editor/plugins/navigation_mesh_generator.h index dd0c1df718..d26f541b8d 100644 --- a/editor/plugins/navigation_mesh_generator.h +++ b/editor/plugins/navigation_mesh_generator.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATION_MESH_GENERATOR_H #define NAVIGATION_MESH_GENERATOR_H @@ -53,7 +54,7 @@ protected: static void _convert_detail_mesh_to_native_navigation_mesh(const rcPolyMeshDetail *p_detail_mesh, Ref<NavigationMesh> p_nav_mesh); static void _build_recast_navigation_mesh(Ref<NavigationMesh> p_nav_mesh, EditorProgress *ep, rcHeightfield *hf, rcCompactHeightfield *chf, rcContourSet *cset, rcPolyMesh *poly_mesh, - rcPolyMeshDetail *detail_mesh, Vector<float> &verticies, Vector<int> &indices); + rcPolyMeshDetail *detail_mesh, Vector<float> &vertices, Vector<int> &indices); public: static void bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node); diff --git a/editor/plugins/navigation_polygon_editor_plugin.cpp b/editor/plugins/navigation_polygon_editor_plugin.cpp index 260cb7c45e..d1edf1ae10 100644 --- a/editor/plugins/navigation_polygon_editor_plugin.cpp +++ b/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation_polygon_editor_plugin.h" Ref<NavigationPolygon> NavigationPolygonEditor::_ensure_navpoly() const { diff --git a/editor/plugins/navigation_polygon_editor_plugin.h b/editor/plugins/navigation_polygon_editor_plugin.h index 4652b63095..738aa9fa41 100644 --- a/editor/plugins/navigation_polygon_editor_plugin.h +++ b/editor/plugins/navigation_polygon_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATIONPOLYGONEDITORPLUGIN_H #define NAVIGATIONPOLYGONEDITORPLUGIN_H diff --git a/editor/plugins/particles_2d_editor_plugin.cpp b/editor/plugins/particles_2d_editor_plugin.cpp index a76775700b..abee9a9893 100644 --- a/editor/plugins/particles_2d_editor_plugin.cpp +++ b/editor/plugins/particles_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "particles_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/particles_2d_editor_plugin.h b/editor/plugins/particles_2d_editor_plugin.h index 86f82db84f..addf65789c 100644 --- a/editor/plugins/particles_2d_editor_plugin.h +++ b/editor/plugins/particles_2d_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PARTICLES_2D_EDITOR_PLUGIN_H #define PARTICLES_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/particles_editor_plugin.h b/editor/plugins/particles_editor_plugin.h index 23fa0d9378..013b6e7e30 100644 --- a/editor/plugins/particles_editor_plugin.h +++ b/editor/plugins/particles_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PARTICLES_EDITOR_PLUGIN_H #define PARTICLES_EDITOR_PLUGIN_H diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp index d329d547ef..5ec42b07aa 100644 --- a/editor/plugins/path_2d_editor_plugin.cpp +++ b/editor/plugins/path_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h index e15ad2f541..c92a696967 100644 --- a/editor/plugins/path_2d_editor_plugin.h +++ b/editor/plugins/path_2d_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_2D_EDITOR_PLUGIN_H #define PATH_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/path_editor_plugin.cpp b/editor/plugins/path_editor_plugin.cpp index 92f5025956..056219a575 100644 --- a/editor/plugins/path_editor_plugin.cpp +++ b/editor/plugins/path_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path_editor_plugin.h" #include "os/keyboard.h" diff --git a/editor/plugins/path_editor_plugin.h b/editor/plugins/path_editor_plugin.h index a61905ffe0..6d5f07f729 100644 --- a/editor/plugins/path_editor_plugin.h +++ b/editor/plugins/path_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_EDITOR_PLUGIN_H #define PATH_EDITOR_PLUGIN_H diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index 43d4f5df18..1db6621718 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "polygon_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h index 3721c98486..f1472e4522 100644 --- a/editor/plugins/polygon_2d_editor_plugin.h +++ b/editor/plugins/polygon_2d_editor_plugin.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* polygon_2d_editor_plugin.cpp */ +/* polygon_2d_editor_plugin.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POLYGON_2D_EDITOR_PLUGIN_H #define POLYGON_2D_EDITOR_PLUGIN_H diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp index 0db002b689..a47cb40240 100644 --- a/editor/plugins/resource_preloader_editor_plugin.cpp +++ b/editor/plugins/resource_preloader_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_preloader_editor_plugin.h" #include "editor/editor_settings.h" diff --git a/editor/plugins/resource_preloader_editor_plugin.h b/editor/plugins/resource_preloader_editor_plugin.h index f18e7a18ec..6e04c70741 100644 --- a/editor/plugins/resource_preloader_editor_plugin.h +++ b/editor/plugins/resource_preloader_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_PRELOADER_EDITOR_PLUGIN_H #define RESOURCE_PRELOADER_EDITOR_PLUGIN_H diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 73fd64f8db..d18422c0c0 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_editor_plugin.h" #include "core/io/resource_loader.h" @@ -312,24 +313,22 @@ void ScriptEditor::_goto_script_line2(int p_line) { void ScriptEditor::_goto_script_line(REF p_script, int p_line) { - editor->push_item(p_script.ptr()); - - if (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) { - - Ref<Script> script = Object::cast_to<Script>(*p_script); - if (!script.is_null() && script->get_path().is_resource_file()) - edit(p_script, p_line, 0); - } + Ref<Script> script = Object::cast_to<Script>(*p_script); + if (!script.is_null() && script->get_path().is_resource_file()) { + if (edit(p_script, p_line, 0)) { + editor->push_item(p_script.ptr()); - int selected = tab_container->get_current_tab(); - if (selected < 0 || selected >= tab_container->get_child_count()) - return; + int selected = tab_container->get_current_tab(); + if (selected < 0 || selected >= tab_container->get_child_count()) + return; - ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); - if (!current) - return; + ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected)); + if (!current) + return; - current->goto_line(p_line, true); + current->goto_line(p_line, true); + } + } } void ScriptEditor::_update_history_arrows() { @@ -513,7 +512,6 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) { if (p_save) { apply_scripts(); } - current->clear_edit_menu(); notify_script_close(current->get_edited_script()); } else { EditorHelp *help = Object::cast_to<EditorHelp>(tab_container->get_child(selected)); @@ -539,6 +537,9 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) { } int idx = tab_container->get_current_tab(); + if (current) { + current->clear_edit_menu(); + } memdelete(tselected); if (idx >= tab_container->get_child_count()) idx = tab_container->get_child_count() - 1; @@ -635,7 +636,7 @@ void ScriptEditor::_close_all_tabs() { } void ScriptEditor::_ask_close_current_unsaved_tab(ScriptEditorBase *current) { - erase_tab_confirm->set_text(TTR("Close and save changes?\n\"") + current->get_name() + "\""); + erase_tab_confirm->set_text(TTR("Close and save changes?") + "\n\"" + current->get_name() + "\""); erase_tab_confirm->popup_centered_minsize(); } @@ -1027,6 +1028,15 @@ void ScriptEditor::_menu_option(int p_option) { case FILE_COPY_PATH: { _copy_script_path(); } break; + case SHOW_IN_FILE_SYSTEM: { + ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(tab_container->get_current_tab())); + Ref<Script> script = se->get_edited_script(); + 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()); + } break; case CLOSE_DOCS: { _close_docs_tab(); } break; @@ -1662,10 +1672,14 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change"); + const bool should_open = open_dominant || !EditorNode::get_singleton()->is_changing_scene(); + if (p_script->get_language()->overrides_external_editor()) { - Error err = p_script->get_language()->open_in_external_editor(p_script, p_line >= 0 ? p_line : 0, p_col); - if (err != OK) - ERR_PRINT("Couldn't open script in the overridden external text editor"); + if (should_open) { + Error err = p_script->get_language()->open_in_external_editor(p_script, p_line >= 0 ? p_line : 0, p_col); + if (err != OK) + ERR_PRINT("Couldn't open script in the overridden external text editor"); + } return false; } @@ -1716,7 +1730,7 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool if (se->get_edited_script() == p_script) { - if (open_dominant || !EditorNode::get_singleton()->is_changing_scene()) { + if (should_open) { if (tab_container->get_current_tab() != i) { _go_to_tab(i); script_list->select(script_list->find_metadata(i)); @@ -2164,7 +2178,7 @@ void ScriptEditor::_make_script_list_context_menu() { context_menu->add_separator(); context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/copy_path"), FILE_COPY_PATH); context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/reload_script_soft"), FILE_TOOL_RELOAD_SOFT); - + context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/show_in_file_system"), SHOW_IN_FILE_SYSTEM); Ref<Script> scr = se->get_edited_script(); if (!scr.is_null() && scr->is_tool()) { context_menu->add_separator(); @@ -2613,6 +2627,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Script"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_R), FILE_TOOL_RELOAD_SOFT); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/copy_path", TTR("Copy Script Path")), FILE_COPY_PATH); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/show_in_file_system", TTR("Show In File System")), SHOW_IN_FILE_SYSTEM); file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_previous", TTR("History Prev"), KEY_MASK_ALT | KEY_LEFT), WINDOW_PREV); diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index 3305147442..e60e4cf8c0 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_EDITOR_PLUGIN_H #define SCRIPT_EDITOR_PLUGIN_H @@ -137,6 +138,7 @@ class ScriptEditor : public PanelContainer { CLOSE_ALL, CLOSE_OTHER_TABS, TOGGLE_SCRIPTS_PANEL, + SHOW_IN_FILE_SYSTEM, FILE_COPY_PATH, FILE_TOOL_RELOAD, FILE_TOOL_RELOAD_SOFT, diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 9ad4bfb037..a3728a1d46 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_text_editor.h" #include "editor/editor_node.h" @@ -62,6 +63,7 @@ void ScriptTextEditor::apply_code() { //print_line("applying code"); script->set_source_code(code_editor->get_text_edit()->get_text()); script->update_exports(); + _update_member_keywords(); } Ref<Script> ScriptTextEditor::get_edited_script() const { @@ -69,6 +71,37 @@ Ref<Script> ScriptTextEditor::get_edited_script() const { return script; } +void ScriptTextEditor::_update_member_keywords() { + member_keywords.clear(); + code_editor->get_text_edit()->clear_member_keywords(); + Color member_variable_color = EDITOR_GET("text_editor/highlighting/member_variable_color"); + + StringName instance_base = script->get_instance_base_type(); + + if (instance_base == StringName()) + return; + List<PropertyInfo> plist; + ClassDB::get_property_list(instance_base, &plist); + + for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) { + String name = E->get().name; + if (E->get().usage & PROPERTY_USAGE_CATEGORY || E->get().usage & PROPERTY_USAGE_GROUP) + continue; + if (name.find("/") != -1) + continue; + + code_editor->get_text_edit()->add_member_keyword(name, member_variable_color); + } + + List<String> clist; + ClassDB::get_integer_constant_list(instance_base, &clist); + + for (List<String>::Element *E = clist.front(); E; E = E->next()) { + + code_editor->get_text_edit()->add_member_keyword(E->get(), member_variable_color); + } +} + void ScriptTextEditor::_load_theme_settings() { TextEdit *text_edit = code_editor->get_text_edit(); @@ -198,6 +231,7 @@ void ScriptTextEditor::_set_theme_for_script() { text_edit->add_keyword_color(n, colors_cache.type_color); } + _update_member_keywords(); //colorize comments List<String> comments; @@ -562,6 +596,7 @@ void ScriptTextEditor::_validate_script() { if (!script->is_tool()) { script->set_source_code(text); script->update_exports(); + _update_member_keywords(); //script->reload(); //will update all the variables in property editors } @@ -1530,16 +1565,12 @@ ScriptTextEditor::ScriptTextEditor() { edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_right"), EDIT_INDENT_RIGHT); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/delete_line"), EDIT_DELETE_LINE); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_comment"), EDIT_TOGGLE_COMMENT); - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_fold_line"), EDIT_TOGGLE_FOLD_LINE); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/fold_all_lines"), EDIT_FOLD_ALL_LINES); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/unfold_all_lines"), EDIT_UNFOLD_ALL_LINES); edit_menu->get_popup()->add_separator(); -#ifdef OSX_ENABLED - edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE); -#else + edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE); -#endif edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/trim_trailing_whitespace"), EDIT_TRIM_TRAILING_WHITESAPCE); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/convert_indent_to_spaces"), EDIT_CONVERT_INDENT_TO_SPACES); edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/convert_indent_to_tabs"), EDIT_CONVERT_INDENT_TO_TABS); @@ -1610,13 +1641,14 @@ void ScriptTextEditor::register_editor() { ED_SHORTCUT("script_text_editor/indent_left", TTR("Indent Left"), 0); ED_SHORTCUT("script_text_editor/indent_right", TTR("Indent Right"), 0); ED_SHORTCUT("script_text_editor/toggle_comment", TTR("Toggle Comment"), KEY_MASK_CMD | KEY_K); - ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_CMD | KEY_B); ED_SHORTCUT("script_text_editor/toggle_fold_line", TTR("Fold/Unfold Line"), KEY_MASK_ALT | KEY_F); ED_SHORTCUT("script_text_editor/fold_all_lines", TTR("Fold All Lines"), 0); ED_SHORTCUT("script_text_editor/unfold_all_lines", TTR("Unfold All Lines"), 0); #ifdef OSX_ENABLED + ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_SHIFT | KEY_MASK_CMD | KEY_C); ED_SHORTCUT("script_text_editor/complete_symbol", TTR("Complete Symbol"), KEY_MASK_CTRL | KEY_SPACE); #else + ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_CMD | KEY_B); ED_SHORTCUT("script_text_editor/complete_symbol", TTR("Complete Symbol"), KEY_MASK_CMD | KEY_SPACE); #endif ED_SHORTCUT("script_text_editor/trim_trailing_whitespace", TTR("Trim Trailing Whitespace"), KEY_MASK_CTRL | KEY_MASK_ALT | KEY_T); diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h index 86b829495d..22e8fbce25 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_TEXT_EDITOR_H #define SCRIPT_TEXT_EDITOR_H @@ -43,6 +44,8 @@ class ScriptTextEditor : public ScriptEditorBase { Vector<String> functions; + Vector<String> member_keywords; + HBoxContainer *edit_hb; MenuButton *edit_menu; @@ -57,6 +60,8 @@ class ScriptTextEditor : public ScriptEditorBase { int color_line; String color_args; + void _update_member_keywords(); + struct ColorsCache { Color symbol_color; Color keyword_color; diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index 4f2fbca862..9b31e1a421 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader_editor_plugin.h" #include "core/io/resource_loader.h" diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h index a446fc4134..2ea1562310 100644 --- a/editor/plugins/shader_editor_plugin.h +++ b/editor/plugins/shader_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADER_EDITOR_PLUGIN_H #define SHADER_EDITOR_PLUGIN_H diff --git a/editor/plugins/shader_graph_editor_plugin.h b/editor/plugins/shader_graph_editor_plugin.h index 98a9365727..f273507fcf 100644 --- a/editor/plugins/shader_graph_editor_plugin.h +++ b/editor/plugins/shader_graph_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADER_GRAPH_EDITOR_PLUGIN_H #define SHADER_GRAPH_EDITOR_PLUGIN_H diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index f6aef52e8b..bd2cdf0dda 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "spatial_editor_plugin.h" #include "camera_matrix.h" @@ -1588,7 +1589,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) { float snap = spatial_editor->get_rotate_snap(); if (snap) { - angle = Math::rad2deg(angle) + snap * 0.5; //else it wont reach +180 + angle = Math::rad2deg(angle) + snap * 0.5; //else it won't reach +180 angle -= Math::fmod(angle, snap); set_message(vformat(TTR("Rotating %s degrees."), rtos(angle))); angle = Math::deg2rad(angle); @@ -2016,6 +2017,20 @@ Point2i SpatialEditorViewport::_get_warped_mouse_motion(const Ref<InputEventMous return relative; } +static bool is_shortcut_pressed(const String &p_path) { + Ref<ShortCut> shortcut = ED_GET_SHORTCUT(p_path); + if (shortcut.is_null()) { + return false; + } + InputEventKey *k = Object::cast_to<InputEventKey>(shortcut->get_shortcut().ptr()); + if (k == NULL) { + return false; + } + const Input &input = *Input::get_singleton(); + int scancode = k->get_scancode(); + return input.is_key_pressed(scancode); +} + void SpatialEditorViewport::_update_freelook(real_t delta) { if (!is_freelook_active()) { @@ -2026,38 +2041,28 @@ void SpatialEditorViewport::_update_freelook(real_t delta) { Vector3 right = camera->get_transform().basis.xform(Vector3(1, 0, 0)); Vector3 up = camera->get_transform().basis.xform(Vector3(0, 1, 0)); - int key_left = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_left")->get_shortcut().ptr())->get_scancode(); - int key_right = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_right")->get_shortcut().ptr())->get_scancode(); - int key_forward = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_forward")->get_shortcut().ptr())->get_scancode(); - int key_backwards = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_backwards")->get_shortcut().ptr())->get_scancode(); - int key_up = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_up")->get_shortcut().ptr())->get_scancode(); - int key_down = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_down")->get_shortcut().ptr())->get_scancode(); - int key_speed_modifier = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_speed_modifier")->get_shortcut().ptr())->get_scancode(); - Vector3 direction; bool speed_modifier = false; - const Input &input = *Input::get_singleton(); - - if (input.is_key_pressed(key_left)) { + if (is_shortcut_pressed("spatial_editor/freelook_left")) { direction -= right; } - if (input.is_key_pressed(key_right)) { + if (is_shortcut_pressed("spatial_editor/freelook_right")) { direction += right; } - if (input.is_key_pressed(key_forward)) { + if (is_shortcut_pressed("spatial_editor/freelook_forward")) { direction += forward; } - if (input.is_key_pressed(key_backwards)) { + if (is_shortcut_pressed("spatial_editor/freelook_backwards")) { direction -= forward; } - if (input.is_key_pressed(key_up)) { + if (is_shortcut_pressed("spatial_editor/freelook_up")) { direction += up; } - if (input.is_key_pressed(key_down)) { + if (is_shortcut_pressed("spatial_editor/freelook_down")) { direction -= up; } - if (input.is_key_pressed(key_speed_modifier)) { + if (is_shortcut_pressed("spatial_editor/freelook_speed_modifier")) { speed_modifier = true; } @@ -2688,7 +2693,7 @@ void SpatialEditorViewport::_toggle_camera_preview(bool p_activate) { if (!p_activate) { - previewing->disconnect("tree_exited", this, "_preview_exited_scene"); + previewing->disconnect("tree_exiting", this, "_preview_exited_scene"); previewing = NULL; VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), camera->get_camera()); //restore if (!preview) @@ -2699,7 +2704,7 @@ void SpatialEditorViewport::_toggle_camera_preview(bool p_activate) { } else { previewing = preview; - previewing->connect("tree_exited", this, "_preview_exited_scene"); + previewing->connect("tree_exiting", this, "_preview_exited_scene"); VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), preview->get_camera()); //replace view_menu->hide(); surface->update(); @@ -2850,7 +2855,7 @@ void SpatialEditorViewport::set_state(const Dictionary &p_state) { Node *pv = EditorNode::get_singleton()->get_edited_scene()->get_node(p_state["previewing"]); if (Object::cast_to<Camera>(pv)) { previewing = Object::cast_to<Camera>(pv); - previewing->connect("tree_exited", this, "_preview_exited_scene"); + previewing->connect("tree_exiting", this, "_preview_exited_scene"); VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), previewing->get_camera()); //replace view_menu->hide(); surface->update(); @@ -3822,9 +3827,6 @@ Object *SpatialEditor::_get_editor_data(Object *p_what) { si->sbox_instance = VisualServer::get_singleton()->instance_create2(selection_box->get_rid(), sp->get_world()->get_scenario()); VS::get_singleton()->instance_geometry_set_cast_shadows_setting(si->sbox_instance, VS::SHADOW_CASTING_SETTING_OFF); - if (Engine::get_singleton()->is_editor_hint()) - editor->call("edit_node", sp); - return si; } @@ -3914,7 +3916,7 @@ void SpatialEditor::set_state(const Dictionary &p_state) { if (d.has("snap_enabled")) { snap_enabled = d["snap_enabled"]; - tool_option_button[TOOL_OPT_LOCAL_COORDS]->set_pressed(d["snap_enabled"]); + tool_option_button[TOOL_OPT_USE_SNAP]->set_pressed(d["snap_enabled"]); } if (d.has("translate_snap")) @@ -4947,7 +4949,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) { tool_button[TOOL_MODE_SELECT]->set_pressed(true); button_binds[0] = MENU_TOOL_SELECT; tool_button[TOOL_MODE_SELECT]->connect("pressed", this, "_menu_item_pressed", button_binds); - tool_button[TOOL_MODE_SELECT]->set_tooltip(TTR("Select Mode (Q)\n") + keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection")); + tool_button[TOOL_MODE_SELECT]->set_tooltip(TTR("Select Mode (Q)") + "\n" + keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection")); tool_button[TOOL_MODE_MOVE] = memnew(ToolButton); hbc_menu->add_child(tool_button[TOOL_MODE_MOVE]); diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index b1d4a03893..e12f7affb7 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPATIAL_EDITOR_PLUGIN_H #define SPATIAL_EDITOR_PLUGIN_H diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 35fc987e10..7a4eee0344 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sprite_frames_editor_plugin.h" #include "editor/editor_settings.h" diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h index f94eb6f98c..1f45b10323 100644 --- a/editor/plugins/sprite_frames_editor_plugin.h +++ b/editor/plugins/sprite_frames_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPRITE_FRAMES_EDITOR_PLUGIN_H #define SPRITE_FRAMES_EDITOR_PLUGIN_H diff --git a/editor/plugins/style_box_editor_plugin.cpp b/editor/plugins/style_box_editor_plugin.cpp index a0c7eb178a..f4faab69ed 100644 --- a/editor/plugins/style_box_editor_plugin.cpp +++ b/editor/plugins/style_box_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "style_box_editor_plugin.h" void StyleBoxEditor::edit(const Ref<StyleBox> &p_stylebox) { diff --git a/editor/plugins/style_box_editor_plugin.h b/editor/plugins/style_box_editor_plugin.h index 7a8e5aa99b..34d8caaeb6 100644 --- a/editor/plugins/style_box_editor_plugin.h +++ b/editor/plugins/style_box_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STYLE_BOX_EDITOR_PLUGIN_H #define STYLE_BOX_EDITOR_PLUGIN_H diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp index 572e2f9d83..36a578037e 100644 --- a/editor/plugins/texture_editor_plugin.cpp +++ b/editor/plugins/texture_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_editor_plugin.h" #include "editor/editor_settings.h" diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h index 590dd6d9aa..4ca2bc641e 100644 --- a/editor/plugins/texture_editor_plugin.h +++ b/editor/plugins/texture_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_EDITOR_PLUGIN_H #define TEXTURE_EDITOR_PLUGIN_H diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index 861af05c61..e04798d6d6 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -8,8 +8,6 @@ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ /* */ -/* Author: Mariano Suligoy */ -/* */ /* 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 */ @@ -29,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_region_editor_plugin.h" #include "core/core_string_names.h" @@ -36,6 +35,10 @@ #include "os/keyboard.h" #include "scene/gui/check_box.h" +/** + @author Mariano Suligoy +*/ + void draw_margin_line(Control *edit_draw, Vector2 from, Vector2 to) { Vector2 line = (to - from).normalized() * 10; while ((to - from).length_squared() > 200) { diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h index b84480d3d6..cf9396bd5b 100644 --- a/editor/plugins/texture_region_editor_plugin.h +++ b/editor/plugins/texture_region_editor_plugin.h @@ -8,8 +8,6 @@ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ /* */ -/* Author: Mariano Suligoy */ -/* */ /* 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 */ @@ -41,6 +39,10 @@ #include "scene/resources/style_box.h" #include "scene/resources/texture.h" +/** + @author Mariano Suligoy +*/ + class TextureRegionEditor : public Control { GDCLASS(TextureRegionEditor, Control); diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index 5f1944fe74..f51e691be3 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "theme_editor_plugin.h" #include "os/file_access.h" diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h index 6484fb948d..625b35e2c1 100644 --- a/editor/plugins/theme_editor_plugin.h +++ b/editor/plugins/theme_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THEME_EDITOR_PLUGIN_H #define THEME_EDITOR_PLUGIN_H diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp index acaf2ebcd3..a102d99d1c 100644 --- a/editor/plugins/tile_map_editor_plugin.cpp +++ b/editor/plugins/tile_map_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tile_map_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h index 6388cfb3cc..0a937e200e 100644 --- a/editor/plugins/tile_map_editor_plugin.h +++ b/editor/plugins/tile_map_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TILE_MAP_EDITOR_PLUGIN_H #define TILE_MAP_EDITOR_PLUGIN_H diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index da507db5da..dd5127181d 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tile_set_editor_plugin.h" #include "editor/plugins/canvas_item_editor_plugin.h" @@ -238,19 +239,16 @@ void TileSetEditor::_bind_methods() { TileSetEditor::TileSetEditor(EditorNode *p_editor) { - Panel *panel = memnew(Panel); - panel->set_anchors_and_margins_preset(Control::PRESET_WIDE); - add_child(panel); - MenuButton *options = memnew(MenuButton); - panel->add_child(options); - options->set_position(Point2(1, 1)); - options->set_text(TTR("Tile Set")); - options->get_popup()->add_item(TTR("Add Item"), MENU_OPTION_ADD_ITEM); - options->get_popup()->add_item(TTR("Remove Item"), MENU_OPTION_REMOVE_ITEM); - options->get_popup()->add_separator(); - options->get_popup()->add_item(TTR("Create from Scene"), MENU_OPTION_CREATE_FROM_SCENE); - options->get_popup()->add_item(TTR("Merge from Scene"), MENU_OPTION_MERGE_FROM_SCENE); - options->get_popup()->connect("id_pressed", this, "_menu_cbk"); + menu = memnew(MenuButton); + CanvasItemEditor::get_singleton()->add_control_to_menu_panel(menu); + menu->hide(); + menu->set_text(TTR("Tile Set")); + menu->get_popup()->add_item(TTR("Add Item"), MENU_OPTION_ADD_ITEM); + menu->get_popup()->add_item(TTR("Remove Item"), MENU_OPTION_REMOVE_ITEM); + menu->get_popup()->add_separator(); + menu->get_popup()->add_item(TTR("Create from Scene"), MENU_OPTION_CREATE_FROM_SCENE); + menu->get_popup()->add_item(TTR("Merge from Scene"), MENU_OPTION_MERGE_FROM_SCENE); + menu->get_popup()->connect("id_pressed", this, "_menu_cbk"); editor = p_editor; cd = memnew(ConfirmationDialog); add_child(cd); @@ -286,6 +284,7 @@ void TileSetEditorPlugin::make_visible(bool p_visible) { if (p_visible) { tileset_editor->show(); + tileset_editor->menu->show(); autotile_button->show(); autotile_editor->side_panel->show(); if (autotile_button->is_pressed()) { @@ -293,6 +292,7 @@ void TileSetEditorPlugin::make_visible(bool p_visible) { } } else { tileset_editor->hide(); + tileset_editor->menu->hide(); autotile_editor->side_panel->hide(); autotile_editor->hide(); autotile_button->hide(); @@ -304,8 +304,7 @@ TileSetEditorPlugin::TileSetEditorPlugin(EditorNode *p_node) { tileset_editor = memnew(TileSetEditor(p_node)); add_control_to_container(CONTAINER_CANVAS_EDITOR_MENU, tileset_editor); - tileset_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE); - tileset_editor->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_BEGIN); + tileset_editor->set_anchors_and_margins_preset(Control::PRESET_TOP_WIDE); tileset_editor->set_end(Point2(0, 22)); tileset_editor->hide(); @@ -333,19 +332,20 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) { autotile_list = memnew(ItemList); autotile_list->set_v_size_flags(SIZE_EXPAND_FILL); autotile_list->set_h_size_flags(SIZE_EXPAND_FILL); - autotile_list->set_custom_minimum_size(Size2(02, 200)); + autotile_list->set_custom_minimum_size(Size2(10, 200)); autotile_list->connect("item_selected", this, "_on_autotile_selected"); split->add_child(autotile_list); property_editor = memnew(PropertyEditor); property_editor->set_v_size_flags(SIZE_EXPAND_FILL); property_editor->set_h_size_flags(SIZE_EXPAND_FILL); + property_editor->set_custom_minimum_size(Size2(10, 70)); split->add_child(property_editor); helper = memnew(AutotileEditorHelper(this)); - property_editor->edit(helper); + property_editor->call_deferred("edit", helper); - // Editor + //Editor dragging_point = -1; creating_shape = false; @@ -420,9 +420,7 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) { p.push_back((int)SHAPE_DELETE); tools[SHAPE_DELETE]->connect("pressed", this, "_on_tool_clicked", p); tool_containers[TOOLBAR_SHAPE]->add_child(tools[SHAPE_DELETE]); - //tools[SHAPE_CREATE_FROM_NOT_BITMASKED] = memnew(ToolButton); - //tool_containers[TOOLBAR_SHAPE]->add_child(tools[SHAPE_CREATE_FROM_NOT_BITMASKED]); - tool_containers[TOOLBAR_SHAPE]->add_change_receptor(memnew(VSeparator)); + tool_containers[TOOLBAR_SHAPE]->add_child(memnew(VSeparator)); tools[SHAPE_KEEP_INSIDE_TILE] = memnew(ToolButton); tools[SHAPE_KEEP_INSIDE_TILE]->set_toggle_mode(true); tools[SHAPE_KEEP_INSIDE_TILE]->set_pressed(true); @@ -531,7 +529,7 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) { main_vb->add_child(toolbar); - ScrollContainer *scroll = memnew(ScrollContainer); + scroll = memnew(ScrollContainer); main_vb->add_child(scroll); scroll->set_v_size_flags(SIZE_EXPAND_FILL); @@ -550,6 +548,10 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) { preview->set_region(true); } +AutotileEditor::~AutotileEditor() { + memdelete(helper); +} + void AutotileEditor::_bind_methods() { ClassDB::bind_method("_on_autotile_selected", &AutotileEditor::_on_autotile_selected); @@ -584,6 +586,14 @@ void AutotileEditor::_notification(int p_what) { } } +void AutotileEditor::_changed_callback(Object *p_changed, const char *p_prop) { + if (p_prop == StringName("texture") || p_prop == StringName("is_autotile")) { + edit(tile_set.ptr()); + autotile_list->update(); + workspace->update(); + } +} + void AutotileEditor::_on_autotile_selected(int p_index) { if (get_current_tile() >= 0) { @@ -620,6 +630,9 @@ void AutotileEditor::_on_edit_mode_changed(int p_edit_mode) { tool_containers[TOOLBAR_SHAPE]->show(); tools[TOOL_SELECT]->set_tooltip(TTR("Select current edited sub-tile.")); spin_priority->hide(); + + current_shape = PoolVector2Array(); + select_coord(edited_shape_coord); } break; default: { tool_containers[TOOLBAR_DUMMY]->show(); @@ -629,7 +642,7 @@ void AutotileEditor::_on_edit_mode_changed(int p_edit_mode) { tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to use as icon, this will be also used on invalid autotile bindings.")); spin_priority->hide(); } else { - tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to change it's priority.")); + tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to change its priority.")); spin_priority->show(); } } break; @@ -931,50 +944,18 @@ void AutotileEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { edited_shape_coord = coord; edited_occlusion_shape = tile_set->autotile_get_light_occluder(get_current_tile(), edited_shape_coord); edited_navigation_shape = tile_set->autotile_get_navigation_polygon(get_current_tile(), edited_shape_coord); - shape_anchor = edited_shape_coord; - shape_anchor.x *= (size.x + spacing); - shape_anchor.y *= (size.y + spacing); - if (edit_mode == EDITMODE_OCCLUSION) { - current_shape.resize(0); - if (edited_occlusion_shape.is_valid()) { - for (int i = 0; i < edited_occlusion_shape->get_polygon().size(); i++) { - current_shape.push_back(edited_occlusion_shape->get_polygon()[i] + shape_anchor); - } - } - } else if (edit_mode == EDITMODE_NAVIGATION) { - current_shape.resize(0); - if (edited_navigation_shape.is_valid()) { - if (edited_navigation_shape->get_polygon_count() > 0) { - PoolVector<Vector2> vertices = edited_navigation_shape->get_vertices(); - for (int i = 0; i < edited_navigation_shape->get_polygon(0).size(); i++) { - current_shape.push_back(vertices[edited_navigation_shape->get_polygon(0)[i]] + shape_anchor); - } - } - } - } - } else { - if (edit_mode == EDITMODE_COLLISION) { - Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(get_current_tile()); - for (int i = 0; i < sd.size(); i++) { - if (sd[i].autotile_coord == coord) { - Ref<ConvexPolygonShape2D> shape = sd[i].shape; - if (shape.is_valid()) { - - Rect2 bounding_rect; - PoolVector2Array polygon; - bounding_rect.position = shape->get_points()[0]; - for (int j = 0; j < shape->get_points().size(); j++) { - polygon.push_back(shape->get_points()[j] + shape_anchor); - bounding_rect.expand_to(shape->get_points()[j] + shape_anchor); - } - if (bounding_rect.has_point(mb->get_position())) { - current_shape = polygon; - edited_collision_shape = shape; - } - } - } + Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(get_current_tile()); + bool found_collision_shape = false; + for (int i = 0; i < sd.size(); i++) { + if (sd[i].autotile_coord == coord) { + edited_collision_shape = sd[i].shape; + found_collision_shape = true; + break; } } + if (!found_collision_shape) + edited_collision_shape = Ref<ConvexPolygonShape2D>(NULL); + select_coord(edited_shape_coord); } workspace->update(); } else if (!mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { @@ -1061,20 +1042,43 @@ void AutotileEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { } else { int t_id = get_current_tile(); if (t_id >= 0) { - Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(t_id); - for (int i = 0; i < sd.size(); i++) { - if (sd[i].autotile_coord == edited_shape_coord) { - Ref<ConvexPolygonShape2D> shape = sd[i].shape; - - if (!shape.is_null()) { - sd.remove(i); - tile_set->tile_set_shapes(get_current_tile(), sd); - edited_collision_shape = Ref<Shape2D>(); - current_shape.resize(0); - workspace->update(); + if (edit_mode == EDITMODE_COLLISION) { + Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(t_id); + for (int i = 0; i < sd.size(); i++) { + if (sd[i].autotile_coord == edited_shape_coord) { + Ref<ConvexPolygonShape2D> shape = sd[i].shape; + + if (!shape.is_null()) { + sd.remove(i); + tile_set->tile_set_shapes(get_current_tile(), sd); + edited_collision_shape = Ref<Shape2D>(); + workspace->update(); + } + break; + } + } + } else if (edit_mode == EDITMODE_OCCLUSION) { + Map<Vector2, Ref<OccluderPolygon2D> > map = tile_set->autotile_get_light_oclusion_map(t_id); + for (Map<Vector2, Ref<OccluderPolygon2D> >::Element *E = map.front(); E; E = E->next()) { + if (E->key() == edited_shape_coord) { + tile_set->autotile_set_light_occluder(get_current_tile(), Ref<OccluderPolygon2D>(), edited_shape_coord); + break; + } + } + + edited_occlusion_shape = Ref<OccluderPolygon2D>(); + workspace->update(); + } else if (edit_mode == EDITMODE_NAVIGATION) { + Map<Vector2, Ref<NavigationPolygon> > map = tile_set->autotile_get_navigation_map(t_id); + for (Map<Vector2, Ref<NavigationPolygon> >::Element *E = map.front(); E; E = E->next()) { + if (E->key() == edited_shape_coord) { + tile_set->autotile_set_navigation_polygon(t_id, Ref<NavigationPolygon>(), edited_shape_coord); + break; } - break; } + + edited_navigation_shape = Ref<NavigationPolygon>(); + workspace->update(); } } @@ -1095,6 +1099,16 @@ void AutotileEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { } } break; } + + //Drag Middle Mouse + if (mm.is_valid()) { + if (mm->get_button_mask() & BUTTON_MASK_MIDDLE) { + + Vector2 dragged(mm->get_relative().x, mm->get_relative().y); + scroll->set_h_scroll(scroll->get_h_scroll() - dragged.x * workspace->get_scale().x); + scroll->set_v_scroll(scroll->get_v_scroll() - dragged.y * workspace->get_scale().x); + } + } } } @@ -1225,14 +1239,14 @@ void AutotileEditor::draw_highlight_tile(Vector2 coord, const Vector<Vector2> &o workspace->draw_rect(Rect2(0, coord.y, coord.x, size.y), Color(0.5, 0.5, 0.5, 0.5)); workspace->draw_rect(Rect2(coord.x + size.x, coord.y, region.size.x - coord.x - size.x, size.y), Color(0.5, 0.5, 0.5, 0.5)); workspace->draw_rect(Rect2(0, coord.y + size.y, region.size.x, region.size.y - size.y - coord.y), Color(0.5, 0.5, 0.5, 0.5)); - coord += Vector2(1, 1); - workspace->draw_rect(Rect2(coord, size - Vector2(2, 2)), Color(1, 0, 0), false); + coord += Vector2(1, 1) / workspace->get_scale().x; + workspace->draw_rect(Rect2(coord, size - Vector2(2, 2) / workspace->get_scale().x), Color(1, 0, 0), false); for (int i = 0; i < other_highlighted.size(); i++) { coord = other_highlighted[i]; coord.x *= (size.x + spacing); coord.y *= (size.y + spacing); - coord += Vector2(1, 1); - workspace->draw_rect(Rect2(coord, size - Vector2(2, 2)), Color(1, 0, 0), false); + coord += Vector2(1, 1) / workspace->get_scale().x; + workspace->draw_rect(Rect2(coord, size - Vector2(2, 2) / workspace->get_scale().x), Color(1, 0, 0), false); } } @@ -1241,8 +1255,6 @@ void AutotileEditor::draw_grid_snap() { Color grid_color = Color(0.39, 0, 1, 0.2f); Size2 s = workspace->get_size(); - Vector2 size = tile_set->autotile_get_size(get_current_tile()); - int width_count = (int)(s.width / (snap_step.x + snap_separation.x)); int height_count = (int)(s.height / (snap_step.y + snap_separation.y)); @@ -1308,7 +1320,7 @@ void AutotileEditor::draw_polygon_shapes() { } Vector<Vector2> polygon; Vector<Color> colors; - if (shape == edited_collision_shape) { + if (shape == edited_collision_shape && current_shape.size() > 2) { for (int j = 0; j < current_shape.size(); j++) { polygon.push_back(current_shape[j]); colors.push_back(c_bg); @@ -1358,7 +1370,7 @@ void AutotileEditor::draw_polygon_shapes() { } Vector<Vector2> polygon; Vector<Color> colors; - if (shape == edited_occlusion_shape) { + if (shape == edited_occlusion_shape && current_shape.size() > 2) { for (int j = 0; j < current_shape.size(); j++) { polygon.push_back(current_shape[j]); colors.push_back(c_bg); @@ -1406,7 +1418,7 @@ void AutotileEditor::draw_polygon_shapes() { } Vector<Vector2> polygon; Vector<Color> colors; - if (shape == edited_navigation_shape) { + if (shape == edited_navigation_shape && current_shape.size() > 2) { for (int j = 0; j < current_shape.size(); j++) { polygon.push_back(current_shape[j]); colors.push_back(c_bg); @@ -1453,11 +1465,20 @@ void AutotileEditor::close_shape(const Vector2 &shape_anchor) { Ref<ConvexPolygonShape2D> shape = memnew(ConvexPolygonShape2D); Vector<Vector2> segments; + float p_total = 0; for (int i = 0; i < current_shape.size(); i++) { segments.push_back(current_shape[i] - shape_anchor); + + if (i != current_shape.size() - 1) + p_total += ((current_shape[i + 1].x - current_shape[i].x) * (-current_shape[i + 1].y + (-current_shape[i].y))); + else + p_total += ((current_shape[0].x - current_shape[i].x) * (-current_shape[0].y + (-current_shape[i].y))); } + if (p_total < 0) + segments.invert(); + shape->set_points(segments); tile_set->tile_add_shape(get_current_tile(), shape, Transform2D(), false, edited_shape_coord); @@ -1507,6 +1528,39 @@ void AutotileEditor::close_shape(const Vector2 &shape_anchor) { } } +void AutotileEditor::select_coord(const Vector2 &coord) { + int spacing = tile_set->autotile_get_spacing(get_current_tile()); + Vector2 size = tile_set->autotile_get_size(get_current_tile()); + Vector2 shape_anchor = coord; + shape_anchor.x *= (size.x + spacing); + shape_anchor.y *= (size.y + spacing); + if (edit_mode == EDITMODE_COLLISION) { + current_shape.resize(0); + if (edited_collision_shape.is_valid()) { + for (int j = 0; j < edited_collision_shape->get_points().size(); j++) { + current_shape.push_back(edited_collision_shape->get_points()[j] + shape_anchor); + } + } + } else if (edit_mode == EDITMODE_OCCLUSION) { + current_shape.resize(0); + if (edited_occlusion_shape.is_valid()) { + for (int i = 0; i < edited_occlusion_shape->get_polygon().size(); i++) { + current_shape.push_back(edited_occlusion_shape->get_polygon()[i] + shape_anchor); + } + } + } else if (edit_mode == EDITMODE_NAVIGATION) { + current_shape.resize(0); + if (edited_navigation_shape.is_valid()) { + if (edited_navigation_shape->get_polygon_count() > 0) { + PoolVector<Vector2> vertices = edited_navigation_shape->get_vertices(); + for (int i = 0; i < edited_navigation_shape->get_polygon(0).size(); i++) { + current_shape.push_back(vertices[edited_navigation_shape->get_polygon(0)[i]] + shape_anchor); + } + } + } + } +} + Vector2 AutotileEditor::snap_point(const Vector2 &point) { Vector2 p = point; Vector2 coord = edited_shape_coord; @@ -1536,6 +1590,7 @@ Vector2 AutotileEditor::snap_point(const Vector2 &point) { void AutotileEditor::edit(Object *p_node) { tile_set = Ref<TileSet>(Object::cast_to<TileSet>(p_node)); + tile_set->add_change_receptor(this); helper->set_tileset(tile_set); autotile_list->clear(); diff --git a/editor/plugins/tile_set_editor_plugin.h b/editor/plugins/tile_set_editor_plugin.h index 7d9558d4e7..30f6e2b925 100644 --- a/editor/plugins/tile_set_editor_plugin.h +++ b/editor/plugins/tile_set_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TILE_SET_EDITOR_PLUGIN_H #define TILE_SET_EDITOR_PLUGIN_H @@ -86,6 +87,7 @@ class AutotileEditor : public Control { int current_item_index; Sprite *preview; + ScrollContainer *scroll; Control *workspace_container; Control *workspace; Button *tool_editmode[EDITMODE_MAX]; @@ -118,10 +120,12 @@ class AutotileEditor : public Control { AutotileEditorHelper *helper; AutotileEditor(EditorNode *p_editor); + ~AutotileEditor(); protected: static void _bind_methods(); void _notification(int p_what); + virtual void _changed_callback(Object *p_changed, const char *p_prop); private: void _on_autotile_selected(int p_index); @@ -142,6 +146,7 @@ private: void draw_grid_snap(); void draw_polygon_shapes(); void close_shape(const Vector2 &shape_anchor); + void select_coord(const Vector2 &coord); Vector2 snap_point(const Vector2 &point); void edit(Object *p_node); diff --git a/editor/progress_dialog.cpp b/editor/progress_dialog.cpp index 70866df8ec..f735ef97db 100644 --- a/editor/progress_dialog.cpp +++ b/editor/progress_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "progress_dialog.h" #include "editor_scale.h" @@ -199,7 +200,7 @@ bool ProgressDialog::task_step(const String &p_task, const String &p_state, int if (!p_force_redraw) { uint64_t tus = OS::get_singleton()->get_ticks_usec(); - if (tus - last_progress_tick < 50000) //50ms + if (tus - last_progress_tick < 200000) //200ms return cancelled; } diff --git a/editor/progress_dialog.h b/editor/progress_dialog.h index a914606e6d..bf0b3cca1c 100644 --- a/editor/progress_dialog.h +++ b/editor/progress_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROGRESS_DIALOG_H #define PROGRESS_DIALOG_H diff --git a/editor/project_export.cpp b/editor/project_export.cpp index dfcd3da42a..d15a37a19c 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "project_export.h" #include "compressed_translation.h" #include "editor_data.h" diff --git a/editor/project_export.h b/editor/project_export.h index d793e21f45..6c74743769 100644 --- a/editor/project_export.h +++ b/editor/project_export.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROJECT_EXPORT_SETTINGS_H #define PROJECT_EXPORT_SETTINGS_H diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index 233e07c4c7..da283b16dc 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "project_manager.h" #include "editor_initialize_ssl.h" @@ -79,7 +80,7 @@ private: Label *msg; LineEdit *project_path; LineEdit *project_name; - ToolButton *status_btn; + TextureRect *status_rect; FileDialog *fdialog; String zip_path; String zip_title; @@ -89,33 +90,43 @@ private: String created_folder_path; void set_message(const String &p_msg, MessageType p_type = MESSAGE_SUCCESS) { + msg->set_text(p_msg); - if (p_msg == "") { - status_btn->set_icon(get_icon("StatusSuccess", "EditorIcons")); - return; - } - msg->hide(); + Ref<Texture> current_icon = status_rect->get_texture(); + Ref<Texture> new_icon; + switch (p_type) { - case MESSAGE_ERROR: + + case MESSAGE_ERROR: { + msg->add_color_override("font_color", get_color("error_color", "Editor")); - status_btn->set_icon(get_icon("StatusError", "EditorIcons")); - msg->show(); - break; - case MESSAGE_WARNING: + msg->set_modulate(Color(1, 1, 1, 1)); + new_icon = get_icon("StatusError", "EditorIcons"); + + } break; + case MESSAGE_WARNING: { + msg->add_color_override("font_color", get_color("warning_color", "Editor")); - status_btn->set_icon(get_icon("StatusWarning", "EditorIcons")); - break; - case MESSAGE_SUCCESS: - msg->add_color_override("font_color", get_color("success_color", "Editor")); - status_btn->set_icon(get_icon("StatusSuccess", "EditorIcons")); - break; + msg->set_modulate(Color(1, 1, 1, 1)); + new_icon = get_icon("StatusWarning", "EditorIcons"); + + } break; + case MESSAGE_SUCCESS: { + + msg->set_modulate(Color(1, 1, 1, 0)); + new_icon = get_icon("StatusSuccess", "EditorIcons"); + + } break; } + + if (current_icon != new_icon) + status_rect->set_texture(new_icon); + + set_size(Size2(500, 0) * EDSCALE); } String _test_path() { - set_message(" "); - get_ok()->set_disabled(true); DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); String valid_path; if (d->change_dir(project_path->get_text()) == OK) { @@ -127,6 +138,7 @@ private: if (valid_path == "") { set_message(TTR("The path does not exist."), MESSAGE_ERROR); memdelete(d); + get_ok()->set_disabled(true); return ""; } @@ -136,17 +148,18 @@ private: set_message(TTR("Please choose a 'project.godot' file."), MESSAGE_ERROR); memdelete(d); + get_ok()->set_disabled(true); return ""; } - } else if (mode == MODE_NEW) { + } else { // check if the specified folder is empty, even though this is not an error, it is good to check here d->list_dir_begin(); bool is_empty = true; String n = d->get_next(); while (n != String()) { - if (!n.begins_with(".")) { // i dont know if this is enough to guarantee an empty dir + if (!n.begins_with(".")) { // i don't know if this is enough to guarantee an empty dir is_empty = false; break; } @@ -155,19 +168,15 @@ private: d->list_dir_end(); if (!is_empty) { - set_message(TTR("Your project will be created in a non empty folder (you might want to create a new folder)."), MESSAGE_WARNING); - } - } else { - - if (d->file_exists("project.godot")) { - - set_message(TTR("Please choose a folder that does not contain a 'project.godot' file."), MESSAGE_ERROR); + set_message(TTR("Please choose an empty folder."), MESSAGE_ERROR); memdelete(d); + get_ok()->set_disabled(true); return ""; } } + set_message(""); memdelete(d); get_ok()->set_disabled(false); return valid_path; @@ -213,7 +222,6 @@ private: } String sp = p.simplify_path(); project_path->set_text(sp); - set_message(" "); // just so it does not disappear get_ok()->call_deferred("grab_focus"); } @@ -242,21 +250,32 @@ private: void _create_folder() { - if (project_name->get_text() == "" || created_folder_path != "") { + if (project_name->get_text() == "" || created_folder_path != "") return; - } DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); if (d->change_dir(project_path->get_text()) == OK) { + if (!d->dir_exists(project_name->get_text())) { + if (d->make_dir(project_name->get_text()) == OK) { + d->change_dir(project_name->get_text()); project_path->set_text(d->get_current_dir()); created_folder_path = d->get_current_dir(); create_dir->set_disabled(true); + } else { + + dialog_error->set_text(TTR("Couldn't create folder.")); + dialog_error->popup_centered_minsize(); } + } else { + + dialog_error->set_text(TTR("There is already a folder in this path with the specified name.")); + dialog_error->popup_centered_minsize(); } } + memdelete(d); } @@ -337,6 +356,7 @@ private: if (!pkg) { dialog_error->set_text(TTR("Error opening package file, not in zip format.")); + dialog_error->popup_centered_minsize(); return; } @@ -447,16 +467,21 @@ private: } } - void _toggle_message() { - msg->set_visible(!msg->is_visible()); - } - void cancel_pressed() { _remove_created_folder(); project_path->clear(); project_name->clear(); + + if (status_rect->get_texture() == get_icon("StatusError", "EditorIcons")) + msg->show(); + } + + void _notification(int p_what) { + + if (p_what == MainLoop::NOTIFICATION_WM_QUIT_REQUEST) + _remove_created_folder(); } protected: @@ -468,7 +493,6 @@ protected: ClassDB::bind_method("_path_text_changed", &ProjectDialog::_path_text_changed); ClassDB::bind_method("_path_selected", &ProjectDialog::_path_selected); ClassDB::bind_method("_file_selected", &ProjectDialog::_file_selected); - ClassDB::bind_method("_toggle_message", &ProjectDialog::_toggle_message); ADD_SIGNAL(MethodInfo("project_created")); ADD_SIGNAL(MethodInfo("project_renamed")); } @@ -500,11 +524,17 @@ public: set_title(TTR("Rename Project")); get_ok()->set_text(TTR("Rename")); name_container->show(); + status_rect->hide(); + msg->hide(); + get_ok()->set_disabled(false); ProjectSettings *current = memnew(ProjectSettings); if (current->setup(project_path->get_text(), "")) { set_message(TTR("Couldn't get project.godot in the project path."), MESSAGE_ERROR); + status_rect->show(); + msg->show(); + get_ok()->set_disabled(true); } else if (current->has_setting("application/config/name")) { project_name->set_text(current->get("application/config/name")); } @@ -512,7 +542,6 @@ public: project_name->call_deferred("grab_focus"); create_dir->hide(); - status_btn->hide(); } else { @@ -532,7 +561,8 @@ public: browse->set_disabled(false); browse->show(); create_dir->show(); - status_btn->show(); + status_rect->show(); + msg->show(); if (mode == MODE_IMPORT) { set_title(TTR("Import Existing Project")); @@ -558,7 +588,7 @@ public: _test_path(); } - popup_centered(Size2(500, 125) * EDSCALE); + popup_centered(Size2(500, 0) * EDSCALE); } ProjectDialog() { @@ -599,10 +629,10 @@ public: project_path->set_h_size_flags(SIZE_EXPAND_FILL); pphb->add_child(project_path); - // status button - status_btn = memnew(ToolButton); - status_btn->connect("pressed", this, "_toggle_message"); - pphb->add_child(status_btn); + // status icon + status_rect = memnew(TextureRect); + status_rect->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED); + pphb->add_child(status_rect); browse = memnew(Button); browse->set_text(TTR("Browse")); @@ -610,9 +640,7 @@ public: pphb->add_child(browse); msg = memnew(Label); - msg->set_text(TTR("That's a BINGO!")); msg->set_align(Label::ALIGN_CENTER); - msg->hide(); vb->add_child(msg); fdialog = memnew(FileDialog); @@ -652,19 +680,20 @@ struct ProjectItem { void ProjectManager::_notification(int p_what) { - if (p_what == NOTIFICATION_ENTER_TREE) { - - Engine::get_singleton()->set_editor_hint(false); - - } else if (p_what == NOTIFICATION_READY) { + switch (p_what) { + case NOTIFICATION_ENTER_TREE: { - if (scroll_childs->get_child_count() == 0) { - open_templates->popup_centered_minsize(); - } + Engine::get_singleton()->set_editor_hint(false); + } break; + case NOTIFICATION_READY: { - } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { + if (scroll_children->get_child_count() == 0) + open_templates->popup_centered_minsize(); + } break; + case NOTIFICATION_VISIBILITY_CHANGED: { - set_process_unhandled_input(is_visible_in_tree()); + set_process_unhandled_input(is_visible_in_tree()); + } break; } } @@ -680,9 +709,9 @@ void ProjectManager::_panel_draw(Node *p_hb) { } void ProjectManager::_update_project_buttons() { - for (int i = 0; i < scroll_childs->get_child_count(); i++) { + for (int i = 0; i < scroll_children->get_child_count(); i++) { - CanvasItem *item = Object::cast_to<CanvasItem>(scroll_childs->get_child(i)); + CanvasItem *item = Object::cast_to<CanvasItem>(scroll_children->get_child(i)); item->update(); } @@ -704,8 +733,8 @@ void ProjectManager::_panel_input(const Ref<InputEvent> &p_ev, Node *p_hb) { int clicked_id = -1; int last_clicked_id = -1; - for (int i = 0; i < scroll_childs->get_child_count(); i++) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + for (int i = 0; i < scroll_children->get_child_count(); i++) { + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); if (!hb) continue; if (hb->get_meta("name") == clicked) clicked_id = i; if (hb->get_meta("name") == last_clicked) last_clicked_id = i; @@ -714,8 +743,8 @@ void ProjectManager::_panel_input(const Ref<InputEvent> &p_ev, Node *p_hb) { if (last_clicked_id != -1 && clicked_id != -1) { int min = clicked_id < last_clicked_id ? clicked_id : last_clicked_id; int max = clicked_id > last_clicked_id ? clicked_id : last_clicked_id; - for (int i = 0; i < scroll_childs->get_child_count(); ++i) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + for (int i = 0; i < scroll_children->get_child_count(); ++i) { + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); if (!hb) continue; if (i != clicked_id && (i < min || i > max) && !mb->get_control()) { selected_list.erase(hb->get_meta("name")); @@ -769,9 +798,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { } break; case KEY_HOME: { - for (int i = 0; i < scroll_childs->get_child_count(); i++) { + for (int i = 0; i < scroll_children->get_child_count(); i++) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); if (hb) { selected_list.clear(); selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene")); @@ -784,13 +813,13 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { } break; case KEY_END: { - for (int i = scroll_childs->get_child_count() - 1; i >= 0; i--) { + for (int i = scroll_children->get_child_count() - 1; i >= 0; i--) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); if (hb) { selected_list.clear(); selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene")); - scroll->set_v_scroll(scroll_childs->get_size().y); + scroll->set_v_scroll(scroll_children->get_size().y); _update_project_buttons(); break; } @@ -806,9 +835,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { bool found = false; - for (int i = scroll_childs->get_child_count() - 1; i >= 0; i--) { + for (int i = scroll_children->get_child_count() - 1; i >= 0; i--) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); if (!hb) continue; String current = hb->get_meta("name"); @@ -843,9 +872,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) { bool found = selected_list.empty(); - for (int i = 0; i < scroll_childs->get_child_count(); i++) { + for (int i = 0; i < scroll_children->get_child_count(); i++) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); if (!hb) continue; String current = hb->get_meta("name"); @@ -909,8 +938,8 @@ void ProjectManager::_load_recent_projects() { ProjectListFilter::FilterOption filter_option = project_filter->get_filter_option(); String search_term = project_filter->get_search_term(); - while (scroll_childs->get_child_count() > 0) { - memdelete(scroll_childs->get_child(0)); + while (scroll_children->get_child_count() > 0) { + memdelete(scroll_children->get_child(0)); } Map<String, String> selected_list_copy = selected_list; @@ -1039,9 +1068,9 @@ void ProjectManager::_load_recent_projects() { favorite->set_normal_texture(favorite_icon); if (!is_favorite) favorite->set_modulate(Color(1, 1, 1, 0.2)); - favorite->set_v_size_flags(SIZE_EXPAND); favorite->connect("pressed", this, "_favorite_pressed", varray(hb)); favorite_box->add_child(favorite); + favorite_box->set_alignment(BoxContainer::ALIGN_CENTER); hb->add_child(favorite_box); TextureRect *tf = memnew(TextureRect); @@ -1056,6 +1085,7 @@ void ProjectManager::_load_recent_projects() { hb->add_child(vb); Control *ec = memnew(Control); ec->set_custom_minimum_size(Size2(0, 1)); + ec->set_mouse_filter(MOUSE_FILTER_PASS); vb->add_child(ec); Label *title = memnew(Label(project_name)); title->add_font_override("font", gui_base->get_font("title", "EditorFonts")); @@ -1069,7 +1099,7 @@ void ProjectManager::_load_recent_projects() { fpath->add_color_override("font_color", font_color); fpath->set_clip_text(true); - scroll_childs->add_child(hb); + scroll_children->add_child(hb); } for (Map<String, String>::Element *E = selected_list_copy.front(); E; E = E->next()) { @@ -1092,8 +1122,8 @@ void ProjectManager::_on_project_renamed() { void ProjectManager::_on_project_created(const String &dir) { bool has_already = false; - for (int i = 0; i < scroll_childs->get_child_count(); i++) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + for (int i = 0; i < scroll_children->get_child_count(); i++) { + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); Label *fpath = Object::cast_to<Label>(hb->get_node(NodePath("project/path"))); if (fpath->get_text() == dir) { has_already = true; @@ -1110,8 +1140,8 @@ void ProjectManager::_on_project_created(const String &dir) { } void ProjectManager::_update_scroll_position(const String &dir) { - for (int i = 0; i < scroll_childs->get_child_count(); i++) { - HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i)); + for (int i = 0; i < scroll_children->get_child_count(); i++) { + HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i)); Label *fpath = Object::cast_to<Label>(hb->get_node(NodePath("project/path"))); if (fpath->get_text() == dir) { last_clicked = hb->get_meta("name"); @@ -1214,7 +1244,6 @@ void ProjectManager::_run_project_confirm() { Error err = OS::get_singleton()->execute(exec, args, false, &pid); ERR_FAIL_COND(err); } - //get_scene()->quit(); do not quit } void ProjectManager::_run_project() { @@ -1552,12 +1581,9 @@ ProjectManager::ProjectManager() { VBoxContainer *tree_vb = memnew(VBoxContainer); tree_hb->add_child(tree_vb); - scroll_childs = memnew(VBoxContainer); - scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL); - scroll->add_child(scroll_childs); - - //HBoxContainer *hb = memnew( HBoxContainer ); - //vb->add_child(hb); + scroll_children = memnew(VBoxContainer); + scroll_children->set_h_size_flags(SIZE_EXPAND_FILL); + scroll->add_child(scroll_children); Button *open = memnew(Button); open->set_text(TTR("Edit")); @@ -1663,7 +1689,7 @@ ProjectManager::ProjectManager() { cancel->connect("pressed", this, "_exit_dialog"); vb->add_child(cc); - // + ////////////////////////////////////////////////////////////// language_restart_ask = memnew(ConfirmationDialog); language_restart_ask->get_ok()->set_text(TTR("Restart Now")); @@ -1772,12 +1798,9 @@ void ProjectListFilter::_filter_option_selected(int p_idx) { } void ProjectListFilter::_notification(int p_what) { - switch (p_what) { - case NOTIFICATION_ENTER_TREE: { - clear_search_button->set_icon(get_icon("Close", "EditorIcons")); - } break; - } + if (p_what == NOTIFICATION_ENTER_TREE) + clear_search_button->set_icon(get_icon("Close", "EditorIcons")); } void ProjectListFilter::_bind_methods() { diff --git a/editor/project_manager.h b/editor/project_manager.h index 7fc938f660..23ffa2f857 100644 --- a/editor/project_manager.h +++ b/editor/project_manager.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROJECT_MANAGER_H #define PROJECT_MANAGER_H @@ -63,7 +64,7 @@ class ProjectManager : public Control { AcceptDialog *dialog_error; ProjectDialog *npdialog; ScrollContainer *scroll; - VBoxContainer *scroll_childs; + VBoxContainer *scroll_children; Map<String, String> selected_list; // name -> main_scene String last_clicked; bool importing; diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 06befe8f3c..058f517ae9 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "project_settings_editor.h" #include "core/global_constants.h" @@ -749,7 +750,16 @@ void ProjectSettingsEditor::_item_add() { String catname = category->get_text().strip_edges(); String propname = property->get_text().strip_edges(); - String name = catname != "" ? catname + "/" + propname : propname; + + if (propname.empty()) { + return; + } + + if (catname.empty()) { + catname = "global"; + } + + String name = catname + "/" + propname; undo_redo->create_action(TTR("Add Global Property")); diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h index be5a51dd45..d6c2c0f5a8 100644 --- a/editor/project_settings_editor.h +++ b/editor/project_settings_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROJECT_SETTINGS_H #define PROJECT_SETTINGS_H diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp index 1dcc5a3231..87906c5a93 100644 --- a/editor/property_editor.cpp +++ b/editor/property_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "property_editor.h" #include "core/class_db.h" @@ -664,6 +665,8 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant:: } else if (hint == PROPERTY_HINT_PROPERTY_OF_INSTANCE) { + MAKE_PROPSELECT + Object *instance = ObjectDB::get_instance(hint_text.to_int64()); if (instance) property_select->select_property_from_instance(instance, v); @@ -4135,6 +4138,7 @@ void PropertyEditor::_bind_methods() { ClassDB::bind_method("_resource_preview_done", &PropertyEditor::_resource_preview_done); ClassDB::bind_method("refresh", &PropertyEditor::refresh); ClassDB::bind_method("_draw_transparency", &PropertyEditor::_draw_transparency); + ClassDB::bind_method("edit", &PropertyEditor::edit); ClassDB::bind_method(D_METHOD("get_drag_data_fw"), &PropertyEditor::get_drag_data_fw); ClassDB::bind_method(D_METHOD("can_drop_data_fw"), &PropertyEditor::can_drop_data_fw); diff --git a/editor/property_editor.h b/editor/property_editor.h index bd088ad0f6..017a190adb 100644 --- a/editor/property_editor.h +++ b/editor/property_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROPERTY_EDITOR_H #define PROPERTY_EDITOR_H diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp index eac5e2efd7..3e95064ead 100644 --- a/editor/property_selector.cpp +++ b/editor/property_selector.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "property_selector.h" #include "editor_scale.h" diff --git a/editor/property_selector.h b/editor/property_selector.h index 1f6903de20..d9b1aee422 100644 --- a/editor/property_selector.h +++ b/editor/property_selector.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROPERTYSELECTOR_H #define PROPERTYSELECTOR_H diff --git a/editor/pvrtc_compress.cpp b/editor/pvrtc_compress.cpp index aace3e895b..57a2b0d97f 100644 --- a/editor/pvrtc_compress.cpp +++ b/editor/pvrtc_compress.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "pvrtc_compress.h" #include "editor_settings.h" diff --git a/editor/pvrtc_compress.h b/editor/pvrtc_compress.h index 2d626aa9ef..cdd2f0d242 100644 --- a/editor/pvrtc_compress.h +++ b/editor/pvrtc_compress.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PVRTC_COMPRESS_H #define PVRTC_COMPRESS_H diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index c2a194ebaf..26dd931321 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "quick_open.h" #include "os/keyboard.h" diff --git a/editor/quick_open.h b/editor/quick_open.h index 52f9c08ae6..ecc6af0c53 100644 --- a/editor/quick_open.h +++ b/editor/quick_open.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef EDITOR_QUICK_OPEN_H #define EDITOR_QUICK_OPEN_H diff --git a/editor/register_exporters.h b/editor/register_exporters.h index 9645ffddea..dc0a53a686 100644 --- a/editor/register_exporters.h +++ b/editor/register_exporters.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_EXPORTERS_H #define REGISTER_EXPORTERS_H diff --git a/editor/reparent_dialog.cpp b/editor/reparent_dialog.cpp index 7aa8d849e6..da8bfdbbd2 100644 --- a/editor/reparent_dialog.cpp +++ b/editor/reparent_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "reparent_dialog.h" #include "print_string.h" diff --git a/editor/reparent_dialog.h b/editor/reparent_dialog.h index 2f185b3d88..301dbe8bb5 100644 --- a/editor/reparent_dialog.h +++ b/editor/reparent_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REPARENT_DIALOG_H #define REPARENT_DIALOG_H diff --git a/editor/run_settings_dialog.cpp b/editor/run_settings_dialog.cpp index dede4c6dc8..ea53de7e8c 100644 --- a/editor/run_settings_dialog.cpp +++ b/editor/run_settings_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "run_settings_dialog.h" void RunSettingsDialog::popup_run_settings() { diff --git a/editor/run_settings_dialog.h b/editor/run_settings_dialog.h index f9c09b06c2..9fec71a468 100644 --- a/editor/run_settings_dialog.h +++ b/editor/run_settings_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RUN_SETTINGS_DIALOG_H #define RUN_SETTINGS_DIALOG_H diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 7e8a6fcb6d..41ee5ab286 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scene_tree_dock.h" #include "core/io/resource_saver.h" @@ -236,13 +237,20 @@ void SceneTreeDock::_replace_with_branch_scene(const String &p_file, Node *base) Node *parent = base->get_parent(); int pos = base->get_index(); - memdelete(base); + parent->remove_child(base); parent->add_child(instanced_scene); parent->move_child(instanced_scene, pos); instanced_scene->set_owner(edited_scene); editor_selection->clear(); editor_selection->add_node(instanced_scene); scene_tree->set_selected(instanced_scene); + + // Delete the node as late as possible because before another one is selected + // an editor plugin could be referencing it to do something with it before + // switching to another (or to none); and since some steps of changing the + // editor state are deferred, the safest thing is to do this is as the last + // step of this function and also by enqueing instead of memdelete()-ing it here + base->queue_delete(); } bool SceneTreeDock::_cyclical_dependency_exists(const String &p_target_scene_path, Node *p_desired_node) { @@ -307,7 +315,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } break; case TOOL_REPLACE: { - create_dialog->popup_create(false); + create_dialog->popup_create(false, true); } break; case TOOL_ATTACH_SCRIPT: { @@ -342,8 +350,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { if (existing.is_valid()) { const RefPtr empty; selected->set_script(empty); - button_create_script->show(); - button_clear_script->hide(); + _update_script_button(); } } break; @@ -417,7 +424,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { if (editor_selection->is_selected(edited_scene)) { current_option = -1; - //accept->get_cancel()->hide(); accept->get_ok()->set_text(TTR("I see..")); accept->set_text(TTR("This operation can't be done on the tree root.")); accept->popup_centered_minsize(); @@ -1204,8 +1210,7 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) { return; selected->set_script(p_script.get_ref_ptr()); editor->push_item(p_script.operator->()); - button_create_script->hide(); - button_clear_script->show(); + _update_script_button(); } void SceneTreeDock::_delete_confirm() { @@ -1285,17 +1290,15 @@ void SceneTreeDock::_delete_confirm() { editor->get_viewport_control()->update(); editor->push_item(NULL); -} - -void SceneTreeDock::_selection_changed() { - int selection_size = EditorNode::get_singleton()->get_editor_selection()->get_selection().size(); - if (selection_size > 1) { - //automatically turn on multi-edit - _tool_selected(TOOL_MULTI_EDIT); - } + // Fixes the EditorHistory from still offering deleted notes + EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history(); + editor_history->cleanup_history(); + EditorNode::get_singleton()->call("_prepare_history"); +} - if (selection_size == 1) { +void SceneTreeDock::_update_script_button() { + if (EditorNode::get_singleton()->get_editor_selection()->get_selection().size() == 1) { if (EditorNode::get_singleton()->get_editor_selection()->get_selection().front()->key()->get_script().is_null()) { button_create_script->show(); button_clear_script->hide(); @@ -1309,6 +1312,16 @@ void SceneTreeDock::_selection_changed() { } } +void SceneTreeDock::_selection_changed() { + + int selection_size = EditorNode::get_singleton()->get_editor_selection()->get_selection().size(); + if (selection_size > 1) { + //automatically turn on multi-edit + _tool_selected(TOOL_MULTI_EDIT); + } + _update_script_button(); +} + void SceneTreeDock::_create() { if (current_option == TOOL_NEW) { @@ -1643,6 +1656,7 @@ void SceneTreeDock::_script_dropped(String p_file, NodePath p_to) { Node *n = get_node(p_to); if (n) { n->set_script(scr.get_ref_ptr()); + _update_script_button(); } } @@ -2052,6 +2066,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel menu->connect("id_pressed", this, "_tool_selected"); menu_subresources = memnew(PopupMenu); menu_subresources->set_name("Sub-Resources"); + menu_subresources->connect("id_pressed", this, "_tool_selected"); menu->add_child(menu_subresources); first_enter = true; restore_script_editor_on_drag = false; diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h index 0a5b20ed9c..0a68aa7dc2 100644 --- a/editor/scene_tree_dock.h +++ b/editor/scene_tree_dock.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENE_TREE_DOCK_H #define SCENE_TREE_DOCK_H @@ -159,6 +160,7 @@ class SceneTreeDock : public VBoxContainer { bool _validate_no_foreign(); void _selection_changed(); + void _update_script_button(); void _fill_path_renames(Vector<StringName> base_path, Vector<StringName> new_base_path, Node *p_node, List<Pair<NodePath, NodePath> > *p_renames); diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index 957f50a052..fd21b83605 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scene_tree_editor.h" #include "editor/plugins/canvas_item_editor_plugin.h" diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h index 542b32d4cd..45194bb81d 100644 --- a/editor/scene_tree_editor.h +++ b/editor/scene_tree_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENE_TREE_EDITOR_H #define SCENE_TREE_EDITOR_H diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp index ad6ea2180f..cee356b930 100644 --- a/editor/script_create_dialog.cpp +++ b/editor/script_create_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_create_dialog.h" #include "editor/editor_node.h" @@ -232,7 +233,7 @@ void ScriptCreateDialog::_lang_changed(int l) { String path = file_path->get_text(); String extension = ""; if (path != "") { - if (path.find(".") >= 0) { + if (path.find(".") != -1) { extension = path.get_extension(); } @@ -359,16 +360,14 @@ void ScriptCreateDialog::_path_changed(const String &p_path) { return; } - if (p.find("/") || p.find("\\")) { - DirAccess *d = DirAccess::create(DirAccess::ACCESS_RESOURCES); - if (d->change_dir(p.get_base_dir()) != OK) { - _msg_path_valid(false, TTR("Invalid base path")); - memdelete(d); - _update_dialog(); - return; - } + DirAccess *d = DirAccess::create(DirAccess::ACCESS_RESOURCES); + if (d->change_dir(p.get_base_dir()) != OK) { + _msg_path_valid(false, TTR("Invalid base path")); memdelete(d); + _update_dialog(); + return; } + memdelete(d); /* Does file already exist */ diff --git a/editor/script_create_dialog.h b/editor/script_create_dialog.h index 882e4796f9..b5afe2e38e 100644 --- a/editor/script_create_dialog.h +++ b/editor/script_create_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_CREATE_DIALOG_H #define SCRIPT_CREATE_DIALOG_H diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index 4fe7bef9f7..d0527a13ea 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "script_editor_debugger.h" #include "editor_node.h" @@ -611,7 +612,9 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da if (!EditorNode::get_log()->is_visible()) { if (EditorNode::get_singleton()->are_bottom_panels_hidden()) { - EditorNode::get_singleton()->make_bottom_panel_item_visible(EditorNode::get_log()); + if (EDITOR_GET("run/output/always_open_output_on_play")) { + EditorNode::get_singleton()->make_bottom_panel_item_visible(EditorNode::get_log()); + } } } EditorNode::get_log()->add_message(t); @@ -1052,6 +1055,8 @@ void ScriptEditorDebugger::_notification(int p_what) { break; }; + const uint64_t until = OS::get_singleton()->get_ticks_msec() + 20; + while (ppeer->get_available_packet_count() > 0) { if (pending_in_queue) { @@ -1116,6 +1121,9 @@ void ScriptEditorDebugger::_notification(int p_what) { break; } } + + if (OS::get_singleton()->get_ticks_msec() > until) + break; } } break; @@ -1165,6 +1173,7 @@ void ScriptEditorDebugger::start() { } set_process(true); + breaked = false; } void ScriptEditorDebugger::pause() { @@ -1176,6 +1185,7 @@ void ScriptEditorDebugger::unpause() { void ScriptEditorDebugger::stop() { set_process(false); + breaked = false; server->stop(); @@ -1608,30 +1618,33 @@ void ScriptEditorDebugger::_error_selected(int p_idx) { error_stack->clear(); Array st = error_list->get_item_metadata(p_idx); - for (int i = 0; i < st.size(); i += 2) { + for (int i = 0; i < st.size(); i += 3) { String script = st[i]; - int line = st[i + 1]; + String func = st[i + 1]; + int line = st[i + 2]; Array md; md.push_back(st[i]); md.push_back(st[i + 1]); + md.push_back(st[i + 2]); - String str = script.get_file() + ":" + itos(line); + String str = func + " in " + script.get_file() + ":line " + itos(line); error_stack->add_item(str); error_stack->set_item_metadata(error_stack->get_item_count() - 1, md); - error_stack->set_item_tooltip(error_stack->get_item_count() - 1, TTR("File:") + " " + String(st[i]) + "\n" + TTR("Line:") + " " + itos(line)); + error_stack->set_item_tooltip(error_stack->get_item_count() - 1, + TTR("File:") + " " + script + "\n" + TTR("Function:") + " " + func + "\n" + TTR("Line:") + " " + itos(line)); } } void ScriptEditorDebugger::_error_stack_selected(int p_idx) { Array arr = error_stack->get_item_metadata(p_idx); - if (arr.size() != 2) + if (arr.size() != 3) return; Ref<Script> s = ResourceLoader::load(arr[0]); - emit_signal("goto_script_line", s, int(arr[1]) - 1); + emit_signal("goto_script_line", s, int(arr[2]) - 1); } void ScriptEditorDebugger::set_hide_on_stop(bool p_hide) { @@ -1686,6 +1699,45 @@ void ScriptEditorDebugger::_clear_remote_objects() { remote_objects.clear(); } +void ScriptEditorDebugger::_clear_errors_list() { + + error_list->clear(); + error_count = 0; + _notification(NOTIFICATION_PROCESS); +} + +// Right click on specific file(s) or folder(s). +void ScriptEditorDebugger::_error_list_item_rmb_selected(int p_item, const Vector2 &p_pos) { + + item_menu->clear(); + item_menu->set_size(Size2(1, 1)); + + // Allow specific actions only on one item. + bool single_item_selected = error_list->get_selected_items().size() == 1; + + if (single_item_selected) { + item_menu->add_icon_item(get_icon("CopyNodePath", "EditorIcons"), TTR("Copy Error"), ITEM_MENU_COPY_ERROR); + } + + if (item_menu->get_item_count() > 0) { + item_menu->set_position(error_list->get_global_position() + p_pos); + item_menu->popup(); + } +} + +void ScriptEditorDebugger::_item_menu_id_pressed(int p_option) { + + switch (p_option) { + + case ITEM_MENU_COPY_ERROR: { + String title = error_list->get_item_text(error_list->get_current()); + String desc = error_list->get_item_tooltip(error_list->get_current()); + + OS::get_singleton()->set_clipboard(title + "\n----------\n" + desc); + } break; + } +} + void ScriptEditorDebugger::_bind_methods() { ClassDB::bind_method(D_METHOD("_stack_dump_frame_selected"), &ScriptEditorDebugger::_stack_dump_frame_selected); @@ -1705,6 +1757,10 @@ void ScriptEditorDebugger::_bind_methods() { ClassDB::bind_method(D_METHOD("_error_stack_selected"), &ScriptEditorDebugger::_error_stack_selected); ClassDB::bind_method(D_METHOD("_profiler_activate"), &ScriptEditorDebugger::_profiler_activate); ClassDB::bind_method(D_METHOD("_profiler_seeked"), &ScriptEditorDebugger::_profiler_seeked); + ClassDB::bind_method(D_METHOD("_clear_errors_list"), &ScriptEditorDebugger::_clear_errors_list); + + ClassDB::bind_method(D_METHOD("_error_list_item_rmb_selected"), &ScriptEditorDebugger::_error_list_item_rmb_selected); + ClassDB::bind_method(D_METHOD("_item_menu_id_pressed"), &ScriptEditorDebugger::_item_menu_id_pressed); ClassDB::bind_method(D_METHOD("_paused"), &ScriptEditorDebugger::_paused); @@ -1829,9 +1885,31 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) { error_split = memnew(HSplitContainer); VBoxContainer *errvb = memnew(VBoxContainer); + HBoxContainer *errhb = memnew(HBoxContainer); errvb->set_h_size_flags(SIZE_EXPAND_FILL); + Label *velb = memnew(Label(TTR("Errors:"))); + velb->set_h_size_flags(SIZE_EXPAND_FILL); + errhb->add_child(velb); + + clearbutton = memnew(Button); + clearbutton->set_text(TTR("Clear")); + clearbutton->connect("pressed", this, "_clear_errors_list"); + errhb->add_child(clearbutton); + errvb->add_child(errhb); + error_list = memnew(ItemList); - errvb->add_margin_child(TTR("Errors:"), error_list, true); + error_list->set_v_size_flags(SIZE_EXPAND_FILL); + error_list->set_h_size_flags(SIZE_EXPAND_FILL); + error_list->connect("item_rmb_selected", this, "_error_list_item_rmb_selected"); + error_list->set_allow_rmb_select(true); + error_list->set_autoscroll_to_bottom(true); + + item_menu = memnew(PopupMenu); + item_menu->connect("id_pressed", this, "_item_menu_id_pressed"); + error_list->add_child(item_menu); + + errvb->add_child(error_list); + error_split->add_child(errvb); errvb = memnew(VBoxContainer); diff --git a/editor/script_editor_debugger.h b/editor/script_editor_debugger.h index e380a56b18..e86add940a 100644 --- a/editor/script_editor_debugger.h +++ b/editor/script_editor_debugger.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCRIPT_EDITOR_DEBUGGER_H #define SCRIPT_EDITOR_DEBUGGER_H @@ -62,6 +63,10 @@ class ScriptEditorDebugger : public Control { MESSAGE_SUCCESS, }; + enum ItemMenu { + ITEM_MENU_COPY_ERROR, + }; + AcceptDialog *msgdialog; Button *debugger_button; @@ -85,6 +90,8 @@ class ScriptEditorDebugger : public Control { ItemList *error_list; ItemList *error_stack; Tree *inspect_scene_tree; + Button *clearbutton; + PopupMenu *item_menu; int error_count; int last_error_count; @@ -175,6 +182,10 @@ class ScriptEditorDebugger : public Control { void _set_remote_object(ObjectID p_id, ScriptEditorDebuggerInspectedObject *p_obj); void _clear_remote_objects(); + void _clear_errors_list(); + + void _error_list_item_rmb_selected(int p_item, const Vector2 &p_pos); + void _item_menu_id_pressed(int p_option); protected: void _notification(int p_what); diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 1919504b5c..d75ef5df8a 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "settings_config_dialog.h" #include "editor_file_system.h" diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h index 6925de0777..6676e870d0 100644 --- a/editor/settings_config_dialog.h +++ b/editor/settings_config_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SETTINGS_CONFIG_DIALOG_H #define SETTINGS_CONFIG_DIALOG_H diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp index b06d25d8ee..72c0f050d2 100644 --- a/editor/spatial_editor_gizmos.cpp +++ b/editor/spatial_editor_gizmos.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "spatial_editor_gizmos.h" #include "geometry.h" diff --git a/editor/spatial_editor_gizmos.h b/editor/spatial_editor_gizmos.h index 240d2145c1..cb483ed653 100644 --- a/editor/spatial_editor_gizmos.h +++ b/editor/spatial_editor_gizmos.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPATIAL_EDITOR_GIZMOS_H #define SPATIAL_EDITOR_GIZMOS_H diff --git a/editor/translations/af.po b/editor/translations/af.po index cfe5cdc24e..9d4ce1e29d 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -198,8 +198,7 @@ msgstr "Skep %d NUWE bane en voeg sleutels by?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Skep" @@ -379,14 +378,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Het %d verskynsel(s) vervang." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Vervang" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Vervang Alles" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Pas Letterkas" @@ -395,48 +386,16 @@ msgid "Whole Words" msgstr "Hele Woorde" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Slegs Seleksie" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Soek" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Vind" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Volgende" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Nie gevind nie!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Vervang Met" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Letterkas Sensitief" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Terugwaarts" +msgid "Replace" +msgstr "Vervang" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Por Op Vervang" +msgid "Replace All" +msgstr "Vervang Alles" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Spring Oor" +msgid "Selection Only" +msgstr "Slegs Seleksie" #: editor/code_editor.cpp msgid "Zoom In" @@ -557,6 +516,16 @@ msgstr "Seine" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Verander Skikking Waarde-Soort" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Skep Nuwe" @@ -669,7 +638,8 @@ msgstr "" "Verwyder die lêers in elk geval? (geen ontdoen)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Kan nie verwyder nie:\n" #: editor/dependency_editor.cpp @@ -752,8 +722,9 @@ msgstr "Projek Stigters" msgid "Lead Developer" msgstr "Hoof Ontwikkelaar" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Projek Bestuurder" #: editor/editor_about.cpp @@ -842,7 +813,7 @@ msgid "Success!" msgstr "Sukses!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installeer" @@ -1153,7 +1124,8 @@ msgid "Packing" msgstr "Verpak" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "Sjabloon lêer nie gevind nie:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1366,6 +1338,20 @@ msgid "Description" msgstr "Beskrywing" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Daar is tans geen beskrywing vir hierdie metode nie. Help ons asseblief deur " +"[color=$color][url=$url]een by te dra[/url][/color]!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Eienskappe" @@ -1401,6 +1387,10 @@ msgstr "" msgid "Search Text" msgstr "Deursoek Teks" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Vind" + #: editor/editor_log.cpp msgid "Output:" msgstr "Afvoer:" @@ -1412,6 +1402,11 @@ msgstr "Afvoer:" msgid "Clear" msgstr "Vee uit" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Afvoer:" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Fout tydens storing van hulpbron!" @@ -1420,8 +1415,8 @@ msgstr "Fout tydens storing van hulpbron!" msgid "Save Resource As.." msgstr "Stoor Hulpbron As..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Ek sien..." @@ -1475,7 +1470,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2028,6 +2024,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Soek" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2407,7 +2410,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2562,9 +2565,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2572,21 +2573,23 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "Fout terwyl laai:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Fout terwyl laai:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "" +#, fuzzy +msgid "Unable to update dependencies:" +msgstr "Toneel kon nie laai nie as gevolg van vermiste afhanklikhede:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -3227,6 +3230,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animasie Zoem." + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3392,6 +3400,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3692,19 +3701,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4075,7 +4087,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4464,14 +4476,17 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Hulpbron" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4547,6 +4562,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4978,83 +4997,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5069,6 +5088,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5142,15 +5165,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5425,10 +5444,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5454,14 +5481,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5599,6 +5629,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5699,6 +5733,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Skep Vouer" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5806,9 +5865,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5820,6 +5877,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Kon nie vouer skep nie." + +#: 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 "" @@ -5860,14 +5926,28 @@ 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 +#, fuzzy +msgid "Create & Edit" +msgstr "Skep" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Installeer" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5884,10 +5964,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5933,6 +6009,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Projek Bestuurder" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6059,11 +6139,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6441,10 +6516,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6529,8 +6600,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "Hulpbron" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6820,7 +6892,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6829,6 +6901,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7175,10 +7251,52 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Kon nie vouer skep nie." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Skep Intekening" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7524,23 +7642,30 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "" +#, fuzzy +msgid "Could not write file:" +msgstr "Kon nie vouer skep nie." #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +#, fuzzy +msgid "Could not open template for export:" +msgstr "Kon nie vouer skep nie." #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +#, fuzzy +msgid "Could not read boot splash image file:" +msgstr "Kon nie vouer skep nie." + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7555,6 +7680,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7623,7 +7755,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7682,6 +7814,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7727,8 +7866,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7793,8 +7932,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7821,12 +7960,29 @@ msgstr "" msgid "Invalid font size." msgstr "" +#~ msgid "Next" +#~ msgstr "Volgende" + +#~ msgid "Not found!" +#~ msgstr "Nie gevind nie!" + +#~ msgid "Replace By" +#~ msgstr "Vervang Met" + +#~ msgid "Case Sensitive" +#~ msgstr "Letterkas Sensitief" + +#~ msgid "Backwards" +#~ msgstr "Terugwaarts" + +#~ msgid "Prompt On Replace" +#~ msgstr "Por Op Vervang" + +#~ msgid "Skip" +#~ msgstr "Spring Oor" + #~ msgid "Move Add Key" #~ msgstr "Skuif Byvoeg Sleutel" -#, fuzzy -#~ msgid "Create Subscription" -#~ msgstr "Skep Intekening" - #~ msgid "List:" #~ msgstr "Lys:" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index 908f49ab94..deb49f0619 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -8,9 +8,10 @@ # Jamal Alyafei <jamal.qassim@gmail.com>, 2017. # john lennon <khoanantonio@outlook.com>, 2017. # Mohammmad Khashashneh <mohammad.rasmi@gmail.com>, 2016. +# Mr ChaosXD <mrchaosxd3@gmail.com>, 2018. # Mrwan Ashraf <mrwan.ashraf94@gmail.com>, 2017. # noureldin sharaf <sharaf.noureldin@yahoo.com>, 2017. -# omar anwar aglan <omar.aglan91@yahoo.com>, 2017. +# omar anwar aglan <omar.aglan91@yahoo.com>, 2017-2018. # OWs Tetra <owstetra@gmail.com>, 2017. # Rex_sa <asd1234567890m@gmail.com>, 2017. # Wajdi Feki <wajdi.feki@gmail.com>, 2017. @@ -18,8 +19,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-20 15:42+0000\n" -"Last-Translator: Rex_sa <asd1234567890m@gmail.com>\n" +"PO-Revision-Date: 2018-01-24 11:45+0000\n" +"Last-Translator: anonymous <>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -27,7 +28,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -38,9 +39,8 @@ msgid "All Selection" msgstr "ÙƒÙÙ„ Ø§Ù„Ù…ÙØØ¯Ø¯" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "قيمة تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "تغيير وقت الإطار الرئيسي Ù„Ù„ØØ±ÙƒØ©" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -51,9 +51,8 @@ msgid "Anim Change Transform" msgstr "تØÙˆÙŠÙ„ تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "قيمة تغيير Ø§Ù„ØªØØ±ÙŠÙƒ" +msgstr "تغيير قيمة الإطار الأساسي Ù„Ù„ØØ±ÙƒØ©" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -209,8 +208,7 @@ msgstr "أنشئ %d مسارات جديدة Ùˆ أدخل Ù…ÙØ§ØªÙŠØØŸ" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "أنشئ" @@ -387,14 +385,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Ø¥Ø³ØªØ¨ÙØ¯Ù„ %d ØØ§Ø¯Ø«Ø©(ØÙˆØ§Ø¯Ø«)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "إستبدال" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "إستبدال الكل" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "قضية تشابه" @@ -403,48 +393,16 @@ msgid "Whole Words" msgstr "كل الكلمات" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Ø§Ù„Ù…ØØ¯Ø¯ Ùقط" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Ø¨ØØ«" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "جد" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "التالي" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "لم يوجد!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "إستبدلت بـ" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ØØ³Ø§Ø³Ø© Ù„ØØ§Ù„Ø© Ø§Ù„Ø£ØØ±Ù" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "إلي الخلÙ" +msgid "Replace" +msgstr "إستبدال" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "تأكيد عند الإستبدال" +msgid "Replace All" +msgstr "إستبدال الكل" #: editor/code_editor.cpp -msgid "Skip" -msgstr "تخطي" +msgid "Selection Only" +msgstr "Ø§Ù„Ù…ØØ¯Ø¯ Ùقط" #: editor/code_editor.cpp msgid "Zoom In" @@ -546,9 +504,8 @@ msgid "Connecting Signal:" msgstr "يوصل الإشارة:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "وصل '%s' إلي '%s'" +msgstr "قطع إتصال'%s' من '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -564,9 +521,17 @@ msgid "Signals" msgstr "الإشارات" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "غير نوع %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "تغير" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "إنشاء جديد" +msgstr "إنشاء %s جديد" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -676,8 +641,8 @@ msgstr "" "Ø¥Ù…Ø³Ø Ø¹Ù„ÙŠ أية ØØ§Ù„ØŸ (لا رجعة)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "لا يمكن المسØ:\n" +msgid "Cannot remove:" +msgstr "لا يمكن المسØ:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -759,9 +724,9 @@ msgstr "مؤسسون المشروع" msgid "Lead Developer" msgstr "قائد المطوريين" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "مدير المشروع" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "مدير المشروع " #: editor/editor_about.cpp msgid "Developers" @@ -849,7 +814,7 @@ msgid "Success!" msgstr "تم بنجاØ!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "تثبيت" @@ -870,9 +835,8 @@ msgid "Rename Audio Bus" msgstr "إعادة تسمية بيوس الصوت" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "تبديل بيوس الصوت إلي ÙØ±Ø¯ÙŠ" +msgstr "تغيير ØØ¬Ù… صوت البيوس" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -937,7 +901,7 @@ msgstr "Ø¥Ù…Ø³Ø Ø§Ù„ØªØ£Ø«ÙŠØ±" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "صوت" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1113,11 +1077,11 @@ msgstr "ÙŠÙØØ¯Ø« المشهد..." #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[ÙØ§Ø±Øº]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[غير Ù…ØÙوظ]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1157,8 +1121,8 @@ msgid "Packing" msgstr "ÙŠÙŽØØ²Ù…\"ينتج المل٠المضغوط\"" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "مل٠النموذج غير موجود:\n" +msgid "Template file not found:" +msgstr "مل٠النموذج غير موجود:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1186,7 +1150,7 @@ msgstr "ØªØØ¯ÙŠØ«" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" -msgstr "جميع الأنواع المعتمدة" +msgstr "جميع الأنواع المعتمدة\"Ø§Ù„Ù…Ø¹Ø±ÙˆÙØ©\"" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Files (*)" @@ -1369,6 +1333,20 @@ msgid "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 "" +"ليس هناك دروس تعليمية ÙÙŠ هذا Ø§Ù„ÙØµÙ„ØŒ يمكنك [color=$color][url=$url] المساهمة " +"ÙÙŠ Ø¥ØØ¯Ø§Ù‡Ø§ [/url][/color] أو [color=$color][url=$url2]أطلب Ø£ØØ¯Ø§Ù‡Ø§ [/url][/" +"color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "خصائص" @@ -1404,6 +1382,10 @@ msgstr "" msgid "Search Text" msgstr "Ø¥Ø¨ØØ« عن كتابة" +#: editor/editor_help.cpp +msgid "Find" +msgstr "جد" + #: editor/editor_log.cpp msgid "Output:" msgstr "الخرج:" @@ -1415,6 +1397,10 @@ msgstr "الخرج:" msgid "Clear" msgstr "خالي" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "أخلاء الخرج" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "خطأ ÙÙŠ ØÙظ المورد!" @@ -1423,8 +1409,8 @@ msgstr "خطأ ÙÙŠ ØÙظ المورد!" msgid "Save Resource As.." msgstr "ØÙظ المورد باسم..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "أنا أري.." @@ -1478,7 +1464,8 @@ msgstr "هذه العملية لا يمكنها الإكتمال من غير Ø¬Ø #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "لا يمكن ØÙظ المشهد. على Ø§Ù„Ø£Ø±Ø¬Ø Ù„Ø§ يمكن Ø¥Ø³ØªÙŠÙØ§Ø¡ التبعيات (مجسّدات)." #: editor/editor_node.cpp @@ -1855,7 +1842,7 @@ msgstr "تمكين/إيقا٠الوضع الخالي من الإلهاء." #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "أض٠مشهد جديدة." +msgstr "أض٠مشهد جديد" #: editor/editor_node.cpp msgid "Scene" @@ -2080,6 +2067,13 @@ msgstr "مساعدة" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Ø¨ØØ«" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "مستندات الإنترنت" @@ -2351,14 +2345,12 @@ msgid "Frame #:" msgstr "اطار #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "الوقت:" +msgstr "الوقت" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "نداء" +msgstr "ندائات" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2463,8 +2455,8 @@ msgid "No version.txt found inside templates." msgstr "لا مل٠version.txt تم إيجاده داخل القالب." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:\n" +msgid "Error creating path for templates:" +msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2499,7 +2491,6 @@ msgstr "لا يوجد إستجابة." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "ÙØ´Ù„ الطلب." @@ -2547,7 +2538,6 @@ msgid "Connecting.." msgstr "جاري الإتصال..." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "لا يمكن الإتصال" @@ -2622,33 +2612,28 @@ msgid "View items as a list" msgstr "أظهر العناصر كقائمة" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." -msgstr "" -"\n" -"Ø§Ù„ØØ§Ù„Ø©: إستيراد Ø§Ù„Ù…Ù„Ù ÙØ´Ù„. من ÙØ¶Ù„Ùƒ Ø£ØµÙ„Ø Ø§Ù„Ù…Ù„Ù Ùˆ أعد إستيراده يدوياً." +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.\n" -msgstr "لا يمكن ØªØØ±ÙŠÙƒ مجلد إلي Ù†ÙØ³Ù‡.\n" +msgid "Cannot move a folder into itself." +msgstr "لا يمكن ØªØØ±ÙŠÙƒ مجلد إلي Ù†ÙØ³Ù‡." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "خطأ ÙÙŠ ØªØØ±ÙŠÙƒ:\n" +msgid "Error moving:" +msgstr "خطأ ÙÙŠ ØªØØ±ÙŠÙƒ:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "خطآ ÙÙŠ التØÙ…يل:" +msgid "Error duplicating:" +msgstr "خطآ ÙÙŠ التكرار:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "غير قادر علي ØªØØ¯ÙŠØ« التبعيات:\n" +msgid "Unable to update dependencies:" +msgstr "غير قادر علي ØªØØ¯ÙŠØ« التبعيات:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2679,14 +2664,12 @@ msgid "Renaming folder:" msgstr "إعادة تسمية مجلد:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "تكرير" +msgstr "تكرير الملÙ:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "إعادة تسمية مجلد:" +msgstr "تكرار مجلد:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2705,9 +2688,8 @@ msgid "Move To.." msgstr "ØªØØ±ÙŠÙƒ إلي.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "ÙØªØ مشهد" +msgstr "ÙØªØ مشهد (مشاهد)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2722,9 +2704,8 @@ msgid "View Owners.." msgstr "أظهر المÙلاك.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "تكرير" +msgstr "تكرير..." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2822,11 +2803,11 @@ msgstr "ØØ§Ø±ÙŠ Ø¥Ø³ØªÙŠØ±Ø§Ø¯ المشهد.." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" -msgstr "" +msgstr "انشاء خارطة الضوء" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " -msgstr "" +msgstr "انشاء من اجل الميش: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3074,11 +3055,11 @@ msgstr "نسخ Ø§Ù„ØØ±ÙƒØ©" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning" -msgstr "" +msgstr "تقشير البصل" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "" +msgstr "ØªÙØ¹ÙŠÙ„ تقشير البصل" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -3102,19 +3083,19 @@ msgstr "الخطوة 1" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "" +msgstr "خطوتان" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "" +msgstr "ثلاثة خطوات" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "Ø§Ù„Ø§Ø®ØªÙ„Ø§ÙØ§Øª Ùقط" +msgstr "Ø§Ù„Ø¥Ø®ØªÙ„Ø§ÙØ§Øª Ùقط" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "الاجبار على التعديل الابيض" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" @@ -3294,6 +3275,10 @@ msgstr "تعديل مصاÙÙŠ العقد" msgid "Filters.." msgstr "الÙلترة.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "شجرة Ø§Ù„ØØ±ÙƒØ©" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "مجاني/ÙØ§Ø±Øº" @@ -3443,22 +3428,28 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"لا يمكن ØªØØ¯ÙŠØ¯ مسار ØÙظ لصور خرائط الضوء.\n" +"اØÙظ مشهدك (لكي تØÙظ الصور ÙÙŠ المسار ذاته), او اختر مسار ØÙظ لخصائص خرائط " +"الضوء المعدة مسبقا." #: 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 Ùˆ ان زر الضوء " +"'المعد' Ù…ÙØ¹Ù„." #: 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" -msgstr "" +msgstr "اعداد خرائط الضوء" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "إستعراض" @@ -3761,6 +3752,14 @@ msgstr "أض٠%s" msgid "Adding %s..." msgstr "Ø¥Ø¶Ø§ÙØ© %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3772,11 +3771,6 @@ msgid "Error instancing scene from %s" msgstr "خطأ ÙÙŠ ØªÙˆØ¶ÙŠØ Ø§Ù„Ù…Ø´Ù‡Ø¯ من %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "هذه العملية تتطلب عقدة ÙˆØ§ØØ¯Ø© Ù…ØØ¯Ø¯Ø©." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "غير النوع Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ" @@ -3969,19 +3963,19 @@ msgstr "أنشئ ميش التنقل" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "الميش المتضمن ليس من النوع الميش المتعدد." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "نشر Unwrap ÙØ´Ù„ØŒ الميش ربما لا يكون متعدد؟" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "لا ميش لتصØÙŠØØ©." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "النموذج ليس لديه UV ÙÙŠ هذا الطابق" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4005,37 +3999,35 @@ msgstr "الميش" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "" +msgstr "إنشاء جسم تراميش ثابت" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "" +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" -msgstr "" +msgstr "إنشاء متصادم Ù…ØØ¯Ø¨ قريب" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." msgstr "إنشاء شبكة الخطوط العريضة .." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "أظهر" +msgstr "أظهر UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "أظهر" +msgstr "أظهر UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "بسط UV2 من أجل خريطة الضوء/الإطباق المØÙŠØ·" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4047,127 +4039,127 @@ msgstr "ØØ¬Ù… الخطوط:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "" +msgstr "لا مصدر ميش تم ØªØØ¯ÙŠØ¯Ù‡ (Ùˆ لا ميش متعدد تم ØªØØ¯ÙŠØ¯Ù‡ ÙÙŠ العقدة)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "" +msgstr "لا مصدر ميش تم ØªØØ¯ÙŠØ¯Ù‡ (Ùˆ ميش المتعدد لا ÙŠØØªÙˆÙŠ Ø¹Ù„ÙŠ ميش)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "" +msgstr "مصدر الميش خاطئ (المسار خاطئ)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "" +msgstr "مصدر الميش خاطئ (لييس ميش نموذجي)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "" +msgstr "مصدر الميش خاطئ (لا ÙŠØØªÙˆÙŠ Ø¹Ù„ÙŠ مصادر للميش)." #: 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)." -msgstr "" +msgstr "مصدر Ø§Ù„Ø³Ø·Ø Ø®Ø§Ø·Ø¦ (مسار خاطئ)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." -msgstr "" +msgstr "مصدر Ø§Ù„Ø³Ø·Ø Ø®Ø§Ø·Ø¦ (لا شكل هندسي)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no faces)." -msgstr "" +msgstr "مصدر Ø§Ù„Ø³Ø·Ø Ø®Ø§Ø·Ø¦ (لا وجوه)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Parent has no solid faces to populate." -msgstr "" +msgstr "الأب ليس لديه وجوه ثابته لكي تتزايد." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Couldn't map area." -msgstr "" +msgstr "لا يمكنه تخطيط المنطقة." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "" +msgstr "ØØ¯Ø¯ مصدر ميش:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "" +msgstr "ØØ¯Ø¯ Ø§Ù„Ø³Ø·Ø Ø§Ù„Ù…Ø³ØªÙ‡Ø¯Ù:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" -msgstr "" +msgstr "تزويد السطØ" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "" +msgstr "تزويد الميش المتعدد" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "" +msgstr "Ø§Ù„Ø³Ø·Ø Ø§Ù„Ù…Ø³ØªÙ‡Ø¯Ù:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "" +msgstr "الميش المصدر:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "" +msgstr "Ù…ØÙˆØ±-X" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "" +msgstr "Ù…ØÙˆØ±-Y" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" -msgstr "" +msgstr "Ù…ØÙˆØ±-Z" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "" +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" -msgstr "" +msgstr "تكثير/تزويد" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Bake!" -msgstr "" +msgstr "طبخ!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "" +msgid "Bake the navigation mesh." +msgstr "طبخ ميش Ø§Ù„Ù…ØØ§ÙˆØ±." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "" +msgstr "إخلاء ميش Ø§Ù„Ù…ØØ§ÙˆØ±." #: editor/plugins/navigation_mesh_generator.cpp msgid "Setting up Configuration..." -msgstr "" +msgstr "ÙŠÙØ¬Ù‡Ø² الإعدادات..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Calculating grid size..." -msgstr "" +msgstr "ÙŠØØ³Ø¨ ØØ¬Ù… الشبكة..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating heightfield..." -msgstr "" +msgstr "إنشاء مجال Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." @@ -4175,48 +4167,48 @@ msgstr "تعليم مثلثات Ø§Ù„ØªØØ±Ùƒ.." #: editor/plugins/navigation_mesh_generator.cpp msgid "Constructing compact heightfield..." -msgstr "" +msgstr "يبني مجال Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹ المدمج..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Eroding walkable area..." -msgstr "" +msgstr "تقويض منطقة السير..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Partitioning..." -msgstr "" +msgstr "تجزئة..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating contours..." -msgstr "" +msgstr "إنشاء المØÙŠØ·..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "" +msgstr "إنشاء نموذج الميش..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "" +msgstr "ÙŠØÙˆÙ„ إلي ميش التنقل المØÙ„ÙŠ..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "" +msgstr "منشئ تثبيت ميش التنقل:" #: editor/plugins/navigation_mesh_generator.cpp msgid "Parsing Geometry..." -msgstr "" +msgstr "توزيع الأشكال الهندسية..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Done!" -msgstr "" +msgstr "تم!" #: editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Navigation Polygon" -msgstr "" +msgstr "إنشاء Ù…ÙØ¶Ù„ع التنقل" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "" +msgstr "ÙŠÙنشئ AABB" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -4539,14 +4531,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "Ù…ØØ¯Ø« مسبق للموارد" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4618,9 +4612,12 @@ msgid "Soft Reload Script" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "نسخ المسار" +msgstr "نسخ مسار الكود" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "أظهر ÙÙŠ مدير Ø§Ù„Ù…Ù„ÙØ§Øª" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4809,9 +4806,8 @@ msgid "Clone Down" msgstr "" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "خط مطوي" +msgstr "إلغاء/ØªÙØ¹ÙŠÙ„ طي الخط" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5055,83 +5051,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5146,6 +5142,10 @@ msgstr "ØØ³Ù†Ø§Ù‹ :(" 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 "Display Normal" msgstr "" @@ -5219,16 +5219,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +msgid "Select Mode (Q)" +msgstr "ØªØØ¯ÙŠØ¯ الوضع (ض)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5258,9 +5254,8 @@ msgid "Local Space Mode (%s)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "أكبس إلي الموجهات" +msgstr "وضع الكبس (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5503,10 +5498,18 @@ msgstr "ØªØØ±ÙŠÙƒ (للسابق)" msgid "Move (After)" msgstr "ØªØØ±ÙŠÙƒ (للتالي)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5532,14 +5535,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5677,6 +5683,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5762,9 +5772,8 @@ msgid "Merge from scene?" msgstr "" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "مجموعة البلاط.." +msgstr "مجموعة البلاط" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5778,6 +5787,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "ØÙظ العنوان Ø§Ù„ÙØ±Ø¹ÙŠ Ø§Ù„Ø°ÙŠ يتم تعديله ØØ§Ù„يا." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "إلغاء" @@ -5885,9 +5918,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5899,6 +5930,14 @@ msgid "Imported Project" 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 "" @@ -5939,14 +5978,26 @@ 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 "" @@ -5963,10 +6014,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6012,6 +6059,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "مدير المشروع" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6138,11 +6189,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6520,10 +6566,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6608,8 +6650,8 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +msgid "Sub-Resources" +msgstr "مورد ÙØ±Ø¹ÙŠ" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6899,7 +6941,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6908,6 +6950,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "خطأ ÙÙŠ نسخ" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7060,9 +7106,8 @@ msgid "Select dependencies of the library for this entry" msgstr "" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Ù…Ø³Ø Ù†Ù‚Ø·Ø© الإنØÙ†Ø§Ø¡" +msgstr "Ù…Ø³Ø Ø§Ù„Ù…Ø¯Ø®Ù„Ø© Ø§Ù„ØØ§Ù„ية" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" @@ -7259,10 +7304,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "إنشاء الØÙ„..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "لا يمكن إنشاء Ø§Ù„ØØ¯." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "ÙØ´Ù„ ØÙظ الØÙ„." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "تم" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "ÙØ´Ù„ إنشاء مشروع C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "إنشاء ØÙ„ C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "بناء المشروع" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7608,23 +7693,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "شغل مل٠HTML Ø§Ù„Ù…ÙØµØ¯Ø± ÙÙŠ Ø§Ù„Ù…ØªØµÙØ Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„Ù„Ù†Ø¸Ø§Ù…." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "لا يمكن كتابة الملÙ:\n" +msgid "Could not write file:" +msgstr "لا يمكن كتابة الملÙ:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "لا يمكن ÙØªØ القالب من أجل التصدير.\n" +msgid "Could not open template for export:" +msgstr "لا يمكن ÙØªØ القالب من أجل التصدير:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "" +msgid "Invalid export template:" +msgstr "إدارة قوالب التصدير:" + +#: platform/javascript/export/export.cpp +msgid "Could not read custom HTML shell:" +msgstr "لا يمكن قراءة مل٠HTML مخصص:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "لا يمكن قراءة مل٠HTML مخصص:\n" +msgid "Could not read boot splash image file:" +msgstr "لا يمكن قراءة مل٠الإقلاع الصوري:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7641,6 +7730,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7711,7 +7807,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7770,6 +7866,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7815,8 +7918,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7881,8 +7984,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7909,6 +8012,27 @@ msgstr "" msgid "Invalid font size." msgstr "" +#~ msgid "Next" +#~ msgstr "التالي" + +#~ msgid "Not found!" +#~ msgstr "لم يوجد!" + +#~ msgid "Replace By" +#~ msgstr "إستبدلت بـ" + +#~ msgid "Case Sensitive" +#~ msgstr "ØØ³Ø§Ø³Ø© Ù„ØØ§Ù„Ø© Ø§Ù„Ø£ØØ±Ù" + +#~ msgid "Backwards" +#~ msgstr "إلي الخلÙ" + +#~ msgid "Prompt On Replace" +#~ msgstr "تأكيد عند الإستبدال" + +#~ msgid "Skip" +#~ msgstr "تخطي" + #~ msgid "Move Add Key" #~ msgstr "Ù…ÙØªØ§Ø Ø¥Ø¶Ø§ÙØ© Ø§Ù„ØØ±ÙƒØ©" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 001ec0f321..ecef737d82 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -5,19 +5,21 @@ # # Bojidar Marinov <bojidar.marinov.bg@gmail.com>, 2016. # Иван Пенев (Ðдмирал ÐнимЕ) <aeternus.arcis@gmail.com>, 2016-2017. +# Любомир ВаÑилев <lyubomirv@abv.bg>, 2018. +# MaresPW <marespw206@gmail.com>, 2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-07-27 06:33+0000\n" -"Last-Translator: Иван Пенев <aeternus.arcis@gmail.com>\n" +"PO-Revision-Date: 2018-01-24 18:44+0000\n" +"Last-Translator: MaresPW <marespw206@gmail.com>\n" "Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/" "godot/bg/>\n" "Language: bg\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 2.16-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -197,8 +199,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Създаване" @@ -375,14 +376,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -391,47 +384,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "ТърÑене" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -549,9 +510,17 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Създаване на нов проект" +msgstr "Създайте нов/а %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -655,7 +624,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -731,17 +700,16 @@ msgid "Godot Engine contributors" msgstr "" #: editor/editor_about.cpp -#, fuzzy msgid "Project Founders" -msgstr "ДиÑпечер на проектите" +msgstr "ОÑнователи на проекта" #: editor/editor_about.cpp msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "ДиÑпечер на проектите" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Ръководител на проекта " #: editor/editor_about.cpp msgid "Developers" @@ -796,14 +764,12 @@ msgid "" msgstr "" #: editor/editor_about.cpp -#, fuzzy msgid "All Components" -msgstr "Съдържание:" +msgstr "Ð’Ñички компоненти" #: editor/editor_about.cpp -#, fuzzy msgid "Components" -msgstr "Съдържание:" +msgstr "Компоненти" #: editor/editor_about.cpp msgid "Licenses" @@ -814,9 +780,8 @@ msgid "Error opening package file, not in zip format." msgstr "" #: editor/editor_asset_installer.cpp -#, fuzzy msgid "Uncompressing Assets" -msgstr "Извършва Ñе повторно внаÑÑне" +msgstr "Разархивиране на активи" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package Installed Successfully!" @@ -828,7 +793,7 @@ msgid "Success!" msgstr "Готово!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "ИнÑталиране" @@ -897,9 +862,8 @@ msgid "Bypass" msgstr "" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Bus options" -msgstr "ÐаÑтройки за отÑтранÑване на грешки" +msgstr "ÐаÑтройки на шината" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -927,9 +891,8 @@ msgid "Master bus can't be deleted!" msgstr "" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Delete Audio Bus" -msgstr "Изтриване на анимациÑта?" +msgstr "Изтриване звуковата шина" #: editor/editor_audio_buses.cpp msgid "Duplicate Audio Bus" @@ -1101,9 +1064,8 @@ msgid "[unsaved]" msgstr "" #: editor/editor_dir_dialog.cpp -#, fuzzy msgid "Please select a base directory first" -msgstr "МолÑ, първо запазете Ñцената." +msgstr "МолÑ, първо изберете оÑновна папка" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1139,7 +1101,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1147,9 +1109,8 @@ msgid "File Exists, Overwrite?" msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select Current Folder" -msgstr "Създаване на папка" +msgstr "Избиране на текущата папка" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" @@ -1160,9 +1121,8 @@ msgid "Show In File Manager" msgstr "" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "New Folder.." -msgstr "Създаване на папка" +msgstr "Ðова папка.." #: editor/editor_file_dialog.cpp msgid "Refresh" @@ -1239,9 +1199,8 @@ msgid "Move Favorite Down" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Go to parent folder" -msgstr "ÐеуÑпешно Ñъздаване на папка." +msgstr "Към горната папка" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" @@ -1310,9 +1269,8 @@ msgid "Members:" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "Public Methods" -msgstr "Изберете метод" +msgstr "Публични методи" #: editor/editor_help.cpp msgid "Public Methods:" @@ -1331,9 +1289,8 @@ msgid "Signals:" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "Enumerations" -msgstr "Преходи" +msgstr "Изброени типове" #: editor/editor_help.cpp msgid "Enumerations:" @@ -1344,18 +1301,27 @@ msgid "enum " msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "Constants" -msgstr "ПоÑтоÑнно" +msgstr "КонÑтанти" #: editor/editor_help.cpp msgid "Constants:" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "Description" -msgstr "ОпиÑание:" +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 "Properties" @@ -1372,9 +1338,8 @@ msgid "" msgstr "" #: editor/editor_help.cpp -#, fuzzy msgid "Methods" -msgstr "Изберете метод" +msgstr "Методи" #: editor/editor_help.cpp msgid "Method Description:" @@ -1390,6 +1355,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1401,6 +1370,11 @@ msgstr "" msgid "Clear" msgstr "ИзчиÑтване" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Ðова Ñцена" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1409,8 +1383,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1431,23 +1405,20 @@ msgid "Can't open '%s'." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Error while parsing '%s'." -msgstr "Имаше грешка при внаÑÑнето на Ñцената." +msgstr "Грешка при анализа на „%s“." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Missing '%s' or its dependencies." -msgstr "Сцената '%s' има нарушени завиÑимоÑти:" +msgstr "ЛипÑва „%s“ или Ñъответните завиÑимоÑти." #: editor/editor_node.cpp -#, fuzzy msgid "Error while loading '%s'." -msgstr "Имаше грешка при зареждане на Ñцената." +msgstr "Грешка при зареждането на „%s“." #: editor/editor_node.cpp msgid "Saving Scene" @@ -1467,7 +1438,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -1626,9 +1598,8 @@ msgid "Quick Open Script.." msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Save & Close" -msgstr "Запазване на файл" +msgstr "Запазване и затварÑне" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" @@ -1639,9 +1610,8 @@ msgid "Save Scene As.." msgstr "Запазване на Ñцената като.." #: editor/editor_node.cpp -#, fuzzy msgid "No" -msgstr "Възел" +msgstr "Ðе" #: editor/editor_node.cpp msgid "Yes" @@ -1705,9 +1675,8 @@ msgid "Open Project Manager?" msgstr "ДиÑпечер на проектите" #: editor/editor_node.cpp -#, fuzzy msgid "Save & Quit" -msgstr "Запазване на файл" +msgstr "Запазване и изход" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" @@ -2028,6 +1997,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "ТърÑене" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2410,7 +2386,7 @@ msgstr "" #: editor/export_template_manager.cpp #, fuzzy -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "Имаше грешка при изнаÑÑне на проекта!" #: editor/export_template_manager.cpp @@ -2574,9 +2550,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2584,22 +2558,22 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "Имаше грешка при внаÑÑнето:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Имаше грешка при внаÑÑнето:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "Сцената '%s' има нарушени завиÑимоÑти:" #: editor/filesystem_dock.cpp @@ -3247,6 +3221,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Изтриване на анимациÑта?" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3413,6 +3392,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3716,19 +3696,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4102,7 +4085,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4491,15 +4474,18 @@ msgstr "" msgid "Paste" msgstr "ПоÑтавÑне" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" +#, fuzzy +msgid "Close and save changes?" +msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4575,6 +4561,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5009,83 +4999,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5100,6 +5090,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5175,16 +5169,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "Избиране на вÑичко" #: editor/plugins/spatial_editor_plugin.cpp @@ -5461,10 +5451,18 @@ msgstr "ПоÑтавÑне на възелите" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5490,14 +5488,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5636,6 +5637,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5738,6 +5743,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Избиране на текущата папка" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Отказ" @@ -5847,10 +5877,9 @@ msgid "Please choose a 'project.godot' file." msgstr "МолÑ, изнеÑете извън папката на проекта!" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" +#, fuzzy +msgid "Please choose an empty folder." +msgstr "МолÑ, изнеÑете извън папката на проекта!" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5861,6 +5890,15 @@ msgid "Imported Project" msgstr "ВнеÑен проект" #: editor/project_manager.cpp +#, fuzzy +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 "" @@ -5902,14 +5940,29 @@ msgid "Import Existing Project" msgstr "ВнаÑÑне на ÑъщеÑтвуващ проект" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "ВнаÑÑне и отварÑне" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Създаване на нов проект" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Създаване" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "ИнÑталиране" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Име:" @@ -5927,10 +5980,6 @@ msgid "Browse" msgstr "Разглеждане" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5977,6 +6026,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "ДиÑпечер на проектите" + +#: editor/project_manager.cpp msgid "Project List" msgstr "СпиÑък Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸" @@ -6104,11 +6157,6 @@ msgid "Button 9" msgstr "Копче 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6490,10 +6538,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6578,7 +6622,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6881,7 +6925,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Грешки" @@ -6890,6 +6934,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Грешки" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7256,10 +7305,52 @@ msgstr "ÐаÑтройки" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "ÐеуÑпешно Ñъздаване на папка." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Проект" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7610,26 +7701,31 @@ msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "ÐеуÑпешно Ñъздаване на папка." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "ÐеуÑпешно Ñъздаване на папка." #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" +msgstr "ÐеуÑпешно Ñъздаване на папка." + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" msgstr "ÐеуÑпешно Ñъздаване на папка." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "ÐеуÑпешно Ñъздаване на папка." #: scene/2d/animated_sprite.cpp @@ -7649,6 +7745,13 @@ msgstr "" "Може да има Ñамо един видим CanvasModulate на Ñцене (или нÑколко " "инÑтанцирани Ñцени). Само първиÑÑ‚ ще работи, а вÑички оÑтанали - игнорирани." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7734,7 +7837,7 @@ msgstr "PathFollow2D работи Ñамо когато е наÑледник н #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7795,6 +7898,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7840,8 +7950,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7910,8 +8020,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7985,9 +8095,6 @@ msgstr "" #~ msgid "Import Anyway" #~ msgstr "ВнаÑÑне въпреки това" -#~ msgid "Import & Open" -#~ msgstr "ВнаÑÑне и отварÑне" - #~ msgid "Import Image:" #~ msgstr "ВнаÑÑне на изображение:" @@ -8027,9 +8134,6 @@ msgstr "" #~ msgid "Invalid project path, the path must exist!" #~ msgstr "ÐедейÑтвителен път. ПътÑÑ‚ трÑбва да ÑъщеÑтвува!" -#~ msgid "Close scene? (Unsaved changes will be lost)" -#~ msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)" - #, fuzzy #~ msgid "Error creating the signature object." #~ msgstr "Имаше грешка при изнаÑÑне на проекта!" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 63719c1a8b..b50fc38439 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -200,8 +200,7 @@ msgstr "%d à¦à¦° জনà§à¦¯ নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমà #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "তৈরি করà§à¦¨" @@ -379,14 +378,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d সংখà§à¦¯à¦• সংঘটন পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে ।" #: editor/code_editor.cpp -msgid "Replace" -msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) মিল করà§à¦¨" @@ -395,48 +386,16 @@ msgid "Whole Words" msgstr "সমà§à¦ªà§‚রà§à¦£ শবà§à¦¦" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "সনà§à¦§à¦¾à¦¨ করà§à¦¨" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "পরবরà§à¦¤à§€" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "à¦à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) সংবেদনশীল" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "পিছনের/অতীতের দিকে" +msgid "Replace" +msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨à§‡ অবহিত করà§à¦¨" +msgid "Replace All" +msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" #: editor/code_editor.cpp -msgid "Skip" -msgstr "অতিকà§à¦°à¦® করে যান" +msgid "Selection Only" +msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ" #: editor/code_editor.cpp msgid "Zoom In" @@ -557,6 +516,16 @@ msgstr "সংকেতসমূহ" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "নতà§à¦¨ তৈরি করà§à¦¨" @@ -669,7 +638,8 @@ msgstr "" "তবà§à¦“ তাদের অপসারণ করবেন? (অফেরৎযোগà§à¦¯)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "অপসারণ সমà§à¦à¦¬ নয় :\n" #: editor/dependency_editor.cpp @@ -752,8 +722,9 @@ msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ ফাউনà§à¦¡à¦¾à¦°" msgid "Lead Developer" msgstr "মূল ডেà¦à§‡à¦²à¦ªà¦¾à¦°" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°" #: editor/editor_about.cpp @@ -841,7 +812,7 @@ msgid "Success!" msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "ইনà§à¦¸à¦Ÿà¦²" @@ -1157,7 +1128,8 @@ msgid "Packing" msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "টেমপà§à¦²à§‡à¦Ÿ ফাইল পাওয়া যায়নি:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1381,6 +1353,22 @@ msgstr "বরà§à¦£à¦¨à¦¾:" #: editor/editor_help.cpp #, fuzzy +msgid "Online Tutorials:" +msgstr "টিউটোরিয়ালসমূহ" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"à¦à¦‡ মেথড সমà§à¦ªà¦°à§à¦•ে বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯ লিপিবদà§à¦§ করা হয়নি। অনà§à¦—à§à¦°à¦¹ করে তথà§à¦¯ পà§à¦°à¦¦à¦¾à¦¨à§‡à¦° মাধà§à¦¯à¦®à§‡ " +"সহায়তা করà§à¦¨à¥¤ তথà§à¦¯ পà§à¦°à¦¦à¦¾à¦¨à§‡à¦° জনà§à¦¯ [color=$color][url=$url], [/url][/color] ফরমà§à¦¯à¦¾à¦Ÿ " +"বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦° করà§à¦¨ !" + +#: editor/editor_help.cpp +#, fuzzy msgid "Properties" msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:" @@ -1419,6 +1407,10 @@ msgstr "" msgid "Search Text" msgstr "টেকà§à¦¸à¦Ÿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨" +#: editor/editor_help.cpp +msgid "Find" +msgstr "সনà§à¦§à¦¾à¦¨ করà§à¦¨" + #: editor/editor_log.cpp #, fuzzy msgid "Output:" @@ -1431,6 +1423,11 @@ msgstr " আউটপà§à¦Ÿ/ফলাফল:" msgid "Clear" msgstr "পরিসà§à¦•ার করà§à¦¨/কà§à¦²à§€à§Ÿà¦¾à¦°" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "আউটপà§à¦Ÿ/ফলাফল" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!" @@ -1439,8 +1436,8 @@ msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয় msgid "Save Resource As.." msgstr "রিসোরà§à¦¸ à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "বà§à¦à¦²à¦¾à¦®.." @@ -1498,8 +1495,10 @@ msgid "This operation can't be done without a tree root." msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦à¦¬ হবে না।" #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "দৃশà§à¦¯à¦Ÿà¦¿ সংরকà§à¦·à¦£ করা সমà§à¦à¦¬ হচà§à¦›à§‡ না। সমà§à¦à¦¬à¦¤ যেসবের (ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸) উপর নিরà§à¦à¦° করছে তাদের " "সনà§à¦¤à§à¦·à§à¦Ÿ করা সমà§à¦à¦¬ হচà§à¦›à§‡ না।" @@ -2124,6 +2123,13 @@ msgstr "হেলà§à¦ª" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Online Docs" @@ -2525,7 +2531,7 @@ msgstr "টেমপà§à¦²à§‡à¦Ÿà§‡ version.txt খà§à¦à¦œà§‡ পাওয়া #: editor/export_template_manager.cpp #, fuzzy -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:" #: editor/export_template_manager.cpp @@ -2706,9 +2712,8 @@ msgid "View items as a list" msgstr "লিসà§à¦Ÿ হিসেবে আইটেম দেখà§à¦¨" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "সà§à¦Ÿà§à¦¯à¦¾à¦Ÿà¦¾à¦¸: ফাইল ইমà§à¦ªà§‹à¦°à§à¦Ÿ বà§à¦¯à¦°à§à¦¥ হয়েছে। অনà§à¦—à§à¦°à¦¹ করে ফাইলটি ঠিক করà§à¦¨ à¦à¦¬à¦‚ মà§à¦¯à¦¾à¦¨à§à¦¯à¦¼à¦¾à¦²à¦¿ পà§à¦¨à¦°à¦¾à§Ÿ " @@ -2721,22 +2726,22 @@ msgstr "ফনà§à¦Ÿà§‡à¦° উৎস লোড/পà§à¦°à¦¸à§‡à¦¸ করা সà #: editor/filesystem_dock.cpp #, fuzzy -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "ফাইলকে তার নিজের উপরেই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা সমà§à¦à¦¬ নয়:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "লোডে সমসà§à¦¯à¦¾ হয়েছে:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "'%s' দৃশà§à¦¯à¦Ÿà¦¿à¦° অসংলগà§à¦¨ নিরà§à¦à¦°à¦¤à¦¾ রয়েছে:" #: editor/filesystem_dock.cpp @@ -3406,6 +3411,11 @@ msgstr "নোড ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ কর msgid "Filters.." msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "মà§à¦•à§à¦¤ করে দিন" @@ -3579,6 +3589,7 @@ msgid "Bake Lightmaps" msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "পà§à¦°à¦¿à¦à¦¿à¦‰" @@ -3899,6 +3910,14 @@ msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨" msgid "Adding %s..." msgstr "%s সংযà§à¦•à§à¦¤ হচà§à¦›à§‡..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3910,11 +3929,6 @@ msgid "Error instancing scene from %s" msgstr "%s হতে দৃশà§à¦¯ ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করাতে সমসà§à¦¯à¦¾ হয়েছে" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "à¦à¦‡ কাজটি করার জনà§à¦¯ à¦à¦•টি à¦à¦•ক নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোড পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤" - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "ডিফলà§à¦Ÿ ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨" @@ -4300,7 +4314,7 @@ msgstr "সিদà§à¦§/বেকà§â€Œ!" #: editor/plugins/navigation_mesh_editor_plugin.cpp #, fuzzy -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "Navigation Mesh তৈরি করà§à¦¨" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4716,15 +4730,19 @@ msgstr "রিসোরà§à¦¸ লোড করà§à¦¨" msgid "Paste" msgstr "পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "রিসোরà§à¦¸-à¦à¦° পথ" + #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Clear Recent Files" msgstr "বোনà§â€Œ/হাড় পরিষà§à¦•ার করà§à¦¨" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +#, fuzzy +msgid "Close and save changes?" msgstr "" "বনà§à¦§ à¦à¦¬à¦‚ পরিবরà§à¦¤à¦¨ সংরকà§à¦·à¦£ করবেন?\n" "\"" @@ -4804,6 +4822,11 @@ msgid "Copy Script Path" msgstr "পথ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "ফাইলসিসà§à¦Ÿà§‡à¦®" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "পূরà§à¦¬à§‡à¦° ইতিহাস" @@ -5248,50 +5271,6 @@ msgid "Rotating %s degrees." msgstr "%s ডিগà§à¦°à¦¿ ঘূরà§à¦£à¦¿à¦¤ হচà§à¦›à§‡à¥¤" #: 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 "Top View." -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 "Front View." -msgstr "সনà§à¦®à§à¦– দরà§à¦¶à¦¨à¥¤" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -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 "Keying is disabled (no key inserted)." msgstr "চাবিসংযোক নিষà§à¦•à§à¦°à¦¿à§Ÿ আছে (কোনো চাবি সংযà§à¦•à§à¦¤ হয়নি)।" @@ -5332,6 +5311,50 @@ msgid "FPS" 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 with view" msgstr "দরà§à¦¶à¦¨à§‡à¦° সাথে সারিবদà§à¦§ করà§à¦¨" @@ -5343,6 +5366,10 @@ msgstr "ঠিক আছে :(" 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 "Display Normal" msgstr "Normal পà§à¦°à¦¦à¦°à§à¦¶à¦¨" @@ -5425,17 +5452,12 @@ msgid "Freelook Speed Modifier" msgstr "ফà§à¦°à¦¿ লà§à¦• সà§à¦ªà¦¿à¦¡ মডিফায়ার" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "পà§à¦°à¦¿à¦à¦¿à¦‰" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XForm à¦à¦° সংলাপ" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "মোড (Mode) বাছাই করà§à¦¨" #: editor/plugins/spatial_editor_plugin.cpp @@ -5720,10 +5742,20 @@ msgstr "নোড(সমূহ) অপসারণ করà§à¦¨" msgid "Move (After)" msgstr "বামে সরান" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "ফà§à¦°à§‡à¦®à¦¸à¦®à§‚হ সà§à¦¤à§‚প করà§à¦¨" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox পà§à¦°à¦¿à¦à¦¿à¦‰:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "সà§à¦Ÿà¦¾à¦‡à¦²" + #: editor/plugins/texture_region_editor_plugin.cpp #, fuzzy msgid "Set Region Rect" @@ -5750,14 +5782,17 @@ msgid "Auto Slice" msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ টà§à¦•রো" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "অফসেট/à¦à¦¾à¦°à¦¸à¦¾à¦®à§à¦¯:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "পদকà§à¦·à§‡à¦ª:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "বিচà§à¦›à§‡à¦¦:" @@ -5898,6 +5933,10 @@ msgstr "ফনà§à¦Ÿ" msgid "Color" msgstr "রঙ" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "থিম" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -6003,6 +6042,32 @@ msgstr "দৃশà§à¦¯ হতে à¦à¦•তà§à¦°à¦¿à¦¤ করবেন" msgid "Error" msgstr "সমসà§à¦¯à¦¾/à¦à§à¦²" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "বাতিল" @@ -6134,12 +6199,9 @@ msgid "Please choose a 'project.godot' file." msgstr "অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦•লà§à¦ªà§‡à¦° ফোলà§à¦¡à¦¾à¦°à§‡à¦° বাইরে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨!" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"আপনার পà§à¦°à¦œà§‡à¦•à§à¦Ÿ à¦à¦•টি খালি ফোলà§à¦¡à¦¾à¦°à§‡ তৈরি করা হবে (আপনি চাইলে à¦à¦•টি নতà§à¦¨ ফোলà§à¦¡à¦¾à¦° তৈরি " -"করতে পারেন)।" +#, fuzzy +msgid "Please choose an empty folder." +msgstr "অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦•লà§à¦ªà§‡à¦° ফোলà§à¦¡à¦¾à¦°à§‡à¦° বাইরে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨!" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6150,6 +6212,15 @@ msgid "Imported Project" msgstr "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে" #: editor/project_manager.cpp +#, fuzzy +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 "আপনার পà§à¦°à¦œà§‡à¦•à§à¦Ÿà¦Ÿà¦¿à¦° জনà§à¦¯ à¦à¦•টি নাম নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করà§à¦¨à¥¤" @@ -6195,14 +6266,29 @@ msgid "Import Existing Project" msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ খà§à¦²à§à¦¨" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª তৈরি করà§à¦¨" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Emitter তৈরি করà§à¦¨" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "ইনà§à¦¸à¦Ÿà¦²" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° নাম:" @@ -6220,10 +6306,6 @@ msgid "Browse" msgstr "বà§à¦°à¦¾à¦‰à¦¸" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "দারà§à¦£ খবর!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "নামহীন পà§à¦°à¦•লà§à¦ª" @@ -6280,6 +6362,10 @@ msgstr "" "সà§à¦¨à¦¿à¦¶à§à¦šà¦¿à¦¤?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°" + +#: editor/project_manager.cpp msgid "Project List" msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° তালিকা" @@ -6409,11 +6495,6 @@ msgid "Button 9" msgstr "বোতাম ৯" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨" - -#: editor/project_settings_editor.cpp #, fuzzy msgid "Joypad Axis Index:" msgstr "জয়সà§à¦Ÿà¦¿à¦• অকà§à¦· ইনà§à¦¡à§‡à¦•à§à¦¸:" @@ -6815,10 +6896,6 @@ msgid "Error loading scene from %s" msgstr "%s হতে দৃশà§à¦¯ লোড করতে সমসà§à¦¯à¦¾ হয়েছে" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "ঠিক আছে" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6908,7 +6985,7 @@ msgstr "দৃশà§à¦¯ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করে সংরকà§à¦· #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "রিসোরà§à¦¸à¦¸à¦®à§‚হ:" #: editor/scene_tree_dock.cpp @@ -7230,7 +7307,7 @@ msgstr "ফাংশন:" msgid "Pick one or more items from the list to display the graph." msgstr "গà§à¦°à¦¾à¦« পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করতে তালিকা থেকে à¦à¦• বা à¦à¦•াধিক আইটেম বাছাই করà§à¦¨à¥¤" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "সমসà§à¦¯à¦¾à¦¸à¦®à§‚হ" @@ -7239,6 +7316,11 @@ msgid "Child Process Connected" msgstr "চাইলà§à¦¡ পà§à¦°à¦¸à§‡à¦¸ সংযà§à¦•à§à¦¤ হয়েছে" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "à¦à§à¦²/সমসà§à¦¯à¦¾-সমূহ লোড করà§à¦¨" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ পরীকà§à¦·à¦¾ করà§à¦¨" @@ -7605,10 +7687,58 @@ msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª সেটিংস" msgid "Pick Distance:" msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "ওকটà§à¦°à§€ (octree) গঠনবিনà§à¦¯à¦¾à¦¸ তৈরি করা হচà§à¦›à§‡" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া তৈরি করা সমà§à¦à¦¬ হয়নি!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "মনো" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া তৈরি করà§à¦¨" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "সতরà§à¦•তা" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7991,27 +8121,32 @@ msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦à¦¬ হয়নি।" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" +msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" #: scene/2d/animated_sprite.cpp @@ -8030,6 +8165,13 @@ msgstr "" "পà§à¦°à¦¤à¦¿ দৃশà§à¦¯à§‡ (অথবা ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸à¦¡ দৃশà§à¦¯à§‡à¦° সমà§à¦®à§‡à¦²à¦¨à§‡) সরà§à¦¬à§‹à¦šà§à¦š à¦à¦•টি দৃশà§à¦¯à¦®à¦¾à¦¨ CanvasModulate " "সমà§à¦à¦¬à¥¤ সরà§à¦¬à¦ªà§à¦°à¦¥à¦®à§‡à¦°à¦Ÿà¦¿ দৃশà§à¦¯à¦¤ হলেও বাকিগà§à¦²à§‹ বাতিল হয়ে যাবে।" +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -8113,7 +8255,7 @@ msgstr "PathFollow2D à¦à¦•মাতà§à¦° Path2D à¦à¦° অংশ হিসেà #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8177,6 +8319,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "ছবিসমূহ বà§à¦²à¦¿à¦Ÿà¦¿à¦‚ (Blitting) করা হচà§à¦›à§‡" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8235,8 +8384,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8310,8 +8459,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -8342,6 +8491,41 @@ msgstr "ফনà§à¦Ÿ তà§à¦²à¦¤à§‡/লোডে সমসà§à¦¯à¦¾ হয়েঠmsgid "Invalid font size." msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" +#~ msgid "Next" +#~ msgstr "পরবরà§à¦¤à§€" + +#~ msgid "Not found!" +#~ msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!" + +#~ msgid "Replace By" +#~ msgstr "à¦à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨" + +#~ msgid "Case Sensitive" +#~ msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) সংবেদনশীল" + +#~ msgid "Backwards" +#~ msgstr "পিছনের/অতীতের দিকে" + +#~ msgid "Prompt On Replace" +#~ msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨à§‡ অবহিত করà§à¦¨" + +#~ msgid "Skip" +#~ msgstr "অতিকà§à¦°à¦® করে যান" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "আপনার পà§à¦°à¦œà§‡à¦•à§à¦Ÿ à¦à¦•টি খালি ফোলà§à¦¡à¦¾à¦°à§‡ তৈরি করা হবে (আপনি চাইলে à¦à¦•টি নতà§à¦¨ ফোলà§à¦¡à¦¾à¦° " +#~ "তৈরি করতে পারেন)।" + +#~ msgid "That's a BINGO!" +#~ msgstr "দারà§à¦£ খবর!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "পà§à¦°à¦¿à¦à¦¿à¦‰" + #~ msgid "Move Add Key" #~ msgstr "অà§à¦¯à¦¾à¦¡ কি মà§à¦ করà§à¦¨" @@ -8430,9 +8614,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" #~ msgid "Filter:" #~ msgstr "ফিলà§à¦Ÿà¦¾à¦°:" -#~ msgid "Theme" -#~ msgstr "থিম" - #~ msgid "Method List For '%s':" #~ msgstr "'%s' à¦à¦° জনà§à¦¯ মেথডের তালিকা:" @@ -8697,9 +8878,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" #~ msgid "Import Anyway" #~ msgstr "যেকোনো উপায়েই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨" -#~ msgid "Import & Open" -#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ খà§à¦²à§à¦¨" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ দৃশà§à¦¯ সংরকà§à¦·à¦£ করা হয়নি, তবà§à¦“ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা দৃশà§à¦¯à¦Ÿà¦¿ খà§à¦²à¦¬à§‡à¦¨?" @@ -8955,9 +9133,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" #~ msgid "Stereo" #~ msgstr "সà§à¦Ÿà§‡à¦°à¦¿à¦“" -#~ msgid "Mono" -#~ msgstr "মনো" - #~ msgid "Pitch" #~ msgstr "পিচà§â€Œ" @@ -9120,9 +9295,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" #~ msgid "Alerts when an external resource has changed." #~ msgstr "বহি:সà§à¦¥ রিসোরà§à¦¸à§‡à¦° পরিবরà§à¦¤à¦¨à§‡ সতরà§à¦• করে।" -#~ msgid "Tutorials" -#~ msgstr "টিউটোরিয়ালসমূহ" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "টিউটোরিয়ালের সà§à¦¥à¦¾à¦¨à§‡ https://godotengine.org খà§à¦²à§à¦¨à¥¤" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index 6c30c703c1..91d1d55e64 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -4,12 +4,12 @@ # This file is distributed under the same license as the Godot source code. # # BennyBeat <bennybeat@gmail.com>, 2017. -# Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2017. +# Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-20 15:42+0000\n" +"PO-Revision-Date: 2018-01-24 02:50+0000\n" "Last-Translator: Roger Blanco Ribera <roger.blancoribera@gmail.com>\n" "Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/" "godot/ca/>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -28,9 +28,8 @@ msgid "All Selection" msgstr "Tota la Selecció" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Modifica el Valor" +msgstr "Modifica el temps de la clau" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -41,9 +40,8 @@ msgid "Anim Change Transform" msgstr "Modifica la Transformació de l'Animació" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Modifica el Valor" +msgstr "Modifica el valor de la clau" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -199,8 +197,7 @@ msgstr "Voleu crear %d NOVES pistes i inserir-hi claus?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Crea" @@ -378,14 +375,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d ocurrència/es reemplaçades." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Reemplaça" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Reemplaça-hoTot" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Distingeix entre majúscules i minúscules" @@ -394,48 +383,16 @@ msgid "Whole Words" msgstr "Paraules senceres" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Selecció Només" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Cerca" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Troba" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Següent" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "No s'ha trobat!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Reemplaça per" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Majúscules i minúscules" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Enrere" +msgid "Replace" +msgstr "Reemplaça" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Indica en reemplaçar" +msgid "Replace All" +msgstr "Reemplaça-hoTot" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Omet" +msgid "Selection Only" +msgstr "Selecció Només" #: editor/code_editor.cpp msgid "Zoom In" @@ -537,9 +494,8 @@ msgid "Connecting Signal:" msgstr "Connectant Senyal:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Connecta '%s' amb '%s'" +msgstr "Desconnecta '%s' de '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -555,9 +511,17 @@ msgid "Signals" msgstr "Senyals" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Modifica el Tipus de %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Modifica" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Crea Nou" +msgstr "Crea Nou %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -668,8 +632,8 @@ msgstr "" "Voleu Eliminar-los de totes maneres? (No es pot desfer!)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "No es pot eliminar:\n" +msgid "Cannot remove:" +msgstr "No es pot eliminar:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -751,9 +715,9 @@ msgstr "Fundadors del Projecte" msgid "Lead Developer" msgstr "Desenvolupador Principal" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Gestor del Projecte" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Gestor del Projecte " #: editor/editor_about.cpp msgid "Developers" @@ -841,7 +805,7 @@ msgid "Success!" msgstr "Èxit!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Instal·la" @@ -862,9 +826,8 @@ msgid "Rename Audio Bus" msgstr "Reanomena Bus d'Àudio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Commuta el solo del Bus d'à udio" +msgstr "Modifica el Volum del Bus d'à udio" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -929,7 +892,7 @@ msgstr "Elimina l'Efecte" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Àudio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1110,13 +1073,12 @@ msgid "Updating scene.." msgstr "S'està actualitzant l'escena.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(buit)" +msgstr "[buit]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[no desat]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1156,8 +1118,8 @@ msgid "Packing" msgstr "Compressió" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "No s'ha trobat la Plantilla:\n" +msgid "Template file not found:" +msgstr "No s'ha trobat la Plantilla:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1368,6 +1330,20 @@ msgid "Description" msgstr "Descripció" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Tutorials en lÃnia:" + +#: 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 "" +"Aquesta classe no disposa encara de cap Tutorial. Podeu contribuir [color=" +"$color][url=$url] tot aportant-ne un[/url][/color] o [color=$color][url=" +"$url2]sol·licitant-lo[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Propietats" @@ -1403,6 +1379,10 @@ msgstr "" msgid "Search Text" msgstr "Cerca Text" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Troba" + #: editor/editor_log.cpp msgid "Output:" msgstr "Sortida:" @@ -1414,6 +1394,10 @@ msgstr "Sortida:" msgid "Clear" msgstr "Neteja" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Buida la Sortida" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Error en desar recurs!" @@ -1422,8 +1406,8 @@ msgstr "Error en desar recurs!" msgid "Save Resource As.." msgstr "Anomena i Desa el Recurs..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Vaja..." @@ -1477,10 +1461,11 @@ msgstr "Aquesta operació no es pot fer sense cap arrel d'arbre." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "No s'ha pogut desar l'escena. Probablement, no s'han pogut establir totes " -"les dependències (instà ncies)." +"les dependències (instà ncies o herències)." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -2092,6 +2077,13 @@ msgstr "Ajuda" msgid "Classes" msgstr "Classes" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Cerca" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentació en lÃnia" @@ -2363,14 +2355,12 @@ msgid "Frame #:" msgstr "Fotograma núm.:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Temps:" +msgstr "Temps" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Crida" +msgstr "Crides" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2477,8 +2467,8 @@ msgid "No version.txt found inside templates." msgstr "No s'ha trobat cap version.txt dins les plantilles." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Error en crear el camà per a les plantilles:\n" +msgid "Error creating path for templates:" +msgstr "Error en crear el camà per a les plantilles:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2513,7 +2503,6 @@ msgstr "Cap resposta." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Ha fallat la sol·licitud." @@ -2561,7 +2550,6 @@ msgid "Connecting.." msgstr "Connexió en marxa..." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "No es pot connectar" @@ -2637,33 +2625,28 @@ msgid "View items as a list" msgstr "Visualitza en una llista" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." -msgstr "" -"\n" -"Estat: No s'ha pogut importar. Corregiu el fitxer i torneu a importar." +msgid "Status: Import of file failed. Please fix file and reimport manually." +msgstr "Estat: No s'ha pogut importar. Corregiu el fitxer i torneu a importar." #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." msgstr "No es pot moure/reanomenar l'arrel dels recursos." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "No es pot moure un directori dins si mateix:\n" +msgid "Cannot move a folder into itself." +msgstr "No es pot moure un directori dins si mateix." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Error en moure:\n" +msgid "Error moving:" +msgstr "Error en moure:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Error en carregar:" +msgid "Error duplicating:" +msgstr "Error en duplicar:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "No s'han pogut actualitzar les dependències:\n" +msgid "Unable to update dependencies:" +msgstr "No s'han pogut actualitzar les dependències:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2694,14 +2677,12 @@ msgid "Renaming folder:" msgstr "Reanomenant directori:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Duplica" +msgstr "S'està duplicant el fitxer:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Reanomenant directori:" +msgstr "S'està duplicant el directori:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2720,9 +2701,8 @@ msgid "Move To.." msgstr "Mou cap a..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Obre una Escena" +msgstr "Obre Escenes" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2737,9 +2717,8 @@ msgid "View Owners.." msgstr "Mostra Propietaris..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Duplica" +msgstr "Duplica.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2834,14 +2813,12 @@ msgid "Importing Scene.." msgstr "Important Escena..." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Generant AABB" +msgstr "S'estan generant els Lightmaps" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Generant AABB" +msgstr "S'està generant per a la Malla: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3310,6 +3287,10 @@ msgstr "Edita els filtres de Node" msgid "Filters.." msgstr "Filtres..." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "Arbre d'Animació" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Allibera" @@ -3459,23 +3440,31 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"No es pot determinar un camà per desar les imatges corresponents als " +"lightmaps.\n" +"Deseu l'escena ( les imatges es desaran en el mateix directori), o trieu un " +"camà des de les propietats de 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 "" +"Cap Malla per precalcular. Comproveu que disposin d'un canal d'UV2 i que " +"l'indicador 'Bake Light' és activat." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"No s'han pogut crear les imatges de lightmap. Comproveu que el camà tingui " +"permisos d'escriptura." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "Modifica el Radi de Llum" +msgstr "Precalcular Lightmaps" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Previsualització" @@ -3780,6 +3769,14 @@ msgstr "Afegeix %s" msgid "Adding %s..." msgstr "Afegint %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "D'acord" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "No es poden instanciar múltiples nodes sense cap arrel." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3791,11 +3788,6 @@ msgid "Error instancing scene from %s" msgstr "Error en instanciar l'escena des de %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Aquesta operació requereix un únic node seleccionat." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Modifica el tipus per defecte" @@ -3903,7 +3895,7 @@ msgstr "Prem Maj. per editar les tangents individualment" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "Calcula la Sonda d' IG" +msgstr "Precalcula la Sonda d'IG" #: editor/plugins/gradient_editor_plugin.cpp msgid "Add/Remove Color Ramp Point" @@ -3988,19 +3980,19 @@ msgstr "Crea un malla de Navegació" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "La Malla continguda no és del tipus ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "No s'han pogut desembolcar les UV. Comproveu la topologia de la malla" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Cap malla per depurar." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "El model no té UVs en aquesta capa" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4043,18 +4035,16 @@ msgid "Create Outline Mesh.." msgstr "Crea una malla de contorn..." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Vista" +msgstr "Visualitza UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Vista" +msgstr "Visualitza UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Desembolcalla UV2 per a Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4169,8 +4159,8 @@ msgid "Bake!" msgstr "Calcula!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Cou la malla de navegació.\n" +msgid "Bake the navigation mesh." +msgstr "Precalcula la malla de navegació." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4558,17 +4548,17 @@ msgstr "Carrega un Recurs" msgid "Paste" msgstr "Enganxa" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "ResourcePreloader" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Buida la llista de Fitxers recents" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Tancar i desar els canvis?\n" -"\"" +msgid "Close and save changes?" +msgstr "Tancar i desar els canvis?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4639,9 +4629,12 @@ msgid "Soft Reload Script" msgstr "Recarrega parcialment l'Script" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Copia CamÃ" +msgstr "Copia el camà de l'Script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Mostra'l en el Sistema de Fitxers" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4834,9 +4827,8 @@ msgid "Clone Down" msgstr "Clona avall" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Desplega la lÃnia" +msgstr "(Des)Plega la lÃnia" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5080,84 +5072,84 @@ msgid "Rotating %s degrees." msgstr "Rotació de %s graus." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Vista inferior." +msgid "Keying is disabled (no key inserted)." +msgstr "l'Edició de Claus està inhabilitada (no s'ha inserit cap Clau)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Part inferior" +msgid "Animation Key Inserted." +msgstr "S'ha insertit una Clau d'Animació." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Vista superior." +msgid "Objects Drawn" +msgstr "Objectes Dibuixats" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Vista Posterior." +msgid "Material Changes" +msgstr "Canvis de Material" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Darrere" +msgid "Shader Changes" +msgstr "Canvis de Ombreig" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Vista Frontal." +msgid "Surface Changes" +msgstr "Canvis de superfÃcie" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Davant" +msgid "Draw Calls" +msgstr "Crides de Dibuix" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vista esquerra." +msgid "Vertices" +msgstr "Vèrtexs" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Esquerra" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Vista Dreta." +msgid "Top View." +msgstr "Vista superior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Dreta" +msgid "Bottom View." +msgstr "Vista inferior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "l'Edició de Claus està inhabilitada (no s'ha inserit cap Clau)." +msgid "Bottom" +msgstr "Part inferior" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "S'ha insertit una Clau d'Animació." +msgid "Left View." +msgstr "Vista esquerra." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Objectes Dibuixats" +msgid "Left" +msgstr "Esquerra" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Canvis de Material" +msgid "Right View." +msgstr "Vista Dreta." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Canvis de Ombreig" +msgid "Right" +msgstr "Dreta" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Canvis de superfÃcie" +msgid "Front View." +msgstr "Vista Frontal." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Crides de Dibuix" +msgid "Front" +msgstr "Davant" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vèrtexs" +msgid "Rear View." +msgstr "Vista Posterior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Darrere" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5171,6 +5163,10 @@ msgstr "Buenu, pos molt bé, pos adiós... :(" msgid "No parent to instance a child at." msgstr "No hi ha cap node Pare per instanciar-li un fill." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Aquesta operació requereix un únic node seleccionat." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Mostra les Normals" @@ -5244,16 +5240,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de la Velocitat de la Vista Lliure" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "Previsualització" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Dià leg XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Mode Selecció (Q)\n" +msgid "Select Mode (Q)" +msgstr "Mode Selecció (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5282,14 +5274,12 @@ msgid "Local Coords" msgstr "Coordenades Locals" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Mode Escala (R)" +msgstr "Mode Espai Local (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Mode Imant:" +msgstr "Mode Imant (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5406,7 +5396,7 @@ msgstr "Configuració" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "Visibilitat del giny esquelet" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5532,10 +5522,18 @@ msgstr "Mou (Abans)" msgid "Move (After)" msgstr "Mou (Després)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "SpriteFrames" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Previsualització del StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StyleBox" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Defineix la Regió Rectangular" @@ -5561,14 +5559,17 @@ msgid "Auto Slice" msgstr "Auto Tall" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "òfset:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Pas:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separació:" @@ -5706,6 +5707,10 @@ msgstr "Lletra" msgid "Color" msgstr "Color" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Elimina la Selecció" @@ -5791,9 +5796,8 @@ msgid "Merge from scene?" msgstr "Combinar-ho a partir de l'escena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet..." +msgstr "Tile Set" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5807,6 +5811,34 @@ msgstr "Combina-ho a partir de l'Escena" msgid "Error" msgstr "Error" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "AutoTiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" +"Selecciona una sub-tessel·la com a icona. També s'utilitzarà per les " +"assignacions automà tiques no-và lides de l'autotile." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"clic Esquerra: activa el bit\n" +"clic Dreta: desactiva el bit." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Selecciona la sub-tessel·la en edició." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Selecciona una sub-tessel·la per a modificar-ne la prioritat." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Cancel·la" @@ -5919,12 +5951,8 @@ msgid "Please choose a 'project.godot' file." msgstr "Selecciona un fitxer 'projecte.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"El projecte es crearà en un directori ja existent (Si s'escau, creeu un " -"directori nou)." +msgid "Please choose an empty folder." +msgstr "Selecciona un directori buit." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5936,6 +5964,14 @@ msgid "Imported Project" msgstr "Project importat" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "No s'ha pogut crear el directori." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "Ja hi ha un directori amb el mateix nom en aquest camÃ." + +#: editor/project_manager.cpp msgid "It would be a good idea to name your project." msgstr "Fóra bo anomenar el projecte." @@ -5976,14 +6012,26 @@ msgid "Import Existing Project" msgstr "Importa un Projecte existent" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importa i Edita" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Crea un Projecte nou" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Crea i Edita" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Instal·la el Projecte:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Instal·la i Edita" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nom del Projecte:" @@ -6000,10 +6048,6 @@ msgid "Browse" msgstr "Navega" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projecte sense nom" @@ -6058,6 +6102,10 @@ msgid "" msgstr "S'examinaran %s directoris a la recerca de projectes. Ho Confirmeu?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Gestor del Projecte" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Llista de Projectes" @@ -6186,11 +6234,6 @@ msgid "Button 9" msgstr "Botó 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Modifica" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Ãndex de l'eix de la maneta:" @@ -6203,9 +6246,8 @@ msgid "Joypad Button Index:" msgstr "Ãndex del Botó de la Maneta:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Elimina la Incidència d'Acció d'Entrada" +msgstr "Elimina l'Acció d'Entrada" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6453,7 +6495,7 @@ msgstr "Script Nou" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Nou %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6488,9 +6530,8 @@ msgid "On" msgstr "Activat" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Afegeix un element Buit" +msgstr "[Buit]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6570,10 +6611,6 @@ msgid "Error loading scene from %s" msgstr "Error en carregar l'escena des de %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "D'acord" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6662,8 +6699,8 @@ msgid "Error duplicating scene to save it." msgstr "Error en duplicar l'escena per desar-la." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Sub-Recursos:" +msgid "Sub-Resources" +msgstr "Sub-Recursos" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6965,7 +7002,7 @@ msgstr "Funció:" msgid "Pick one or more items from the list to display the graph." msgstr "Trieu un o més elements de la llista per mostrar el Graf." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Errors" @@ -6974,6 +7011,10 @@ msgid "Child Process Connected" msgstr "Procés Fill Connectat" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Error de Còpia" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Inspecciona la Instà ncia anterior" @@ -7067,7 +7108,7 @@ msgstr "Dreceres" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Vinculació" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7119,42 +7160,39 @@ msgstr "Modifica l'abast de la Sonda" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Selecciona una biblioteca dinà mica per l'entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Selecciona les dependències per l'entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Elimina un punt de la Corba" +msgstr "Elimina l'entrada actual" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Doble clic per a afegir-hi una entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Plataforma:" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform" -msgstr "" +msgstr "Plataforma" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Biblioteca" +msgstr "Biblioteca Dinà mica" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Afegeix una entrada d'arquitectura" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7326,10 +7364,50 @@ msgstr "Configuració del GridMap" msgid "Pick Distance:" msgstr "Trieu la distà ncia:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "S'està generant la solució..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "S'està generant el projecte en C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "No s'ha pogut crear la solució." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "No s'ha pogut desar la solució." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Fet" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "No s'ha pogut crear el projecte en C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Crea una solució en C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Muntatges" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Munta el Projecte" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avisos" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7690,24 +7768,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "Executa l'HTML exportat en el navegador per defecte." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "No s'ha pogut escriure el fitxer:\n" +msgid "Could not write file:" +msgstr "No s'ha pogut escriure el fitxer:" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" +msgstr "No es pot obrir la plantilla per exportar:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "No es pot obrir la plantilla d'exportació:\n" +msgid "Invalid export template:" +msgstr "Plantilla d'exportació no và lida:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Plantilla d'exportació no và lida:\n" +msgid "Could not read custom HTML shell:" +msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:\n" +msgid "Could not read boot splash image file:" +msgstr "No es pot llegir la imatge de presentació:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "No es pot llegir l'imatge per a la pantalla de presentació:\n" +msgid "Using default boot splash image." +msgstr "Utilitzant la imatge de presentació per defecte." #: scene/2d/animated_sprite.cpp msgid "" @@ -7726,6 +7808,17 @@ msgstr "" "Només es permet un sol CanvasModulate per escena (o conjunt d'escenes " "instanciades). El primer funcionarà , mentre que la resta seran ignorats." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"En no disposar de cap fill del tipus Shape, aquest node no pot interactuar " +"amb l'espai.\n" +"Considereu afegir-hi nodes fill del tipus CollisionShape2D o " +"CollisionPolygon2D per definir-ne la forma." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7816,7 +7909,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7867,23 +7960,31 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "El node ARVROrigin requreix un node Fill del tipus ARVRCamera" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "S'està n traçant les Malles" +msgstr "S'està n traçant les Malles: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "S'està n traçant les Malles" +msgstr "S'està traçant l'Il·luminació:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "S'està finalitzant el Traçat" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "S'està n traçant les Malles" +msgstr "Il·luminant les Malles: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"En no disposar de cap fill del tipus Shape, aquest node no pot interactuar " +"amb l'espai.\n" +"Considereu afegir-hi nodes fill del tipus CollisionShape2D o " +"CollisionPolygon2D per definir-ne la forma." #: scene/3d/collision_polygon.cpp msgid "" @@ -7942,8 +8043,8 @@ msgstr "Res és visible perquè no s'ha assignat cap Malla a cap pas de Dibuix." #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "El motor de fÃsiques sobreescriurà els canvis en la mida dels nodes " @@ -8024,11 +8125,11 @@ msgstr "(Altres)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "No es pot carregar l'Entorn per Defecte especificat en la Configuració del " -"Projecte (Renderització->Visualització->Entorn Per Defecte)." +"Projecte (Renderització->Entorn->Entorn Per Defecte)." #: scene/main/viewport.cpp msgid "" @@ -8058,6 +8159,40 @@ msgstr "Error carregant lletra." msgid "Invalid font size." msgstr "La mida de la lletra no és và lida." +#~ msgid "Next" +#~ msgstr "Següent" + +#~ msgid "Not found!" +#~ msgstr "No s'ha trobat!" + +#~ msgid "Replace By" +#~ msgstr "Reemplaça per" + +#~ msgid "Case Sensitive" +#~ msgstr "Majúscules i minúscules" + +#~ msgid "Backwards" +#~ msgstr "Enrere" + +#~ msgid "Prompt On Replace" +#~ msgstr "Indica en reemplaçar" + +#~ msgid "Skip" +#~ msgstr "Omet" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "El projecte es crearà en un directori ja existent (Si s'escau, creeu un " +#~ "directori nou)." + +#~ msgid "That's a BINGO!" +#~ msgstr "BINGO!" + +#~ msgid "preview" +#~ msgstr "Previsualització" + #~ msgid "Move Add Key" #~ msgstr "Mou o Afegeix una Clau" @@ -8407,9 +8542,6 @@ msgstr "La mida de la lletra no és và lida." #~ msgid "Import Anyway" #~ msgstr "Importa Igualment" -#~ msgid "Import & Open" -#~ msgstr "Importa i Obre" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "No s'ha desat l'escena editada. Vol obrir l'escena importada igualment?" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index 5cf6103dcc..ce645b139b 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -6,21 +6,22 @@ # Fadex <vitekpaulik@gmail.com>, 2017. # Jan 'spl!te' KondelÃk <j.kondelik@centrum.cz>, 2016. # Jiri Hysek <contact@jirihysek.com>, 2017. -# LudÄ›k Novotný <gladosicek@gmail.com>, 2016. +# LudÄ›k Novotný <gladosicek@gmail.com>, 2016, 2018. # Martin Novák <maidx@seznam.cz>, 2017. +# zxey <r.hozak@seznam.cz>, 2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-09 19:45+0000\n" -"Last-Translator: Martin Novák <maidx@seznam.cz>\n" +"PO-Revision-Date: 2018-01-24 12:07+0000\n" +"Last-Translator: zxey <r.hozak@seznam.cz>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -203,8 +204,7 @@ msgstr "VytvoÅ™it %d NOVÃCH stop a vložit klÃÄe?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "VytvoÅ™it" @@ -338,7 +338,7 @@ msgstr "Odstranit neplatné klÃÄe" #: editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "Odstranit nevyÅ™eÅ¡ené a prázdné stopy" +msgstr "Odstranit neurÄené a prázdné stopy" #: editor/animation_editor.cpp msgid "Clean-up all animations" @@ -381,14 +381,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Nahrazeno %d výskytů." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Nahradit" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Nahradit vÅ¡echny" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "RozliÅ¡ovat malá/velká" @@ -397,48 +389,16 @@ msgid "Whole Words" msgstr "Celá slova" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Pouze výbÄ›r" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Hledat" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "NajÃt" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "DalÅ¡Ã" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Nenalezeno!" - -#: editor/code_editor.cpp -msgid "Replace By" +msgid "Replace" msgstr "Nahradit" #: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "RozliÅ¡ovat velká a malá pÃsmena" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Pozpátku" - -#: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Potvrzovat nahrazenÃ" +msgid "Replace All" +msgstr "Nahradit vÅ¡echny" #: editor/code_editor.cpp -msgid "Skip" -msgstr "PÅ™eskoÄit" +msgid "Selection Only" +msgstr "Pouze výbÄ›r" #: editor/code_editor.cpp msgid "Zoom In" @@ -540,9 +500,8 @@ msgid "Connecting Signal:" msgstr "PÅ™ipojuji signál:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "PÅ™ipojit '%s' k '%s'" +msgstr "Odpojit '%s' od '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -558,9 +517,17 @@ msgid "Signals" msgstr "Signály" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "ZmÄ›nit typ %d" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "ZmÄ›nit" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "VytvoÅ™it nový" +msgstr "VytvoÅ™it nový %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -670,8 +637,8 @@ msgstr "" "PÅ™esto je chcete smazat? (nelze vrátit zpÄ›t)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Nelze odstranit:\n" +msgid "Cannot remove:" +msgstr "Nelze odstranit:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -746,17 +713,16 @@ msgid "Godot Engine contributors" msgstr "PÅ™ispÃvajÃcà do Godot Enginu" #: editor/editor_about.cpp -#, fuzzy msgid "Project Founders" -msgstr "Nastavenà projektu" +msgstr "Zakladatelé projektu" #: editor/editor_about.cpp msgid "Lead Developer" msgstr "Vedoucà vývojář" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Správce projektů" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Správce projektu " #: editor/editor_about.cpp msgid "Developers" @@ -815,14 +781,12 @@ msgstr "" "popisy autorských práv a s licenÄnÃmi podmÃnkami." #: editor/editor_about.cpp -#, fuzzy msgid "All Components" -msgstr "Spojité" +msgstr "VÅ¡echny komponenty" #: editor/editor_about.cpp -#, fuzzy msgid "Components" -msgstr "Spojité" +msgstr "Komponenty" #: editor/editor_about.cpp msgid "Licenses" @@ -846,7 +810,7 @@ msgid "Success!" msgstr "ÚspÄ›ch!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Instalovat" @@ -863,22 +827,20 @@ msgid "Add Effect" msgstr "PÅ™idat efekt" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Rename Audio Bus" -msgstr "PÅ™ejmenovat AutoLoad" +msgstr "PÅ™ejmenovat Audio Bus" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "ZmÄ›nit hodnotu pole" +msgstr "ZmÄ›nit hlasitost Audio Busu" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "" +msgstr "Hraje pouze tento Audio Bus" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "" +msgstr "Ztlumit tento Audio Bus" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" @@ -890,16 +852,15 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "" +msgstr "PÅ™idat Audio Bus efekt" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" -msgstr "" +msgstr "PÅ™esunout Bus efekt" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Delete Bus Effect" -msgstr "Smazat vybraný" +msgstr "Smazat Bus efekt" #: editor/editor_audio_buses.cpp msgid "Audio Bus, Drag and Drop to rearrange." @@ -907,11 +868,11 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Solo" -msgstr "" +msgstr "Solo" #: editor/editor_audio_buses.cpp msgid "Mute" -msgstr "" +msgstr "Ztlumit" #: editor/editor_audio_buses.cpp msgid "Bypass" @@ -919,77 +880,72 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Bus options" -msgstr "" +msgstr "Možnosti Busu" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Duplicate" -msgstr "" +msgstr "Duplikovat" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Reset Volume" -msgstr "Obnovit původnà pÅ™iblÞenÃ" +msgstr "Resetovat hlasitost" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Delete Effect" -msgstr "Smazat vybraný" +msgstr "Smazat efekt" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Zvuk" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" -msgstr "" +msgstr "PÅ™idat Audio Bus" #: editor/editor_audio_buses.cpp msgid "Master bus can't be deleted!" -msgstr "" +msgstr "Master bus nelze smazat!" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Delete Audio Bus" -msgstr "Optimalizovat animaci" +msgstr "Smazat Audio Bus" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Duplicate Audio Bus" -msgstr "Duplikovat výbÄ›r" +msgstr "Duplikovat Audio Bus" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Reset Bus Volume" -msgstr "Obnovit původnà pÅ™iblÞenÃ" +msgstr "Obnovit hlasitost Busu" #: editor/editor_audio_buses.cpp msgid "Move Audio Bus" -msgstr "" +msgstr "PÅ™esunout Audio Bus" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As.." -msgstr "" +msgstr "Uložit rozloženà Audio Busu jako.." #: editor/editor_audio_buses.cpp msgid "Location for New Layout.." -msgstr "" +msgstr "UmÃstÄ›nà pro nové rozloženÃ.." #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" -msgstr "" +msgstr "OtevÅ™Ãt rozloženà Audio Busu" #: editor/editor_audio_buses.cpp msgid "There is no 'res://default_bus_layout.tres' file." -msgstr "" +msgstr "Soubor 'res://default_bus_layout.tres' neexistuje." #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "" +msgstr "Neplatný soubor, neni to rozloženà Audio Busu." #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "" +msgstr "PÅ™idat bus" #: editor/editor_audio_buses.cpp msgid "Create a new Bus Layout." @@ -998,7 +954,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/property_editor.cpp #: editor/script_create_dialog.cpp msgid "Load" -msgstr "" +msgstr "NaÄÃst" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." @@ -1015,7 +971,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" -msgstr "" +msgstr "NaÄÃst výchozÃ" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." @@ -1107,31 +1063,31 @@ msgstr "Singleton" #: editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Aktualizuji scénu" #: editor/editor_data.cpp msgid "Storing local changes.." -msgstr "" +msgstr "Ukládám lokálnà zmÄ›ny.." #: editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "Aktualizuji scénu.." #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[prázdné]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[neuloženo]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" -msgstr "" +msgstr "Nejprve vyberte výchozà složku" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "" +msgstr "Vyberte složku" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp @@ -1152,45 +1108,43 @@ msgstr "Nelze vytvoÅ™it složku." #: editor/editor_dir_dialog.cpp msgid "Choose" -msgstr "" +msgstr "Vyberte" #: editor/editor_export.cpp msgid "Storing File:" -msgstr "" +msgstr "Ukládám soubor:" #: editor/editor_export.cpp msgid "Packing" -msgstr "" +msgstr "BalÃm" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "" +msgid "Template file not found:" +msgstr "Soubor Å¡ablony nenalezen:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" msgstr "Soubor už existuje. PÅ™epsat?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select Current Folder" -msgstr "VytvoÅ™it složku" +msgstr "Vybrat stávajÃcà složku" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" -msgstr "" +msgstr "KopÃrovat cestu" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Show In File Manager" -msgstr "" +msgstr "Ukázat ve správci souborů" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "New Folder.." -msgstr "VytvoÅ™it složku" +msgstr "Nová složka.." #: editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "" +msgstr "Obnovit" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" @@ -1228,44 +1182,45 @@ msgstr "Uložit soubor" #: editor/editor_file_dialog.cpp msgid "Go Back" -msgstr "" +msgstr "JÃt zpÄ›t" #: editor/editor_file_dialog.cpp msgid "Go Forward" -msgstr "" +msgstr "Jit dopÅ™edu" #: editor/editor_file_dialog.cpp msgid "Go Up" -msgstr "" +msgstr "JÃt o úroveň výš" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "" +msgstr "Zobrazit skryté soubory" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "" +msgstr "Zobrazit oblÃbené" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "" +msgstr "PÅ™epnout režim" #: editor/editor_file_dialog.cpp msgid "Focus Path" msgstr "" #: editor/editor_file_dialog.cpp +#, fuzzy msgid "Move Favorite Up" -msgstr "" +msgstr "PÅ™esunout oblÃbenou položku o úroveň výš" #: editor/editor_file_dialog.cpp +#, fuzzy msgid "Move Favorite Down" -msgstr "" +msgstr "PÅ™esunout oblÃbenou položku o úroveň nÞ" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Go to parent folder" -msgstr "Nelze vytvoÅ™it složku." +msgstr "JÃt na nadÅ™azenou složku" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" @@ -1273,7 +1228,7 @@ msgstr "Složky a soubory:" #: editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "" +msgstr "Náhled:" #: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp #: scene/gui/file_dialog.cpp @@ -1299,11 +1254,11 @@ msgstr "Prohledat nápovÄ›du" #: editor/editor_help.cpp msgid "Class List:" -msgstr "" +msgstr "Seznam tÅ™Ãd:" #: editor/editor_help.cpp msgid "Search Classes" -msgstr "" +msgstr "Hledat tÅ™Ãdy" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" @@ -1311,37 +1266,35 @@ msgstr "" #: editor/editor_help.cpp editor/property_editor.cpp msgid "Class:" -msgstr "" +msgstr "TÅ™Ãda:" #: editor/editor_help.cpp editor/scene_tree_editor.cpp msgid "Inherits:" -msgstr "" +msgstr "DÄ›dà z:" #: editor/editor_help.cpp msgid "Inherited by:" -msgstr "" +msgstr "DÄ›dÄ›ná z:" #: editor/editor_help.cpp msgid "Brief Description:" -msgstr "" +msgstr "StruÄný popis:" #: editor/editor_help.cpp -#, fuzzy msgid "Members" -msgstr "ÄŒlenové:" +msgstr "ÄŒlenové" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Members:" msgstr "ÄŒlenové:" #: editor/editor_help.cpp -#, fuzzy msgid "Public Methods" -msgstr "Vybrat vÅ¡e" +msgstr "VeÅ™ejné metody" #: editor/editor_help.cpp msgid "Public Methods:" -msgstr "" +msgstr "VeÅ™ejné metody:" #: editor/editor_help.cpp msgid "GUI Theme Items" @@ -1356,66 +1309,82 @@ msgid "Signals:" msgstr "Signály:" #: editor/editor_help.cpp -#, fuzzy msgid "Enumerations" -msgstr "Funkce:" +msgstr "VýÄty" #: editor/editor_help.cpp -#, fuzzy msgid "Enumerations:" -msgstr "Funkce:" +msgstr "VýÄty:" #: editor/editor_help.cpp msgid "enum " -msgstr "" +msgstr "výÄet " #: editor/editor_help.cpp -#, fuzzy msgid "Constants" -msgstr "KonstantnÃ" +msgstr "Konstanty" #: editor/editor_help.cpp msgid "Constants:" -msgstr "" +msgstr "Konstanty:" #: editor/editor_help.cpp -#, fuzzy msgid "Description" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "Popis" #: editor/editor_help.cpp -msgid "Properties" +msgid "Online Tutorials:" +msgstr "Online návody:" + +#: 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 "" +"V souÄasné dobÄ› pro tuto tÅ™Ãdu neexistujà žádné návody, můžete nÄ›jaký [color=" +"$color][url=$url]vytvoÅ™it[/url][/color] nebo o nÄ›j [color=$color][url=" +"$url2]zažádat[/url][/color]." + +#: editor/editor_help.cpp +msgid "Properties" +msgstr "Vlastnosti" #: editor/editor_help.cpp -#, fuzzy msgid "Property Description:" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "Popis vlastnosti:" #: 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 "" +"V souÄasné dobÄ› neexistuje žádný popis pro tuto vlastnost. ProsÃm pomozte " +"nám tÃm, že ho[color=$color][url=$url]vytvoÅ™Ãte[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Methods" -msgstr "Seznam metod:" +msgstr "Metody" #: editor/editor_help.cpp msgid "Method Description:" -msgstr "" +msgstr "Popis metody:" #: 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 "" +"V souÄasné dobÄ› neexistuje žádný popis pro tuto metodu. ProsÃm pomozte nám " +"tÃm, že ho [color=$color][url=$url]vytvoÅ™Ãte[/url][/color]!" #: editor/editor_help.cpp msgid "Search Text" -msgstr "" +msgstr "Prohledat text" + +#: editor/editor_help.cpp +msgid "Find" +msgstr "NajÃt" #: editor/editor_log.cpp msgid "Output:" @@ -1428,6 +1397,10 @@ msgstr "Výstup:" msgid "Clear" msgstr "VyÄistit" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Vymazat výstup" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1436,57 +1409,54 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." -msgstr "" +msgstr "Chápu.." #: editor/editor_node.cpp msgid "Can't open file for writing:" -msgstr "" +msgstr "Nelze otevÅ™Ãt soubor pro zápis:" #: editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "" +msgstr "Žádaný formát souboru je neznámý:" #: editor/editor_node.cpp msgid "Error while saving." -msgstr "" +msgstr "Chyba pÅ™i ukládánÃ." #: editor/editor_node.cpp -#, fuzzy msgid "Can't open '%s'." -msgstr "PÅ™ipojit.." +msgstr "Nelze otevÅ™Ãt '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "Error while parsing '%s'." -msgstr "Chyba nahrávánà fontu." +msgstr "Chyba pÅ™i parsovánà '%s'." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "" +msgstr "NeoÄekávaný konec souboru '%s'." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." -msgstr "" +msgstr "Chybà '%s' nebo jeho závislosti." #: editor/editor_node.cpp -#, fuzzy msgid "Error while loading '%s'." -msgstr "Chyba nahrávánà fontu." +msgstr "Chyba pÅ™i nahrávánà '%s'." #: editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "Ukládám scénu" #: editor/editor_node.cpp msgid "Analyzing" -msgstr "" +msgstr "Analyzuji" #: editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "" +msgstr "VytvářÃm náhled" #: editor/editor_node.cpp msgid "This operation can't be done without a tree root." @@ -1494,10 +1464,11 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "NepodaÅ™ilo se uložit scénu. NejspÃÅ¡e se nepodaÅ™ilo uspokojit závislosti " -"(instance)." +"(instance nebo dÄ›diÄnosti)." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1533,7 +1504,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "" +msgstr "Obnoveno výchozà rozloženà na základnà nastavenÃ." #: editor/editor_node.cpp msgid "" @@ -1571,19 +1542,19 @@ msgstr "" #: editor/editor_node.cpp msgid "Expand all properties" -msgstr "" +msgstr "Rozbalit vÅ¡echny vlastnosti" #: editor/editor_node.cpp msgid "Collapse all properties" -msgstr "" +msgstr "Sbalit vÅ¡echny vlastnosti" #: editor/editor_node.cpp msgid "Copy Params" -msgstr "" +msgstr "KopÃrovat parametry" #: editor/editor_node.cpp msgid "Paste Params" -msgstr "" +msgstr "Vložit parametry" #: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" @@ -1607,7 +1578,7 @@ msgstr "OtevÅ™Ãt v nápovÄ›dÄ›" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "Neexistuje žádná scéna pro spuÅ¡tÄ›nÃ." #: editor/editor_node.cpp msgid "" @@ -1632,11 +1603,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." -msgstr "" +msgstr "Aktuálnà scéna nebyla nikdy uložena, prosÃm uložte jà pÅ™ed spuÅ¡tÄ›nÃm." #: editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "" +msgstr "Nelze spustit podproces!" #: editor/editor_node.cpp msgid "Open Scene" @@ -1644,7 +1615,7 @@ msgstr "OtevÅ™Ãt scénu" #: editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "OtevÅ™Ãt základnà scénu" #: editor/editor_node.cpp msgid "Quick Open Scene.." @@ -1655,13 +1626,12 @@ msgid "Quick Open Script.." msgstr "Rychlé otevÅ™enà skriptu.." #: editor/editor_node.cpp -#, fuzzy msgid "Save & Close" -msgstr "Uložit soubor" +msgstr "Uložit a zavÅ™Ãt" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "" +msgstr "Uložit zmÄ›ny '%s' pÅ™ed zavÅ™enÃm?" #: editor/editor_node.cpp msgid "Save Scene As.." @@ -1669,23 +1639,23 @@ msgstr "Uložit scénu jako.." #: editor/editor_node.cpp msgid "No" -msgstr "" +msgstr "Ne" #: editor/editor_node.cpp msgid "Yes" -msgstr "" +msgstr "Ano" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "" +msgstr "Tato scéna nebyla nikdy uložena. Uložit pÅ™ed spuÅ¡tÄ›nÃm?" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "" +msgstr "Tato operace nemůže být provedena bez scény." #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "Exportovat Mesh Library" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -1693,7 +1663,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Export Tile Set" -msgstr "" +msgstr "Exportovat Tile Set" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." @@ -1701,27 +1671,27 @@ msgstr "" #: editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "" +msgstr "Aktuálnà scéna neuložena. PÅ™esto otevÅ™Ãt?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "" +msgstr "Nelze naÄÃst scénu, která nebyla nikdy uložena." #: editor/editor_node.cpp msgid "Revert" -msgstr "" +msgstr "Vrátit zpÄ›t" #: editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "" +msgstr "Tuto akci nelze vrátit zpÄ›t. PokraÄovat?" #: editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "" +msgstr "Rychlé spuÅ¡tÄ›nà scény..." #: editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "UkonÄit" #: editor/editor_node.cpp msgid "Exit the editor?" @@ -1729,43 +1699,45 @@ msgstr "UkonÄit editor?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "" +msgstr "OtevÅ™Ãt Správce projektu?" #: editor/editor_node.cpp -#, fuzzy msgid "Save & Quit" -msgstr "Uložit soubor" +msgstr "Uložit a ukonÄit" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" -msgstr "" +msgstr "Uložit zmÄ›ny následujÃcÃch scén pÅ™ed ukonÄenÃm?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" -msgstr "" +msgstr "Uložit zmÄ›ny následujÃcÃch scén pÅ™ed otevÅ™enÃm Správce projektu?" #: editor/editor_node.cpp msgid "" "This option is deprecated. Situations where refresh must be forced are now " "considered a bug. Please report." msgstr "" +"Tato možnost se již nepoužÃvá. Situace, kdy obnova musà být vynucena jsou " +"nynà považovány za chybu. ProsÃm nahlaÅ¡te." #: editor/editor_node.cpp msgid "Pick a Main Scene" -msgstr "" +msgstr "Vybrat hlavnà scénu" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." msgstr "" +"Nelze povolit rozÅ¡iÅ™ujÃcà plugin: '%s' parsovánà konfigurace se nezdaÅ™ilo." #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." msgstr "" +"Nelze najÃt záznam skriptu pro rozÅ¡iÅ™ujÃcà plugin v: 'res://addons/%s'." #: editor/editor_node.cpp -#, fuzzy msgid "Unable to load addon script from path: '%s'." -msgstr "Chyba nahrávánà fontu." +msgstr "Nelze naÄÃst skript rozÅ¡ÃÅ™enà z cesty: '%s'." #: editor/editor_node.cpp msgid "" @@ -1777,6 +1749,8 @@ msgstr "" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." msgstr "" +"Nelze naÄÃst skript rozÅ¡ÃÅ™enà z cesty: '%s'. Skript nenà v režimu nástroje " +"(tool)." #: editor/editor_node.cpp msgid "" @@ -1787,92 +1761,92 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Ugh" -msgstr "" +msgstr "Ups" #: 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 "" +"Chyba pÅ™i nahrávánà scény, musà být v cestÄ› projektu. POužijte 'Importovat' " +"k otevÅ™enà scény, pak ji uložte uvnitÅ™ projektu." #: editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "" +msgstr "Scéna '%s' má rozbité závislosti:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" -msgstr "" +msgstr "Vymazat nedávné scény" #: editor/editor_node.cpp msgid "Save Layout" -msgstr "" +msgstr "Uložit rozloženÃ" #: editor/editor_node.cpp msgid "Delete Layout" -msgstr "" +msgstr "Odstranit rozloženÃ" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp msgid "Default" -msgstr "" +msgstr "VýchozÃ" #: editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "" +msgstr "PÅ™epnout záložku scény" #: editor/editor_node.cpp msgid "%d more files or folders" -msgstr "" +msgstr "%d vÃce souborů nebo složek" #: editor/editor_node.cpp -#, fuzzy msgid "%d more folders" -msgstr "Nelze vytvoÅ™it složku." +msgstr "%d vÃce složek" #: editor/editor_node.cpp msgid "%d more files" -msgstr "" +msgstr "%d vÃce souborů" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "" +msgstr "Pozice doku" #: editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "" +msgstr "NerozptylujÃcà režim" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." -msgstr "" +msgstr "Zapnout nerozptylujÃcà režim." #: editor/editor_node.cpp -#, fuzzy msgid "Add a new scene." -msgstr "PÅ™idat nové stopy." +msgstr "PÅ™idat novou scénu." #: editor/editor_node.cpp msgid "Scene" -msgstr "" +msgstr "Scéna" #: editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "" +msgstr "PÅ™ejÃt na pÅ™edchozà scénu." #: editor/editor_node.cpp msgid "Next tab" -msgstr "" +msgstr "Dalšà záložka" #: editor/editor_node.cpp msgid "Previous tab" -msgstr "" +msgstr "PÅ™edchozà záložka" #: editor/editor_node.cpp msgid "Filter Files.." -msgstr "" +msgstr "Filtrovat soubory..." #: editor/editor_node.cpp msgid "Operations with scene files." -msgstr "" +msgstr "Možnostà scén." #: editor/editor_node.cpp msgid "New Scene" @@ -1892,7 +1866,7 @@ msgstr "Uložit scénu" #: editor/editor_node.cpp msgid "Save all Scenes" -msgstr "" +msgstr "Uložit vÅ¡echny scény" #: editor/editor_node.cpp msgid "Close Scene" @@ -1908,11 +1882,11 @@ msgstr "Konvertovat na.." #: editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "" +msgstr "MeshLibrary.." #: editor/editor_node.cpp msgid "TileSet.." -msgstr "" +msgstr "TileSet.." #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp @@ -1926,16 +1900,15 @@ msgstr "Znovu" #: editor/editor_node.cpp msgid "Revert Scene" -msgstr "" +msgstr "Vrátit scénu" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "" +msgstr "Různé nástroje pro projekt nebo scény." #: editor/editor_node.cpp -#, fuzzy msgid "Project" -msgstr "Nastavenà projektu" +msgstr "Projekt" #: editor/editor_node.cpp msgid "Project Settings" @@ -1947,11 +1920,11 @@ msgstr "Spustit skript" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export" -msgstr "" +msgstr "Exportovat" #: editor/editor_node.cpp msgid "Tools" -msgstr "" +msgstr "Nástroje" #: editor/editor_node.cpp msgid "Quit to Project List" @@ -1963,13 +1936,15 @@ msgstr "LadÄ›nÃ" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "" +msgstr "Nasazenà se vzdáleným ladÄ›nÃm" #: 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 "" +"PÅ™i exportu nebo nasazenÃ, se výsledný spustitelný soubor pokusà pÅ™ipojit k " +"IP tohoto poÄÃtaÄe, aby ho bylo možné ladit." #: editor/editor_node.cpp msgid "Small Deploy with Network FS" @@ -1984,6 +1959,11 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" +"Když je tato možnost povolena, export nebo nasazenà bude vytvářet minimálnà " +"spustitelný soubor.\n" +"Souborový systém bude poskytnut editorem projektu pÅ™es sÃt.\n" +"Pro nasazenà na Android bude použÃt USB kabel pro dosaženà vyššÃho výkonu. " +"Tato možnost urychluje testovánà objemných her." #: editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -2007,7 +1987,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Synchronizovat zmÄ›ny scény" #: editor/editor_node.cpp msgid "" @@ -2016,10 +1996,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Když je zapnuta tato možnost, vÅ¡echny zmÄ›ny provedené ve scénÄ› v editoru " +"budou replikovány v běžÃcà hÅ™e.\n" +"PÅ™i použità se vzdáleným spuÅ¡tÄ›nÃm je toto vÃce efektivnà pÅ™i použità " +"sÃÅ¥ového souborového systému." #: editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "" +msgstr "Synchornizace zmÄ›n skriptu" #: editor/editor_node.cpp msgid "" @@ -2028,6 +2012,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Když je zapnuta tato volba, jakýkoliv skript, který je uložen bude znovu " +"nahrán do spuÅ¡tÄ›né hry.\n" +"PÅ™i použità se vzdáleným spuÅ¡tÄ›nÃm je toto vÃce efektivnà pÅ™i použità " +"sÃÅ¥ového souborového systému." #: editor/editor_node.cpp msgid "Editor" @@ -2055,19 +2043,27 @@ msgstr "NápovÄ›da" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Classes" -msgstr "" +msgstr "TÅ™Ãdy" + +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Hledat" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" -msgstr "" +msgstr "Online dokumentace" #: editor/editor_node.cpp msgid "Q&A" -msgstr "" +msgstr "Q&A" #: editor/editor_node.cpp +#, fuzzy msgid "Issue Tracker" -msgstr "" +msgstr "Správa chyb" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -2075,68 +2071,67 @@ msgstr "Komunita" #: editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "O aplikaci" #: editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "Spustit projekt." #: editor/editor_node.cpp msgid "Play" -msgstr "" +msgstr "Spustit" #: editor/editor_node.cpp msgid "Pause the scene" -msgstr "" +msgstr "Pozastavit scénu" #: editor/editor_node.cpp msgid "Pause Scene" -msgstr "" +msgstr "Pozastavit scénu" #: editor/editor_node.cpp msgid "Stop the scene." -msgstr "" +msgstr "Zastavit scénu." #: editor/editor_node.cpp msgid "Stop" -msgstr "" +msgstr "Zastavit" #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "" +msgstr "Spustit upravenou scénu." #: editor/editor_node.cpp msgid "Play Scene" -msgstr "" +msgstr "Spustit scénu" #: editor/editor_node.cpp msgid "Play custom scene" msgstr "PÅ™ehrát vlastnà scénu" #: editor/editor_node.cpp -#, fuzzy msgid "Play Custom Scene" msgstr "PÅ™ehrát vlastnà scénu" #: editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "" +msgstr "ToÄà se, když se okno pÅ™ekresluje!" #: editor/editor_node.cpp msgid "Update Always" -msgstr "" +msgstr "Aktualizovat vždy" #: editor/editor_node.cpp msgid "Update Changes" -msgstr "" +msgstr "Akualizovat zmÄ›ny" #: editor/editor_node.cpp msgid "Disable Update Spinner" -msgstr "" +msgstr "Vypnout aktualizaÄnà koleÄko" #: editor/editor_node.cpp msgid "Inspector" -msgstr "" +msgstr "Inspektor" #: editor/editor_node.cpp msgid "Create a new resource in memory and edit it." @@ -2152,7 +2147,7 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "" +msgstr "Uložit jako.." #: editor/editor_node.cpp msgid "Go to the previous edited object in history." @@ -2164,20 +2159,20 @@ msgstr "" #: editor/editor_node.cpp msgid "History of recently edited objects." -msgstr "" +msgstr "Historie naposledy upravených objektů." #: editor/editor_node.cpp msgid "Object properties." -msgstr "" +msgstr "Vlastnosti objektu." #: editor/editor_node.cpp msgid "Changes may be lost!" -msgstr "" +msgstr "ZmÄ›ny mohou být ztraceny!" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "Importovat" #: editor/editor_node.cpp msgid "Node" @@ -2185,7 +2180,7 @@ msgstr "" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "Souborový systém" #: editor/editor_node.cpp msgid "Output" @@ -2193,7 +2188,7 @@ msgstr "Výstup" #: editor/editor_node.cpp msgid "Don't Save" -msgstr "" +msgstr "Neukládat" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" @@ -2201,63 +2196,59 @@ msgstr "Importovat Å¡ablony ze ZIP souboru" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" -msgstr "" +msgstr "Exportovat projekt" #: editor/editor_node.cpp msgid "Export Library" -msgstr "" +msgstr "Exportovat knihovnu" #: editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "SlouÄit s existujÃcÃ" #: editor/editor_node.cpp msgid "Password:" -msgstr "" +msgstr "Heslo:" #: editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "" +msgstr "OtevÅ™Ãt a spustit skript" #: editor/editor_node.cpp msgid "New Inherited" -msgstr "" +msgstr "Nové zdÄ›dÄ›né" #: editor/editor_node.cpp msgid "Load Errors" -msgstr "" +msgstr "NaÄÃst chyby" #: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp msgid "Select" -msgstr "" +msgstr "Vybrat" #: editor/editor_node.cpp -#, fuzzy msgid "Open 2D Editor" -msgstr "OtevÅ™Ãt složku" +msgstr "OtevÅ™Ãt 2D editor" #: editor/editor_node.cpp -#, fuzzy msgid "Open 3D Editor" -msgstr "OtevÅ™Ãt složku" +msgstr "OtevÅ™Ãt 3D editor" #: editor/editor_node.cpp -#, fuzzy msgid "Open Script Editor" -msgstr "Editor závislostÃ" +msgstr "OtevÅ™Ãt editor skriptů" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "Open the next Editor" -msgstr "Editor závislostÃ" +msgstr "OtevÅ™Ãt dalšà editor" #: editor/editor_node.cpp msgid "Open the previous Editor" -msgstr "" +msgstr "OtevÅ™Ãt pÅ™edchozà editor" #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -2265,60 +2256,62 @@ msgstr "" #: editor/editor_plugin.cpp msgid "Thumbnail.." -msgstr "" +msgstr "Náhled.." #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "" +msgstr "Nainstalované pluginy:" #: editor/editor_plugin_settings.cpp msgid "Update" -msgstr "" +msgstr "Aktualizovat" #: editor/editor_plugin_settings.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Version:" -msgstr "" +msgstr "Verze:" #: editor/editor_plugin_settings.cpp msgid "Author:" -msgstr "" +msgstr "Autor:" #: editor/editor_plugin_settings.cpp msgid "Status:" -msgstr "" +msgstr "Stav:" #: editor/editor_profiler.cpp msgid "Stop Profiling" -msgstr "" +msgstr "Zastavit profilovánÃ" #: editor/editor_profiler.cpp msgid "Start Profiling" -msgstr "" +msgstr "Spustit profilovánÃ" #: editor/editor_profiler.cpp msgid "Measure:" -msgstr "" +msgstr "MěřenÃ:" #: editor/editor_profiler.cpp msgid "Frame Time (sec)" -msgstr "" +msgstr "ÄŒas snÃmku (sek.)" #: editor/editor_profiler.cpp msgid "Average Time (sec)" -msgstr "" +msgstr "PrůmÄ›rný Äas (sek.)" #: editor/editor_profiler.cpp +#, fuzzy msgid "Frame %" -msgstr "" +msgstr "% snÃmku" #: editor/editor_profiler.cpp +#, fuzzy msgid "Physics Frame %" -msgstr "" +msgstr "% fyzikálnÃho snÃmku" #: editor/editor_profiler.cpp editor/script_editor_debugger.cpp msgid "Time:" -msgstr "" +msgstr "ÄŒas:" #: editor/editor_profiler.cpp msgid "Inclusive" @@ -2329,43 +2322,46 @@ msgid "Self" msgstr "" #: editor/editor_profiler.cpp +#, fuzzy msgid "Frame #:" -msgstr "" +msgstr "SnÃmek Ä.:" #: editor/editor_profiler.cpp msgid "Time" -msgstr "" +msgstr "ÄŒas" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Zavolat" +msgstr "VolánÃ" #: editor/editor_run_native.cpp msgid "Select device from the list" -msgstr "" +msgstr "Vyberte zaÅ™Ãzenà ze seznamu" #: 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 "" +"Nenalezen žádný spustitelný preset pro export pro tuto platformu.\n" +"rosÃm pÅ™idejte spustitelný preset v menu exportu." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "" +msgstr "NapiÅ¡te svůj kód v _run() metodÄ›." #: editor/editor_run_script.cpp +#, fuzzy msgid "There is an edited scene already." -msgstr "" +msgstr "NÄ›jaka scéna už je upravována." #: editor/editor_run_script.cpp msgid "Couldn't instance script:" -msgstr "" +msgstr "NepodaÅ™ilo se instancovat skript:" #: editor/editor_run_script.cpp msgid "Did you forget the 'tool' keyword?" -msgstr "" +msgstr "NezapomnÄ›li jste na klÃÄové slovo 'tool'?" #: editor/editor_run_script.cpp msgid "Couldn't run script:" @@ -2443,8 +2439,8 @@ msgid "No version.txt found inside templates." msgstr "Nenalezena version.txt uvnitÅ™ Å¡ablon." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Chyba pÅ™i vytvářenà cesty pro Å¡ablony:\n" +msgid "Error creating path for templates:" +msgstr "Chyba pÅ™i vytvářenà cesty pro Å¡ablony:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2467,9 +2463,8 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Can't connect." -msgstr "PÅ™ipojit.." +msgstr "Nelze se pÅ™ipojit." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2478,9 +2473,8 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "Testované" +msgstr "Požadavek se nezdaÅ™il." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2493,28 +2487,25 @@ msgid "Failed:" msgstr "" #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't write file." -msgstr "Nelze vytvoÅ™it složku." +msgstr "Nelze zapsat soubor." #: editor/export_template_manager.cpp msgid "Download Complete." msgstr "" #: editor/export_template_manager.cpp -#, fuzzy msgid "Error requesting url: " -msgstr "Chyba nahrávánà fontu." +msgstr "Chyba požadavku o url: " #: editor/export_template_manager.cpp #, fuzzy msgid "Connecting to Mirror.." -msgstr "PÅ™ipojit.." +msgstr "PÅ™ipojuji se k mirroru.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Disconnected" -msgstr "Odpojit" +msgstr "Odpojeno" #: editor/export_template_manager.cpp msgid "Resolving" @@ -2526,35 +2517,30 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Connecting.." -msgstr "PÅ™ipojit.." +msgstr "PÅ™ipojuji.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" -msgstr "PÅ™ipojit.." +msgstr "Nelze se pÅ™ipojit" #: editor/export_template_manager.cpp #, fuzzy msgid "Connected" -msgstr "PÅ™ipojit" +msgstr "PÅ™ipojeno" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Requesting.." -msgstr "Testované" +msgstr "PosÃlá se žádost.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Downloading" -msgstr "Chyba pÅ™i naÄÃtánÃ:" +msgstr "Stahuji" #: editor/export_template_manager.cpp -#, fuzzy msgid "Connection Error" -msgstr "PÅ™ipojit.." +msgstr "Chyba pÅ™ipojenÃ" #: editor/export_template_manager.cpp msgid "SSL Handshake Error" @@ -2573,14 +2559,12 @@ msgid "Install From File" msgstr "" #: editor/export_template_manager.cpp -#, fuzzy msgid "Remove Template" -msgstr "Odstranit výbÄ›r" +msgstr "Odstranit Å¡ablonu" #: editor/export_template_manager.cpp -#, fuzzy msgid "Select template file" -msgstr "Odstranit vybrané soubory?" +msgstr "Vybrat soubor Å¡ablony" #: editor/export_template_manager.cpp msgid "Export Template Manager" @@ -2611,9 +2595,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2621,23 +2603,20 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error moving:\n" -msgstr "Chyba pÅ™i naÄÃtánÃ:" +msgid "Error moving:" +msgstr "Chyba pÅ™esouvánÃ:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Chyba pÅ™i naÄÃtánÃ:" +msgid "Error duplicating:" +msgstr "Chyba duplikovánÃ:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Unable to update dependencies:\n" -msgstr "Scénu se nepodaÅ™ilo naÄÃst kvůli chybÄ›jÃcÃm závislostem:" +msgid "Unable to update dependencies:" +msgstr "NepodaÅ™ilo se aktualizovat závisloti:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2652,27 +2631,24 @@ msgid "No name provided." msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Name contains invalid characters." -msgstr "Platné znaky:" +msgstr "Jméno obsahuje neplatné znaky." #: editor/filesystem_dock.cpp msgid "A file or folder with this name already exists." msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Renaming file:" -msgstr "PÅ™ejmenovat promÄ›nnou" +msgstr "PÅ™ejmenovávánà souboru:" #: editor/filesystem_dock.cpp msgid "Renaming folder:" msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "PÅ™ejmenovat promÄ›nnou" +msgstr "Duplikace souboru:" #: editor/filesystem_dock.cpp msgid "Duplicating folder:" @@ -2712,9 +2688,8 @@ msgid "View Owners.." msgstr "" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Animace: duplikovat klÃÄe" +msgstr "Duplikovat.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2845,21 +2820,20 @@ msgid "Clear Default for '%s'" msgstr "" #: editor/import_dock.cpp -#, fuzzy msgid " Files" -msgstr "Soubor:" +msgstr " Soubory" #: editor/import_dock.cpp msgid "Import As:" -msgstr "" +msgstr "Importovat jako:" #: editor/import_dock.cpp editor/property_editor.cpp msgid "Preset.." -msgstr "" +msgstr "Preset.." #: editor/import_dock.cpp msgid "Reimport" -msgstr "" +msgstr "Znovu importovat" #: editor/multi_node_edit.cpp msgid "MultiNode Set" @@ -2867,7 +2841,7 @@ msgstr "" #: editor/node_dock.cpp msgid "Groups" -msgstr "" +msgstr "Skupiny" #: editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." @@ -2913,7 +2887,7 @@ msgstr "" #: editor/plugins/abstract_polygon_2d_editor.cpp #, fuzzy msgid "Delete points" -msgstr "Odstranit" +msgstr "Odstranit body" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -2932,32 +2906,31 @@ msgid "Change Animation Name:" msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Delete Animation?" -msgstr "Optimalizovat animaci" +msgstr "Smazat animaci?" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Smazat animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "" +msgstr "Chyba: Neplatné jméno animace!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" -msgstr "" +msgstr "Chyba: Jméno animace už existuje!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "PÅ™ejmenovat animaci" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "" +msgstr "PÅ™idat animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" @@ -2969,15 +2942,15 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "" +msgstr "NaÄÃst animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "" +msgstr "Duplikovat animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" -msgstr "" +msgstr "ERROR: Nevybrána animace pro kopÃrovánÃ!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation resource on clipboard!" @@ -2985,15 +2958,15 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "" +msgstr "Vložená animace" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "" +msgstr "Vložit animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" -msgstr "" +msgstr "ERROR: Nevybrána animace pro úpravu!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -3005,15 +2978,15 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "" +msgstr "Zastavit pÅ™ehrávánà animace. (S)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "" +msgstr "PÅ™ehrát vybranou animaci od zaÄátku. (Shift+D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" -msgstr "" +msgstr "PÅ™ehrát vybranou animaci od vybrané pozice. (D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." @@ -3029,15 +3002,15 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load animation from disk." -msgstr "" +msgstr "NaÄÃst animaci z disku." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." -msgstr "" +msgstr "NaÄÃst animaci z disku." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" -msgstr "" +msgstr "Uložit vybranou animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -3053,11 +3026,11 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "" +msgstr "Nástroje pro animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Copy Animation" -msgstr "" +msgstr "KopÃrovat animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning" @@ -3070,36 +3043,37 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Directions" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "SmÄ›ry" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Past" -msgstr "Vložit" +msgstr "Minulý" #: editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy msgid "Future" -msgstr "" +msgstr "BudoucÃ" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" -msgstr "" +msgstr "Hloubka" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" -msgstr "" +msgstr "1 krok" #: editor/plugins/animation_player_editor_plugin.cpp msgid "2 steps" -msgstr "" +msgstr "2 kroky" #: editor/plugins/animation_player_editor_plugin.cpp msgid "3 steps" -msgstr "" +msgstr "3 kroky" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "" +msgstr "Pouze rozdÃly" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" @@ -3111,18 +3085,18 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "" +msgstr "VytvoÅ™it novou animaci" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "" +msgstr "Jméno animace:" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: editor/script_create_dialog.cpp msgid "Error!" -msgstr "" +msgstr "Chyba!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" @@ -3139,21 +3113,20 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Animation" -msgstr "" +msgstr "Animace" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "New name:" -msgstr "" +msgstr "Nové jméno:" #: editor/plugins/animation_tree_editor_plugin.cpp -#, fuzzy msgid "Edit Filters" -msgstr "Soubor:" +msgstr "Editovat filtry" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp msgid "Scale:" -msgstr "" +msgstr "ZvÄ›tÅ¡enÃ:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade In (s):" @@ -3185,24 +3158,26 @@ msgstr "" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Start!" -msgstr "" +msgstr "Start!" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp msgid "Amount:" -msgstr "" +msgstr "MnožstvÃ:" #: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy msgid "Blend:" -msgstr "" +msgstr "ProlÃnánÃ:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend 0:" -msgstr "" +msgstr "ProlÃnánà 0:" #: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy msgid "Blend 1:" -msgstr "" +msgstr "ProlÃnánà 1:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" @@ -3210,11 +3185,11 @@ msgstr "" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Current:" -msgstr "" +msgstr "AktuálnÃ:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Add Input" -msgstr "" +msgstr "PÅ™idat vstup" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Clear Auto-Advance" @@ -3226,15 +3201,15 @@ msgstr "" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" -msgstr "" +msgstr "Odstranit vstup" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation tree is valid." -msgstr "" +msgstr "Strom animace je platný." #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation tree is invalid." -msgstr "" +msgstr "Strom animace je neplatný." #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation Node" @@ -3274,7 +3249,7 @@ msgstr "" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." -msgstr "" +msgstr "Importovat animace.." #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" @@ -3282,62 +3257,65 @@ msgstr "" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Filters.." -msgstr "" +msgstr "Filtry.." + +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "PÅ™iblÞenà animace." #: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy msgid "Free" -msgstr "" +msgstr "Uvolnit" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Contents:" -msgstr "Spojité" +msgstr "Obsah:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "View Files" -msgstr "Soubor:" +msgstr "Zobrazit soubory" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't resolve hostname:" -msgstr "" +msgstr "Nelze pÅ™eložit název hostitele:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connection error, please try again." -msgstr "" +msgstr "Chyba pÅ™ipojenÃ, zkuste to prosÃm znovu." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Can't connect to host:" -msgstr "PÅ™ipojit k uzlu:" +msgstr "Nelze se pÅ™ipojit k hostiteli:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "No response from host:" -msgstr "" +msgstr "Žádná odpovÄ›Ä od hostitele:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, return code:" -msgstr "" +msgstr "Požadavek se nezdaÅ™il, návratový kód:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Request failed, too many redirects" -msgstr "" +msgstr "Požadavek se nezdaÅ™il, pÅ™ÃliÅ¡ mnoho pÅ™esmÄ›rovánÃ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Bad download hash, assuming file has been tampered with." -msgstr "" +msgstr "Å patný hash staženého souboru, soubor byl nejspÃÅ¡e zfalÅ¡ován." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Expected:" -msgstr "" +msgstr "OÄekáváno:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Got:" -msgstr "" +msgstr "Staženo:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed sha256 hash check" -msgstr "" +msgstr "Neúspěšná kontrola sha256 hashe" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" @@ -3345,28 +3323,27 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Fetching:" -msgstr "" +msgstr "Stahuji:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving.." -msgstr "" +msgstr "ZjišťovánÃ.." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Error making request" -msgstr "Chyba nahrávánà fontu." +msgstr "Chyba pÅ™i vytvářenà požadavku" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" -msgstr "" +msgstr "NeÄinný" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" -msgstr "" +msgstr "Opakovat" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" -msgstr "" +msgstr "Chyba pÅ™i stahovánÃ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" @@ -3374,19 +3351,19 @@ msgstr "" #: editor/plugins/asset_library_editor_plugin.cpp msgid "first" -msgstr "" +msgstr "prvnÃ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "prev" -msgstr "" +msgstr "pÅ™edchozÃ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "next" -msgstr "" +msgstr "následujÃcÃ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "last" -msgstr "" +msgstr "poslednÃ" #: editor/plugins/asset_library_editor_plugin.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -3396,7 +3373,7 @@ msgstr "VÅ¡echny" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp msgid "Plugins" -msgstr "" +msgstr "Pluginy" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Sort:" @@ -3449,16 +3426,18 @@ msgid "Failed creating lightmap images, make sure path is writable." msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp +#, fuzzy msgid "Bake Lightmaps" -msgstr "" +msgstr "Zapéct lightmapy" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" -msgstr "" +msgstr "Náhled" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "" +msgstr "Nastavenà pÅ™ichycovánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -3488,64 +3467,62 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move vertical guide" -msgstr "" +msgstr "PÅ™esunout svislé vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create new vertical guide" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "VytvoÅ™it nové svislé vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove vertical guide" -msgstr "Odstranit promÄ›nnou" +msgstr "Odstranit svislé vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move horizontal guide" -msgstr "" +msgstr "PÅ™esunout vodorovné vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create new horizontal guide" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "VytvoÅ™it nové vodorovné vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Remove horizontal guide" -msgstr "Odstranit neplatné klÃÄe" +msgstr "Odstranit vodorovné vodÃtko" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create new horizontal and vertical guides" -msgstr "" +msgstr "VytvoÅ™it nové vodorovné a svislé vodÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Edit IK Chain" -msgstr "" +msgstr "Upravit IK Å™etÄ›zec" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Anchors only" -msgstr "" +msgstr "Pouze kotvy" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Change Anchors and Margins" -msgstr "" +msgstr "Upravit kotvy a okraje" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors" -msgstr "" +msgstr "Upravit kotvy" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Select Mode" -msgstr "Vybrat vÅ¡e" +msgstr "Režim výbÄ›ru" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3565,11 +3542,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Mode" -msgstr "" +msgstr "Režim pÅ™esouvánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotate Mode" -msgstr "" +msgstr "Režim otáÄenÃ" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -3587,21 +3564,21 @@ msgid "Pan Mode" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggles snapping" -msgstr "PÅ™epnout breakpoint" +msgstr "PÅ™epnout pÅ™ichycovánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Snap" -msgstr "" +msgstr "PoužÃt pÅ™ichycovánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping options" -msgstr "" +msgstr "Možnosti pÅ™ichytávánÃ" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap to grid" -msgstr "" +msgstr "PÅ™ichytit k mřÞce" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" @@ -3609,7 +3586,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap..." -msgstr "" +msgstr "Nastavenà pÅ™ichytávánÃ..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" @@ -3684,28 +3661,30 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "" +msgstr "Zobrazit" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Show Grid" -msgstr "" +msgstr "Zobrazit mřÞku" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Show helpers" -msgstr "" +msgstr "Zobrazit pomocné" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show rulers" -msgstr "" +msgstr "Zobrazit pravÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show guides" -msgstr "" +msgstr "Zobrazit vodÃtka" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Center Selection" -msgstr "" +msgstr "Vycentrovat výbÄ›r" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" @@ -3713,15 +3692,17 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" -msgstr "" +msgstr "RozloženÃ" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Insert Keys" -msgstr "" +msgstr "Vložit klÃÄe" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Insert Key" -msgstr "" +msgstr "Vložit klÃÄ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" @@ -3729,11 +3710,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "" +msgstr "KopÃrovat pózu" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "" +msgstr "Vymazat pózu" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag pivot from mouse position" @@ -3754,31 +3735,33 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" -msgstr "" +msgstr "PÅ™idat %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Adding %s..." -msgstr "" +msgstr "PÅ™idávám %s..." + +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "" +msgid "Error instancing scene from %s" +msgstr "Chyba instancovánà scény z %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Change default type" -msgstr "ZmÄ›nit typ hodnot pole" +msgstr "ZmÄ›nit výchozà typ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -3810,11 +3793,11 @@ msgstr "" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import from Scene" -msgstr "" +msgstr "Importovat ze scény" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "Aktualizovat ze scény" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat0" @@ -3850,14 +3833,12 @@ msgid "Load Curve Preset" msgstr "" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Add point" -msgstr "PÅ™idat signál" +msgstr "PÅ™idat bod" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Remove point" -msgstr "Odstranit signál" +msgstr "Odstranit bod" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy @@ -3870,12 +3851,11 @@ msgstr "" #: editor/plugins/curve_editor_plugin.cpp msgid "Load preset" -msgstr "" +msgstr "NaÄÃst preset" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Remove Curve Point" -msgstr "Odstranit signál" +msgstr "Odstranit bod kÅ™ivky" #: editor/plugins/curve_editor_plugin.cpp msgid "Toggle Curve Linear Tangent" @@ -3904,7 +3884,7 @@ msgstr "" #: editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "" +msgstr "Položky" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" @@ -3926,23 +3906,23 @@ msgstr "" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Edit existing polygon:" -msgstr "" +msgstr "Upravit existujÃcà polygon:" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "LMB: Move Point." -msgstr "" +msgstr "LMB: PÅ™esunout bod." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "" +msgstr "Ctrl+LMB: RozdÄ›lit segment." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "RMB: Erase Point." -msgstr "" +msgstr "RMB: Vymazat bod." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "Mesh je prázdný!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" @@ -3986,23 +3966,23 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "MeshInstance nemá Mesh!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "" +msgstr "Mesh némá povrch z jakého vytvoÅ™it obrysy!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" -msgstr "" +msgstr "Nelze vytvoÅ™it obrys!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" -msgstr "" +msgstr "VytvoÅ™it obrys" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "" +msgstr "Mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" @@ -4025,26 +4005,26 @@ msgid "Create Outline Mesh.." msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Soubor:" +msgstr "Zobrazit UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Soubor:" +msgstr "Zobrazit UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Rozbalit UV2 pro Lightmapu/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Outline Mesh" -msgstr "" +msgstr "VytvoÅ™it mesh obrysu" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "" +msgstr "Velikost obrysu:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." @@ -4056,7 +4036,7 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "" +msgstr "Zdroj meshe je neplatný (neplatná cesta)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." @@ -4151,7 +4131,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4440,7 +4420,7 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "" +msgstr "VytvoÅ™it UV mapu" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -4452,7 +4432,7 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Point" -msgstr "" +msgstr "PÅ™esunout bod" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" @@ -4460,19 +4440,20 @@ msgstr "" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" -msgstr "" +msgstr "Shift: PÅ™esunout vÅ¡e" #: editor/plugins/polygon_2d_editor_plugin.cpp +#, fuzzy msgid "Shift+Ctrl: Scale" -msgstr "" +msgstr "Shift+Ctrl: ZvÄ›tÅ¡enÃ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Polygon" -msgstr "" +msgstr "PÅ™esunout polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Rotate Polygon" -msgstr "" +msgstr "OtoÄit polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Scale Polygon" @@ -4488,54 +4469,54 @@ msgstr "Upravit" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" -msgstr "" +msgstr "Polygon->UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV->Polygon" -msgstr "" +msgstr "UV->Polygon" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" -msgstr "" +msgstr "Vymazat UV" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap" -msgstr "" +msgstr "PÅ™ichytit" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Enable Snap" -msgstr "" +msgstr "Povolit pÅ™ichytávánÃ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid" -msgstr "" +msgstr "MřÞka" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" -msgstr "" +msgstr "Chyba: Nelze naÄÃst zdroj!" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Add Resource" -msgstr "" +msgstr "PÅ™idat zdroj" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Rename Resource" -msgstr "" +msgstr "PÅ™ejmenovat zdroj" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Delete Resource" -msgstr "" +msgstr "Smazat zdroj" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Resource clipboard is empty!" -msgstr "" +msgstr "Schránka zdroje je prázdná!" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Load Resource" -msgstr "" +msgstr "NaÄÃst zdroj" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -4544,80 +4525,82 @@ msgstr "" msgid "Paste" msgstr "Vložit" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "Zdroj" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" -msgstr "" +msgstr "Vymazat nedávné soubory" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" +msgid "Close and save changes?" +msgstr "ZavÅ™Ãt a uložit zmÄ›ny?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" -msgstr "" +msgstr "Chyba pÅ™i ukládánà motivu" #: editor/plugins/script_editor_plugin.cpp msgid "Error saving" -msgstr "" +msgstr "Chyba pÅ™i ukládánÃ" #: editor/plugins/script_editor_plugin.cpp msgid "Error importing theme" -msgstr "" +msgstr "Chyba pÅ™i importu motivu" #: editor/plugins/script_editor_plugin.cpp msgid "Error importing" -msgstr "" +msgstr "Chyba pÅ™i importu" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "" +msgstr "Importovat motiv" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As.." -msgstr "" +msgstr "Uložit motiv jako.." #: editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid " Class Reference" -msgstr "" +msgstr " ReferenÄnà tÅ™Ãdy" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Sort" -msgstr "Řadit:" +msgstr "SeÅ™adit" #: 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 "" +msgstr "PÅ™esunout nahoru" #: 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 "" +msgstr "PÅ™esunout dolů" #: editor/plugins/script_editor_plugin.cpp msgid "Next script" -msgstr "" +msgstr "Dalšà skript" #: editor/plugins/script_editor_plugin.cpp msgid "Previous script" -msgstr "" +msgstr "PÅ™edchozà skript" #: editor/plugins/script_editor_plugin.cpp msgid "File" -msgstr "" +msgstr "Soubor" #: editor/plugins/script_editor_plugin.cpp msgid "New" -msgstr "" +msgstr "Nový" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "" +msgstr "Uložit vÅ¡e" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" @@ -4629,41 +4612,44 @@ msgid "Copy Script Path" msgstr "ZkopÃrovat uzly" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Zobrazit v systému souborů" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" -msgstr "" +msgstr "Historie pÅ™edchozÃ" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" -msgstr "" +msgstr "Historie dalÅ¡Ã" #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "" +msgstr "Znovu naÄÃst motiv" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" -msgstr "" +msgstr "Uložit motiv" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As" -msgstr "" +msgstr "Uložit motiv jako" #: editor/plugins/script_editor_plugin.cpp msgid "Close Docs" -msgstr "" +msgstr "ZavÅ™Ãt dokumentaci" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close All" -msgstr "ZavÅ™Ãt" +msgstr "ZavÅ™Ãt vÅ¡e" #: editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" -msgstr "" +msgstr "ZavÅ™Ãt ostatnà záložky" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" -msgstr "" +msgstr "Spustit" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" @@ -4672,20 +4658,21 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find.." -msgstr "" +msgstr "NajÃt.." #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Next" -msgstr "" +msgstr "NajÃt dalÅ¡Ã" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Over" -msgstr "" +msgstr "PÅ™eskoÄit" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp +#, fuzzy msgid "Step Into" -msgstr "" +msgstr "Vstoupit" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" @@ -4694,45 +4681,43 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp #: editor/script_editor_debugger.cpp msgid "Continue" -msgstr "" +msgstr "PokraÄovat" #: editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" msgstr "" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with external editor" -msgstr "Editor závislostÃ" +msgstr "Debugovat externÃm editorem" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" -msgstr "" +msgstr "OtevÅ™Ãt Godot online dokumentaci" #: editor/plugins/script_editor_plugin.cpp msgid "Search the class hierarchy." -msgstr "" +msgstr "Hledat v hierarchii tÅ™Ãd." #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." -msgstr "" +msgstr "Hledat v referenÄnà dokumentaci." #: editor/plugins/script_editor_plugin.cpp msgid "Go to previous edited document." -msgstr "" +msgstr "PÅ™ejÃt na pÅ™edchozà upravovaný dokument." #: editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "" +msgstr "PÅ™ejÃt na dalšà upravovaný dokument." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Discard" -msgstr "DiskrétnÃ" +msgstr "Zahodit" #: editor/plugins/script_editor_plugin.cpp msgid "Create Script" -msgstr "" +msgstr "VytvoÅ™it skript" #: editor/plugins/script_editor_plugin.cpp msgid "" @@ -4742,20 +4727,21 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp msgid "Reload" -msgstr "" +msgstr "Znovu naÄÃst" #: editor/plugins/script_editor_plugin.cpp msgid "Resave" -msgstr "" +msgstr "Znovu uložit" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" -msgstr "" +msgstr "Ladicà program" #: editor/plugins/script_editor_plugin.cpp msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +"VestavÄ›né skripty lze editovat pouze pokud scéna, které náležÃ, je naÄtená" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." @@ -4763,23 +4749,24 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" -msgstr "" +msgstr "Vyberte barvu" #: editor/plugins/script_text_editor.cpp +#, fuzzy msgid "Convert Case" -msgstr "" +msgstr "PÅ™evest pÃsmena" #: editor/plugins/script_text_editor.cpp msgid "Uppercase" -msgstr "" +msgstr "Velká pÃsmena" #: editor/plugins/script_text_editor.cpp msgid "Lowercase" -msgstr "" +msgstr "Malá pÃsmena" #: editor/plugins/script_text_editor.cpp msgid "Capitalize" -msgstr "" +msgstr "Velká pÃsmena" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -4798,17 +4785,16 @@ msgid "Select All" msgstr "Vybrat vÅ¡e" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Delete Line" -msgstr "Odstranit" +msgstr "Odstranit řádek" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "" +msgstr "Odsadit zleva" #: editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "" +msgstr "Odsadit zprava" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" @@ -4825,11 +4811,11 @@ msgstr "Běž na řádek" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" -msgstr "" +msgstr "Složit vÅ¡echny řádky" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "" +msgstr "Rozložit vÅ¡echny řádky" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" @@ -4837,19 +4823,19 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" -msgstr "" +msgstr "Osekat koncové mezery" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent To Spaces" -msgstr "" +msgstr "PÅ™evést odsazenà na mezery" #: editor/plugins/script_text_editor.cpp msgid "Convert Indent To Tabs" -msgstr "" +msgstr "PÅ™evést odsazenà na taby" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" -msgstr "" +msgstr "Automatické odsazenÃ" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -4858,15 +4844,15 @@ msgstr "PÅ™epnout breakpoint" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "" +msgstr "Odstranit vÅ¡echny breakpointy" #: editor/plugins/script_text_editor.cpp msgid "Goto Next Breakpoint" -msgstr "" +msgstr "PÅ™ejÃt na dalšà breakpoint" #: editor/plugins/script_text_editor.cpp msgid "Goto Previous Breakpoint" -msgstr "" +msgstr "PÅ™ejÃt na pÅ™edchozà breakpoint" #: editor/plugins/script_text_editor.cpp msgid "Convert To Uppercase" @@ -4878,31 +4864,31 @@ msgstr "Konvertovat na malá pÃsmena" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "" +msgstr "NajÃt pÅ™edchozÃ" #: editor/plugins/script_text_editor.cpp msgid "Replace.." -msgstr "" +msgstr "Nahradit.." #: editor/plugins/script_text_editor.cpp msgid "Goto Function.." -msgstr "" +msgstr "PÅ™ejÃt na funkci.." #: editor/plugins/script_text_editor.cpp msgid "Goto Line.." -msgstr "" +msgstr "PÅ™ejÃt na řádek.." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "" +msgstr "Kontextová nápovÄ›da" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" -msgstr "" +msgstr "Shader" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Constant" -msgstr "" +msgstr "ZmÄ›nit skalárnà konstantu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Constant" @@ -4910,11 +4896,11 @@ msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change RGB Constant" -msgstr "" +msgstr "ZmÄ›na RGB konstanty" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Operator" -msgstr "" +msgstr "ZmÄ›nit skalárnà operátor" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Operator" @@ -4926,7 +4912,7 @@ msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change RGB Operator" -msgstr "" +msgstr "ZmÄ›nit RGB operátor" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Toggle Rot Only" @@ -4934,7 +4920,7 @@ msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Function" -msgstr "" +msgstr "ZmÄ›nit skalárnà funkci" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Function" @@ -4954,7 +4940,7 @@ msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Default Value" -msgstr "" +msgstr "ZmÄ›nit výchozà hodnotu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change XForm Uniform" @@ -4970,7 +4956,7 @@ msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Comment" -msgstr "" +msgstr "ZmÄ›nit komentář" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Add/Remove to Color Ramp" @@ -4982,19 +4968,19 @@ msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Modify Curve Map" -msgstr "" +msgstr "Upravit mapu kÅ™ivky" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Input Name" -msgstr "" +msgstr "ZmÄ›nit název vstupu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Connect Graph Nodes" -msgstr "" +msgstr "Propojit uzly grafu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Disconnect Graph Nodes" -msgstr "" +msgstr "Odpojit uzly grafu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Remove Shader Graph Node" @@ -5026,11 +5012,11 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" -msgstr "" +msgstr "OrtogonálnÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective" -msgstr "" +msgstr "PerspektivnÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Aborted." @@ -5063,101 +5049,105 @@ msgstr "PÅ™echod" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "" +msgstr "Rotuji %s stupňů." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "" +msgid "Objects Drawn" +msgstr "Objekty vykreslené" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "" +msgid "Material Changes" +msgstr "ZmÄ›ny materiálu" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +msgid "Shader Changes" +msgstr "ZmÄ›ny shaderu" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "" +msgid "Surface Changes" +msgstr "ZmÄ›ny povrchu" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "" +msgid "Draw Calls" +msgstr "Vykreslovacà volánÃ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "" +#, fuzzy +msgid "Vertices" +msgstr "Vertexy" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "" +msgid "Top View." +msgstr "Pohled shora." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "" +msgid "Bottom View." +msgstr "Pohled zdola." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "" +msgid "Bottom" +msgstr "DolnÃ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "" +msgid "Left View." +msgstr "Pohled zleva." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "" +msgid "Left" +msgstr "Levý" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "" +msgid "Right View." +msgstr "Pohled zprava." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "ZmÄ›nit" +msgid "Right" +msgstr "Pravý" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "" +msgid "Front View." +msgstr "ÄŒelnà pohled." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "" +msgid "Front" +msgstr "PÅ™ednÃ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "" +msgid "Rear View." +msgstr "Pohled zezadu." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "" +msgid "Rear" +msgstr "ZadnÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" -msgstr "" +msgstr "Zarovnat s výhledem" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "OK :(" -msgstr "" +msgstr "OK :(" #: 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 "Tato operace vyžaduje jeden vybraný uzel." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "" @@ -5175,8 +5165,9 @@ msgid "Display Unshaded" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "View Environment" -msgstr "" +msgstr "Zobrazenà prostÅ™edÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" @@ -5184,17 +5175,15 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" -msgstr "" +msgstr "Zobrazit informace" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View FPS" -msgstr "Soubor:" +msgstr "Zobrazit FPS" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Half Resolution" -msgstr "ZmÄ›nit měřÃtko výbÄ›ru" +msgstr "PoloviÄnà rozliÅ¡enÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" @@ -5207,45 +5196,39 @@ msgstr "Povolit" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" -msgstr "" +msgstr "Volný pohled doleva" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Right" -msgstr "" +msgstr "Volný pohled doprava" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Forward" -msgstr "" +msgstr "Volný pohled vpÅ™ed" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Backwards" -msgstr "" +msgstr "Volný pohled dozadu" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Up" -msgstr "" +msgstr "Volný pohled nahoru" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Freelook Down" -msgstr "KoleÄko dolů." +msgstr "Volný pohled dolů" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" +msgstr "Rychlost volného pohledu" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Select Mode (Q)\n" -msgstr "Vybrat vÅ¡e" +msgid "Select Mode (Q)" +msgstr "Režim výbÄ›ru (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5256,56 +5239,55 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode (W)" -msgstr "" +msgstr "Režim posunu (W)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode (E)" -msgstr "" +msgstr "Režim otáÄenà (E)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode (R)" -msgstr "" +msgstr "Režim zvÄ›tÅ¡ovánà (R)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" -msgstr "" +msgstr "MÃstnà souÅ™adnice" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Space Mode (%s)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Vybrat vÅ¡e" +msgstr "Režim pÅ™ichycenà (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "" +msgstr "Pohled zdola" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "" +msgstr "Pohled shora" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "" +msgstr "Pohled zezadu" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "" +msgstr "Pohled zepÅ™edu" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View" -msgstr "" +msgstr "Pohled zleva" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View" -msgstr "" +msgstr "Pohled zprava" #: editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal view" -msgstr "" +msgstr "PÅ™epnout perspektivnÃ/ortogonálnà pohled" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" @@ -5324,26 +5306,24 @@ msgid "Align Selection With View" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Tool Select" -msgstr "VÅ¡echny vybrané" +msgstr "Nástroj VýbÄ›r" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Move" -msgstr "" +msgstr "Nástroj PÅ™esunout" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Rotate" -msgstr "" +msgstr "Nástroj OtoÄit" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Scale" -msgstr "" +msgstr "Nástroj ZvÄ›tÅ¡enÃ" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Toggle Freelook" -msgstr "PÅ™epnout breakpoint" +msgstr "PÅ™epnout volný pohled" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform" @@ -5351,7 +5331,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." -msgstr "" +msgstr "Nastavit pÅ™ichycenÃ.." #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog.." @@ -5392,7 +5372,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Settings" -msgstr "" +msgstr "NastavenÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" @@ -5400,7 +5380,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" -msgstr "" +msgstr "Nastavenà pÅ™ichycenÃ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" @@ -5408,19 +5388,20 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "" +msgstr "PÅ™ichycenà rotaze (stupnÄ›):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "" +msgstr "PÅ™ichycenà zvÄ›tÅ¡enà (%):" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "Viewport Settings" -msgstr "" +msgstr "Nastavenà viewportu" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" -msgstr "" +msgstr "Perspektivnà FOV (stupnÄ›):" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" @@ -5523,10 +5504,18 @@ msgstr "ZkopÃrovat uzly" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5552,14 +5541,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5594,9 +5586,8 @@ msgid "Remove All Items" msgstr "Odstranit výbÄ›r" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Remove All" -msgstr "Odebrat" +msgstr "Odebrat vÅ¡e" #: editor/plugins/theme_editor_plugin.cpp msgid "Edit theme.." @@ -5699,6 +5690,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5802,6 +5797,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "VytvoÅ™it složku" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "ZruÅ¡it" @@ -5817,9 +5837,8 @@ msgid "Delete patch '%s' from list?" msgstr "Odstranit" #: editor/project_export.cpp -#, fuzzy msgid "Delete preset '%s'?" -msgstr "Odstranit vybrané soubory?" +msgstr "Odstranit preset '%s'?" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted: " @@ -5885,9 +5904,8 @@ msgid "Custom (comma-separated):" msgstr "" #: editor/project_export.cpp -#, fuzzy msgid "Feature List:" -msgstr "Seznam metod:" +msgstr "Seznam funkcÃ:" #: editor/project_export.cpp msgid "Export PCK/Zip" @@ -5906,18 +5924,15 @@ msgid "Export With Debug" msgstr "" #: editor/project_manager.cpp -#, fuzzy msgid "The path does not exist." -msgstr "Soubor neexistuje." +msgstr "Cesta neexistuje." #: editor/project_manager.cpp msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5929,6 +5944,14 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "Nelze vytvoÅ™it složku." + +#: 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 "" @@ -5953,9 +5976,8 @@ msgid "The following files failed extraction from package:" msgstr "" #: editor/project_manager.cpp -#, fuzzy msgid "Rename Project" -msgstr "Nastavenà projektu" +msgstr "PÅ™ejmenovat projekt" #: editor/project_manager.cpp msgid "Couldn't get project.godot in the project path." @@ -5970,19 +5992,30 @@ 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 "VytvoÅ™it a editovat" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Instalovat a editovat" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" #: editor/project_manager.cpp -#, fuzzy msgid "Create folder" msgstr "VytvoÅ™it složku" @@ -5995,17 +6028,12 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project" -msgstr "PÅ™ipojit.." +msgstr "Nelze otevÅ™Ãt projekt" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" @@ -6045,6 +6073,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Správce projektů" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Seznam projektů" @@ -6073,9 +6105,8 @@ msgid "Restart Now" msgstr "" #: editor/project_manager.cpp -#, fuzzy msgid "Can't run project" -msgstr "PÅ™ipojit.." +msgstr "Nelze spustit projekt" #: editor/project_manager.cpp msgid "" @@ -6172,11 +6203,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "ZmÄ›nit" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6230,9 +6256,8 @@ msgid "Wheel Down." msgstr "KoleÄko dolů." #: editor/project_settings_editor.cpp -#, fuzzy msgid "Add Global Property" -msgstr "PÅ™idat vlastnost getter" +msgstr "PÅ™idat globálnà vlastnost" #: editor/project_settings_editor.cpp msgid "Select a setting item first!" @@ -6247,14 +6272,12 @@ msgid "Setting '%s' is internal, and it can't be deleted." msgstr "" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Delete Item" -msgstr "Odstranit" +msgstr "Odstranit položku" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Can't contain '/' or ':'" -msgstr "PÅ™ipojit k uzlu:" +msgstr "Nesmà obsaovat '/' nebo ':'" #: editor/project_settings_editor.cpp msgid "Already existing" @@ -6314,9 +6337,8 @@ msgid "Changed Locale Filter Mode" msgstr "" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Project Settings (project.godot)" -msgstr "Nastavenà projektu" +msgstr "Nastavenà projektu (project.godot)" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" @@ -6387,9 +6409,8 @@ msgid "Show only selected locales" msgstr "" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Filter mode:" -msgstr "Filtr:" +msgstr "Režim filtru:" #: editor/project_settings_editor.cpp msgid "Locales:" @@ -6499,14 +6520,12 @@ msgid "Select Property" msgstr "PÅ™idat vlastnost setter" #: editor/property_selector.cpp -#, fuzzy msgid "Select Virtual Method" -msgstr "Vybrat vÅ¡e" +msgstr "Vybrat virtuálnà metodu" #: editor/property_selector.cpp -#, fuzzy msgid "Select Method" -msgstr "Vybrat vÅ¡e" +msgstr "Vybrat metodu" #: editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" @@ -6566,10 +6585,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6654,9 +6669,8 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy -msgid "Sub-Resources:" -msgstr "Zdroj" +msgid "Sub-Resources" +msgstr "DÃlÄà zdroje" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6687,9 +6701,8 @@ msgid "Attach Script" msgstr "" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Clear Script" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "Vymazat skript" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -6702,7 +6715,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy msgid "Copy Node Path" -msgstr "ZkopÃrovat uzly" +msgstr "KopÃrovat cestu uzlu" #: editor/scene_tree_dock.cpp msgid "Delete (No Confirm)" @@ -6721,7 +6734,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy msgid "Filter nodes" -msgstr "Filtr:" +msgstr "Filtrovat uzly" #: editor/scene_tree_dock.cpp msgid "Attach a new or existing script for the selected node." @@ -6734,7 +6747,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy msgid "Remote" -msgstr "Odebrat" +msgstr "Vzdálený" #: editor/scene_tree_dock.cpp msgid "Local" @@ -6783,9 +6796,8 @@ msgid "Instance:" msgstr "" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Open script" -msgstr "Spustit skript" +msgstr "OtevÅ™Ãt skript" #: editor/scene_tree_editor.cpp msgid "" @@ -6824,19 +6836,16 @@ msgid "Select a Node" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error loading template '%s'" -msgstr "Chyba nahrávánà fontu." +msgstr "Chyba pÅ™i nahrávánà šablony '%s'" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error - Could not create script in filesystem." -msgstr "Nelze vytvoÅ™it složku." +msgstr "Chyba - Nelze vytvoÅ™it skript v souborovém systému." #: editor/script_create_dialog.cpp -#, fuzzy msgid "Error loading script from %s" -msgstr "Chyba nahrávánà fontu." +msgstr "Chyba nahrávánà skriptu z %s" #: editor/script_create_dialog.cpp msgid "N/A" @@ -6872,9 +6881,8 @@ msgid "Wrong extension chosen" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid Path" -msgstr "Neplatná cesta." +msgstr "Neplatná cesta" #: editor/script_create_dialog.cpp msgid "Invalid class name" @@ -6898,9 +6906,8 @@ msgid "Built-in script (into scene file)" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Create new script file" -msgstr "VytvoÅ™it odbÄ›r" +msgstr "VytvoÅ™it nový soubor skriptu" #: editor/script_create_dialog.cpp msgid "Load existing script file" @@ -6919,14 +6926,12 @@ msgid "Class Name" msgstr "" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Template" -msgstr "Odstranit výbÄ›r" +msgstr "Å ablona" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Built-in Script" -msgstr "Spustit skript" +msgstr "VestavÄ›ný skript" #: editor/script_create_dialog.cpp msgid "Attach Node Script" @@ -6935,7 +6940,7 @@ msgstr "" #: editor/script_editor_debugger.cpp #, fuzzy msgid "Remote " -msgstr "Odebrat" +msgstr "Vzdálený " #: editor/script_editor_debugger.cpp msgid "Bytes:" @@ -6961,7 +6966,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6970,6 +6975,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "PÅ™ipojit.." + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7317,16 +7327,59 @@ msgstr "ZmÄ›nit měřÃtko výbÄ›ru" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy msgid "GridMap Settings" -msgstr "Nastavenà projektu" +msgstr "Nastavenà GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "NepodaÅ™ilo se vytvoÅ™it Å™eÅ¡enÃ." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "NepodaÅ™ilo se uložit Å™eÅ¡enÃ." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "VytvoÅ™it C# Å™eÅ¡enÃ" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Sestavit projekt" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp #, fuzzy msgid "" @@ -7365,9 +7418,8 @@ msgid "Stack overflow with stack depth: " msgstr "PÅ™eteÄenà zásobnÃku s hloubkou: " #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Signal Arguments" -msgstr "Upravit argumenty signálu:" +msgstr "Upravit argumenty signálu" #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -7375,18 +7427,16 @@ msgid "Change Argument Type" msgstr "ZmÄ›nit typ hodnot pole" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Argument name" -msgstr "ZmÄ›nit hodnotu pole" +msgstr "ZmÄ›nit název argumentu" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Default Value" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Set Variable Type" -msgstr "Upravit promÄ›nnou:" +msgstr "Nastavit typ promÄ›nné" #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" @@ -7463,7 +7513,7 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Hold %s to drop a simple reference to the node." -msgstr "Podržte Meta k uvolnÄ›nà jednoduché reference na uzel." +msgstr "Podržte %s k uvolnÄ›nà jednoduché reference na uzel." #: modules/visual_script/visual_script_editor.cpp #, fuzzy @@ -7473,7 +7523,7 @@ msgstr "Podržte Ctrl k uvolnÄ›nà jednoduché reference na uzel." #: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Hold %s to drop a Variable Setter." -msgstr "Podržte Meta k uvolnÄ›nà jednoduché reference na uzel." +msgstr "Podržte %s k uvolnÄ›nà jednoduché reference na uzel." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." @@ -7496,29 +7546,24 @@ msgid "Add Setter Property" msgstr "PÅ™idat vlastnost setter" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Base Type" -msgstr "ZmÄ›nit typ hodnot pole" +msgstr "ZmÄ›nit základnà typ" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Move Node(s)" -msgstr "ZkopÃrovat uzly" +msgstr "PÅ™esunout uzly" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Remove VisualScript Node" -msgstr "Odstranit promÄ›nnou" +msgstr "Odstranit VisualScript uzel" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Nodes" -msgstr "PÅ™ipojit k uzlu:" +msgstr "PÅ™ipojit uzly" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Condition" -msgstr "PÅ™echod" +msgstr "PodmÃnka" #: modules/visual_script/visual_script_editor.cpp msgid "Sequence" @@ -7553,9 +7598,8 @@ msgid "Script already has function '%s'" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Input Value" -msgstr "ZmÄ›nit hodnotu pole" +msgstr "ZmÄ›nit vstupnà hodnotu" #: modules/visual_script/visual_script_editor.cpp msgid "Can't copy the function node." @@ -7566,27 +7610,24 @@ msgid "Clipboard is empty!" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Paste VisualScript Nodes" -msgstr "Vložit uzly" +msgstr "Vložit VisualScript uzly" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" msgstr "Odstranit funkci" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Variable" -msgstr "Upravit promÄ›nnou:" +msgstr "Upravit promÄ›nnou" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Variable" msgstr "Odstranit promÄ›nnou" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Signal" -msgstr "Úprava signálu:" +msgstr "Upravit signál" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Signal" @@ -7625,7 +7666,6 @@ msgid "Delete Selected" msgstr "Smazat vybraný" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Find Node Type" msgstr "Vyhledat typ uzlu" @@ -7706,28 +7746,30 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not write file:\n" -msgstr "Nelze vytvoÅ™it složku." +msgid "Could not write file:" +msgstr "Nelze zapsat soubor:" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not open template for export:\n" -msgstr "Nelze vytvoÅ™it složku." +msgid "Could not open template for export:" +msgstr "Nelze otevÅ™Ãt Å¡ablonu pro export:" + +#: platform/javascript/export/export.cpp +msgid "Invalid export template:" +msgstr "Neplatná Å¡ablona pro export:" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" -msgstr "Neplatné jméno vlastnosti." +msgid "Could not read custom HTML shell:" +msgstr "Nelze vytvoÅ™it složku." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "Nelze vytvoÅ™it složku." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "Nelze vytvoÅ™it složku." #: scene/2d/animated_sprite.cpp @@ -7747,6 +7789,13 @@ msgstr "" "instancovaných scén). Prvnà vytvoÅ™ená bude fungovat, ostatnà budou " "ignorovány." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7830,7 +7879,7 @@ msgstr "PathFollow2D funguje pouze když je dÃtÄ›tem uzlu Path2D." #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7890,6 +7939,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7947,8 +8003,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7997,9 +8053,8 @@ msgid "Please Confirm..." msgstr "PotvrÄte prosÃm.." #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Select this Folder" -msgstr "Vybrat vÅ¡e" +msgstr "Vybrat tuto složku" #: scene/gui/popup.cpp msgid "" @@ -8023,9 +8078,10 @@ msgid "(Other)" msgstr "(OstatnÃ)" #: scene/main/scene_tree.cpp +#, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Výchozà prostÅ™edà specifikované v nastavenà projektu (Vykreslovánà -> " "Zobrazovacà výřez -> Výchozà prostÅ™edÃ) se nepodaÅ™ilo naÄÃst." @@ -8058,8 +8114,26 @@ msgstr "Chyba nahrávánà fontu." msgid "Invalid font size." msgstr "Neplatná velikost fontu." -#~ msgid "Create Subscription" -#~ msgstr "VytvoÅ™it odbÄ›r" +#~ msgid "Next" +#~ msgstr "DalÅ¡Ã" + +#~ msgid "Not found!" +#~ msgstr "Nenalezeno!" + +#~ msgid "Replace By" +#~ msgstr "Nahradit" + +#~ msgid "Case Sensitive" +#~ msgstr "RozliÅ¡ovat velká a malá pÃsmena" + +#~ msgid "Backwards" +#~ msgstr "Pozpátku" + +#~ msgid "Prompt On Replace" +#~ msgstr "Potvrzovat nahrazenÃ" + +#~ msgid "Skip" +#~ msgstr "PÅ™eskoÄit" #~ msgid "List:" #~ msgstr "Seznam:" diff --git a/editor/translations/da.po b/editor/translations/da.po index 8c7d899ea2..786cabcbdc 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -200,8 +200,7 @@ msgstr "Opret %d NYE spor og indsæt nøgler?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Opret" @@ -379,14 +378,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Erstattede %d forekomst(er)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Erstat" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Erstat Alle" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Match stor/lille" @@ -395,48 +386,16 @@ msgid "Whole Words" msgstr "Hele Ord" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Kun Valgte" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Søg" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Find" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Næste" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ikke fundet!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Erstattes Af" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Forskel pÃ¥ smÃ¥ og store bogstaver" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Tilbage" +msgid "Replace" +msgstr "Erstat" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Spørg Ved Erstatning" +msgid "Replace All" +msgstr "Erstat Alle" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Spring Over" +msgid "Selection Only" +msgstr "Kun Valgte" #: editor/code_editor.cpp msgid "Zoom In" @@ -557,6 +516,16 @@ msgstr "Signaler" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Skift Base Type" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Skift" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Opret Nyt" @@ -668,7 +637,8 @@ msgstr "" "Fjern dem alligevel? (ej fortrydes)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Kan ikke fjerne:\n" #: editor/dependency_editor.cpp @@ -751,8 +721,9 @@ msgstr "Projekt grundlæggere" msgid "Lead Developer" msgstr "Ledende Udvikler" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Projektleder" #: editor/editor_about.cpp @@ -841,7 +812,7 @@ msgid "Success!" msgstr "Succes!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installér" @@ -1156,7 +1127,8 @@ msgid "Packing" msgstr "Pakker" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "Skabelon fil ikke fundet:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1371,6 +1343,22 @@ msgid "Description" msgstr "Beskrivelse" #: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Online Dokumentation" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Der er i øjeblikket ingen beskrivelse af denne metode. Det vil være en stor " +"hjælp, hvis du kan [color=$color][url=$url]bidrage[/url][/color] med en " +"beskrivelse!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Egenskaber" @@ -1408,6 +1396,10 @@ msgstr "" msgid "Search Text" msgstr "Søg Tekst" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Find" + #: editor/editor_log.cpp msgid "Output:" msgstr "Output:" @@ -1419,6 +1411,11 @@ msgstr "Output:" msgid "Clear" msgstr "Clear" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Output" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Fejl, kan ikke gemme ressource!" @@ -1427,8 +1424,8 @@ msgstr "Fejl, kan ikke gemme ressource!" msgid "Save Resource As.." msgstr "Gem Ressource Som.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp #, fuzzy msgid "I see.." msgstr "Jeg ser.." @@ -1485,8 +1482,10 @@ msgid "This operation can't be done without a tree root." msgstr "Denne handling kan ikke foretages uden tree root" #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "Kunne ikke gemme scene. Der er nogle afhængigheder (forekomster) some ikke " "kunne opfyldes." @@ -2104,6 +2103,13 @@ msgstr "Hjælp" msgid "Classes" msgstr "Klasser" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Søg" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Online Dokumentation" @@ -2492,7 +2498,7 @@ msgstr "Ingen version.txt fundet inde i skabeloner." #: editor/export_template_manager.cpp #, fuzzy -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "Fejl ved oprettelse af sti til skabeloner:\n" #: editor/export_template_manager.cpp @@ -2654,9 +2660,8 @@ msgid "View items as a list" msgstr "Vis emner som en liste" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "Status: Import af filen fejlede. Venligst reparer filen og genimporter " @@ -2667,21 +2672,23 @@ msgid "Cannot move/rename resources root." msgstr "Kan ikke flytte/omdøbe resourcen root." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +#, fuzzy +msgid "Cannot move a folder into itself." msgstr "Kan ikke flytte en mappe til sig selv\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "Fejl i flytning:\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Fejl under indlæsning:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +#, fuzzy +msgid "Unable to update dependencies:" msgstr "Kan ikke opdatere afhængigheder:\n" #: editor/filesystem_dock.cpp @@ -3330,6 +3337,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animation Zoom." + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3495,6 +3507,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3796,19 +3809,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4183,7 +4199,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4576,14 +4592,17 @@ msgstr "" msgid "Paste" msgstr "Indsæt" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Ressource" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4660,6 +4679,11 @@ msgid "Copy Script Path" msgstr "Kopier Sti" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Vis I Fil Manager" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5092,83 +5116,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +msgid "Shader Changes" +msgstr "Skift Shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Skift Shader" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5183,6 +5207,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5256,15 +5284,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +#, fuzzy +msgid "Select Mode (Q)" msgstr "Vælg Mode (Q)\n" #: editor/plugins/spatial_editor_plugin.cpp @@ -5540,10 +5565,18 @@ msgstr "Flyt (Før)" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5569,14 +5602,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5714,6 +5750,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Slet valgte" @@ -5815,6 +5855,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Gem den aktuelt redigerede ressource." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Annuller" @@ -5922,9 +5987,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5936,6 +5999,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Kunne ikke oprette mappe." + +#: 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 "" @@ -5976,14 +6048,29 @@ msgid "Import Existing Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importer" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Opret" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Installér" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -6001,10 +6088,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6050,6 +6133,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Projektleder" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6176,11 +6263,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Skift" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6559,10 +6641,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6648,7 +6726,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "Sub-Ressourcer:" #: editor/scene_tree_dock.cpp @@ -6941,7 +7019,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6950,6 +7028,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Indlæs Fejl" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7297,10 +7380,55 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Fejler med at indlæse ressource." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Fejler med at indlæse ressource." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Fejler med at indlæse ressource." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Opret Abonnement" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Projekt" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7657,25 +7785,33 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" msgstr "Kunne ikke skrive til fil:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "Kan ikke Ã¥bne skabelon til eksport:\n" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +#, fuzzy +msgid "Invalid export template:" msgstr "Ugyldigt eksport skabelon:\n" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +#, fuzzy +msgid "Could not read custom HTML shell:" msgstr "Kan ikke læse brugerdefineret HTML shell:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "Kan ikke læse boot splash billed fil:\n" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "Kan ikke læse boot splash billed fil:\n" #: scene/2d/animated_sprite.cpp @@ -7695,6 +7831,13 @@ msgstr "" "instanserede scener). Den første vil blive brugt, mens resten vil blive " "ignoreret." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7780,7 +7923,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7841,6 +7984,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7898,8 +8048,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7972,8 +8122,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -8004,12 +8154,30 @@ msgstr "Error loading skrifttype." msgid "Invalid font size." msgstr "Ugyldig skriftstørrelse." +#~ msgid "Next" +#~ msgstr "Næste" + +#~ msgid "Not found!" +#~ msgstr "Ikke fundet!" + +#~ msgid "Replace By" +#~ msgstr "Erstattes Af" + +#~ msgid "Case Sensitive" +#~ msgstr "Forskel pÃ¥ smÃ¥ og store bogstaver" + +#~ msgid "Backwards" +#~ msgstr "Tilbage" + +#~ msgid "Prompt On Replace" +#~ msgstr "Spørg Ved Erstatning" + +#~ msgid "Skip" +#~ msgstr "Spring Over" + #~ msgid "Move Add Key" #~ msgstr "Flyt Add Key" -#~ msgid "Create Subscription" -#~ msgstr "Opret Abonnement" - #~ msgid "List:" #~ msgstr "Liste:" diff --git a/editor/translations/de.po b/editor/translations/de.po index 14316d4862..d0fa1597a5 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -19,16 +19,16 @@ # Paul-Vincent Roll <paviro@me.com>, 2016. # Peter Friedland <peter_friedland@gmx.de>, 2016. # No need for a name <endoplasmatik@gmx.net>, 2016. -# So Wieso <sowieso@dukun.de>, 2016-2017. +# So Wieso <sowieso@dukun.de>, 2016-2018. # Tim Schellenberg <smwleod@gmail.com>, 2017. -# Timo Schwarzer <account@timoschwarzer.com>, 2016. +# Timo Schwarzer <account@timoschwarzer.com>, 2016-2018. # viernullvier <hannes.breul+github@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-12-07 11:47+0000\n" +"PO-Revision-Date: 2018-01-22 08:08+0000\n" "Last-Translator: So Wieso <sowieso@dukun.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" @@ -37,7 +37,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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -48,9 +48,8 @@ msgid "All Selection" msgstr "Alle auswählen" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Anim Wert ändern" +msgstr "Schlüsselbildzeit ändern" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -58,36 +57,35 @@ msgstr "Übergang beim Animationswechsel" #: editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "Anim ändere Transformation" +msgstr "Transformation ändern" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Anim Wert ändern" +msgstr "Schlüsselbildwert ändern" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "Animation Änderungsaufruf" +msgstr "Aufruf ändern" #: editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "Anim Spur hinzufügen" +msgstr "Spur hinzufügen" #: editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Anim doppelte Schlüsselbilder" +msgstr "Schlüsselbild duplizieren" #: editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "Anim Spur nach oben verschieben" +msgstr "Spur nach oben verschieben" #: editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "Anim Spur nach unten verschieben" +msgstr "Spur nach unten verschieben" #: editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "Anim Spur entfernen" +msgstr "Spur entfernen" #: editor/animation_editor.cpp msgid "Set Transitions to:" @@ -95,23 +93,23 @@ msgstr "Setze Übergänge auf:" #: editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "Anim Spur umbenennen" +msgstr "Spur umbenennen" #: editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "Anim Spur Interpolation ändern" +msgstr "Interpolation der Spur ändern" #: editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "Anim Spur ändere Wert Modus" +msgstr "Wertmodus der Spur ändern" #: editor/animation_editor.cpp msgid "Anim Track Change Wrap Mode" -msgstr "Anim Spur ändere Wiederhol-Modus" +msgstr "Wiederholmodus der Spur ändern" #: editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "Node Kurve bearbeiten" +msgstr "Node-Kurve bearbeiten" #: editor/animation_editor.cpp msgid "Edit Selection Curve" @@ -119,7 +117,7 @@ msgstr "Selektions-Kurve bearbeiten" #: editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "Anim Schlüsselbilder löschen" +msgstr "Schlüsselbilder löschen" #: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp @@ -148,7 +146,7 @@ msgstr "Auslöser" #: editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "Anim Schlüsselszene hinzufügen" +msgstr "Schlüsselbild hinzufügen" #: editor/animation_editor.cpp msgid "Anim Move Keys" @@ -177,7 +175,7 @@ msgstr "Linear" #: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "Konstante" +msgstr "Konstant" #: editor/animation_editor.cpp msgid "In" @@ -205,22 +203,21 @@ msgstr "Animation optimieren" #: editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "Animation aufräumen" +msgstr "Animation bereinigen" #: editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "Erstelle eine NEUE Spur für %s und füge ein Schlüsselbild hinzu?" +msgstr "NEUE Spur für %s erstellenund Schlüsselbild hinzufügen?" #: editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Erstelle %d NEUE Spuren und füge Schlüsselbilder hinzu?" +msgstr "%d NEUE Spuren erstelleb und Schlüsselbilder hinzufügen?" #: editor/animation_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Erstellen" @@ -238,23 +235,23 @@ msgstr "Schlüsselbild einfügen" #: editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "Ändere Animationslänge" +msgstr "Animationslänge ändern" #: editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "Ändere Animationswiederholung" +msgstr "Animationswiederholung ändern" #: editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "Animation Erstelle Typed Value Key" +msgstr "Festgelegten Werteschlüssel erstellen" #: editor/animation_editor.cpp msgid "Anim Insert" -msgstr "Anim einfügen" +msgstr "Einfügen" #: editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "Skaliere Schlüsselbilder" +msgstr "Schlüsselbilder skalieren" #: editor/animation_editor.cpp msgid "Anim Add Call Track" @@ -270,7 +267,7 @@ msgstr "Länge (s):" #: editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "Länge der Animation (in Sekunden)." +msgstr "Animationslänge (in Sekunden)." #: editor/animation_editor.cpp msgid "Step (s):" @@ -278,11 +275,11 @@ msgstr "Schritte (s):" #: editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "Cursor Schritt Raster (in Sekunden)." +msgstr "Cursor Schrittraster (in Sekunden)." #: editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "Aktivieren / Deaktivieren der Schleife (Loop)." +msgstr "Animationswiederholung aktivieren/deaktivieren." #: editor/animation_editor.cpp msgid "Add new tracks." @@ -290,11 +287,11 @@ msgstr "Neue Spuren hinzufügen." #: editor/animation_editor.cpp msgid "Move current track up." -msgstr "Aktuelle Spur hochschieben." +msgstr "Aktuelle Spur nach oben verschieben." #: editor/animation_editor.cpp msgid "Move current track down." -msgstr "Aktuelle Spur runterschieben." +msgstr "Aktuelle Spur nach unten verschieben." #: editor/animation_editor.cpp msgid "Remove selected track." @@ -306,11 +303,11 @@ msgstr "Spur-Werkzeuge" #: editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "Aktiviere individuelle Schlüsselbildbearbeitung durch Anklicken." +msgstr "Individuelle Schlüsselbildbearbeitung durch Anklicken aktivieren." #: editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "Anim. Optimierer" +msgstr "Animationsoptimierer" #: editor/animation_editor.cpp msgid "Max. Linear Error:" @@ -322,7 +319,7 @@ msgstr "Max. Winkel-Fehler:" #: editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "Maximal optimierbarer Winkel:" +msgstr "Maximaler optimierbarer Winkel:" #: editor/animation_editor.cpp msgid "Optimize" @@ -331,7 +328,7 @@ msgstr "Optimieren" #: editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" -"Wähle einen AnimationPlayer aus dem Szenenbaum um Animationen zu bearbeiten." +"AnimationPlayer aus dem Szenenbaum auswählen um Animationen zu bearbeiten." #: editor/animation_editor.cpp msgid "Key" @@ -347,7 +344,7 @@ msgstr "Skalierungsverhältnis:" #: editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "Rufe Funktion auf in welchem Node?" +msgstr "In welcher Node sollen die Funktionen aufgerufen werden?" #: editor/animation_editor.cpp msgid "Remove invalid keys" @@ -359,15 +356,15 @@ msgstr "Ungelöste und leere Spuren entfernen" #: editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "Alle Animationen aufräumen" +msgstr "Alle Animationen bereinigen" #: editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "Alle Animationen aufräumen (Nicht rückgängig zu machen!)" +msgstr "Alle Animationen bereinigen (Kann nicht rückgängig gemacht werden!)" #: editor/animation_editor.cpp msgid "Clean-Up" -msgstr "Aufräumen" +msgstr "Bereinigen" #: editor/array_property_edit.cpp msgid "Resize Array" @@ -398,14 +395,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Suchbegriff wurde %d mal ersetzt." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Ersetzen" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Alles ersetzen" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Groß-/Kleinschreibung berücksichtigen" @@ -414,48 +403,16 @@ msgid "Whole Words" msgstr "Ganze Wörter" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Nur Auswahl" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Suche" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Finde" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Nächste" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Nicht gefunden!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Ersetzen durch" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Fallunterscheidung" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Rückwärts" +msgid "Replace" +msgstr "Ersetzen" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Aufforderung beim Ersetzen" +msgid "Replace All" +msgstr "Alle ersetzen" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Überspringen" +msgid "Selection Only" +msgstr "Nur Auswahl" #: editor/code_editor.cpp msgid "Zoom In" @@ -479,19 +436,19 @@ msgstr "Spalte:" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "Methode in Ziel-Node muss angegeben werden!" +msgstr "In der Ziel-Node muss eine Methode angegeben werden!" #: editor/connections_dialog.cpp msgid "" "Target method not found! Specify a valid method or attach a script to target " "Node." msgstr "" -"Zielmethode nicht gefunden! Bitte gültige Methode angeben oder Skript an " -"Zielnode anhängen." +"Zielmethode nicht gefunden! Bitte geben Sie eine gültige Methode an oder " +"fügen Sie ein Skript zur Ziel-Node hinzu." #: editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "Verbinde mit Node:" +msgstr "Mit Node verbinden:" #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp @@ -512,11 +469,11 @@ msgstr "Zusätzlichen Aufrufparameter hinzufügen:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "zusätzliche Aufrufparameter:" +msgstr "Zusätzliche Aufrufparameter:" #: editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "Pfad zu Node:" +msgstr "Pfad zur Node:" #: editor/connections_dialog.cpp msgid "Make Function" @@ -554,16 +511,15 @@ msgstr "Verbinde '%s' zu '%s'" #: editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "Verbinde Signal:" +msgstr "Signal verbinden:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Verbinde '%s' zu '%s'" +msgstr "'%s' von '%s' trennen" #: editor/connections_dialog.cpp msgid "Connect.." -msgstr "Verbinde.." +msgstr "Verbinden.." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_editor_plugin.cpp @@ -575,9 +531,17 @@ msgid "Signals" msgstr "Signale" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "%s-Typ ändern" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Ändern" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Neu erstellen" +msgstr "%s erstellen" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -620,16 +584,16 @@ msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" -"Szene '%s' wird momentan bearbeitet.\n" -"Änderungen werden nicht vorgenommen, bis neu geladen wird." +"Die Szene '%s' wird momentan bearbeitet.\n" +"Änderungen werden nicht angezeigt bis die Szene neu geladen wird." #: editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." msgstr "" -"Ressource '%s' wird momentan benutzt.\n" -"Änderungen werden erst dann aktiv, nachdem neu geladen wurde." +"Die Ressource '%s' wird momentan benutzt.\n" +"Änderungen werden erst nach Neuladen der Ressource aktiv." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -675,7 +639,9 @@ msgstr "Besitzer von:" #: editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" -msgstr "Lösche ausgewählte Dateien aus dem Projekt? (nicht umkehrbar)" +msgstr "" +"Ausgewählte Dateien aus dem Projekt löschen? (Kann nicht rückgängig gemacht " +"werden)" #: editor/dependency_editor.cpp msgid "" @@ -683,21 +649,22 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" -"Die zu entfernenden Dateien werden von anderen Ressourcen gebraucht damit " +"Die zu entfernenden Dateien werden von anderen Ressourcen gebraucht, damit " "sie richtig funktionieren können.\n" -"Trotzdem entfernen? (Nicht Wiederherstellbar)" +"Trotzdem entfernen? (Kann nicht rückgängig gemacht werden)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Kann nicht entfernt werden:\n" +msgid "Cannot remove:" +msgstr "Kann nicht entfernt werden:" #: editor/dependency_editor.cpp msgid "Error loading:" -msgstr "Ladefehler:" +msgstr "Fehler beim Laden:" #: editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:" +msgstr "" +"Die Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -713,11 +680,12 @@ msgstr "Abhängigkeiten reparieren" #: editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "Fehler beim laden!" +msgstr "Fehler beim Laden!" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "Entferne %d Datei(en) dauerhaft? (Nicht Wiederherstellbar)" +msgstr "" +"%d Datei(en) dauerhaft entfernen? (Kann nicht rückgängig gemacht werden)" #: editor/dependency_editor.cpp msgid "Owns" @@ -729,7 +697,7 @@ msgstr "Ressource ohne direkte Zugehörigkeit:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "Ressourcenauflistung verwaister Dateien" +msgstr "Unbenutzte Dateien ansehen" #: editor/dependency_editor.cpp msgid "Delete selected files?" @@ -745,15 +713,15 @@ msgstr "Löschen" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "Dictionary-Schlüssel ändern" +msgstr "Wörterbuchschlüssel ändern" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" -msgstr "Dictionary-Wert ändern" +msgstr "Wörterbuchwert ändern" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "Danke von der Godot-Gemeinschaft!" +msgstr "Danke von der Godot-Community!" #: editor/editor_about.cpp msgid "Thanks!" @@ -761,7 +729,7 @@ msgstr "Danke!" #: editor/editor_about.cpp msgid "Godot Engine contributors" -msgstr "Godot-Engine-Mitwirkende" +msgstr "Mitwirkende der Godot Engine" #: editor/editor_about.cpp msgid "Project Founders" @@ -771,9 +739,9 @@ msgstr "Projektgründer" msgid "Lead Developer" msgstr "Hauptentwickler" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Projektverwaltung" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Projektverwalter " #: editor/editor_about.cpp msgid "Developers" @@ -785,7 +753,7 @@ msgstr "Autoren" #: editor/editor_about.cpp msgid "Platinum Sponsors" -msgstr "Platin Sponsoren" +msgstr "Platinum Sponsoren" #: editor/editor_about.cpp msgid "Gold Sponsors" @@ -793,7 +761,7 @@ msgstr "Gold Sponsoren" #: editor/editor_about.cpp msgid "Mini Sponsors" -msgstr "Klein Sponsoren" +msgstr "Mini Sponsoren" #: editor/editor_about.cpp msgid "Gold Donors" @@ -801,7 +769,7 @@ msgstr "Gold Unterstützer" #: editor/editor_about.cpp msgid "Silver Donors" -msgstr "Silber Unterstützer" +msgstr "Silver Unterstützer" #: editor/editor_about.cpp msgid "Bronze Donors" @@ -846,15 +814,15 @@ msgstr "Lizenzen" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in zip format." -msgstr "Fehler beim Öffnen der Paketdatei, kein Zip-Format." +msgstr "Fehler beim Öffnen der Paketdatei, kein ZIP-Format." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" -msgstr "Entpacke Nutzerinhalte" +msgstr "Inhalte werden entpackt" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package Installed Successfully!" -msgstr "Paket erfolgreich installiert!" +msgstr "Das Paket wurde erfolgreich installiert!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -862,13 +830,13 @@ msgid "Success!" msgstr "Erfolgreich!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installieren" #: editor/editor_asset_installer.cpp msgid "Package Installer" -msgstr "Paketinstallierung" +msgstr "Paketinstaller" #: editor/editor_audio_buses.cpp msgid "Speakers" @@ -883,21 +851,20 @@ msgid "Rename Audio Bus" msgstr "Audiobus umbenennen" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Audiobus Solo-Status umschalten" +msgstr "Lautstärke des Audiobus ändern" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "Audiobus Solo-Status umschalten" +msgstr "Audiobus Solo umschalten" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "Audiobus stumm schalten" +msgstr "Audiobus stummschalten" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" -msgstr "Audiobus-Bypasseffekte umschalten" +msgstr "Audiobus Bypasseffekte umschalten" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" @@ -917,11 +884,11 @@ msgstr "Audiobuseffekt löschen" #: editor/editor_audio_buses.cpp msgid "Audio Bus, Drag and Drop to rearrange." -msgstr "Audiobus, ziehen um umzusortieren." +msgstr "Audiobus, Drag & Drop zum Umsortieren." #: editor/editor_audio_buses.cpp msgid "Solo" -msgstr "Einzeln" +msgstr "Solo" #: editor/editor_audio_buses.cpp msgid "Mute" @@ -929,7 +896,7 @@ msgstr "Stumm" #: editor/editor_audio_buses.cpp msgid "Bypass" -msgstr "Überbrückung" +msgstr "Bypass" #: editor/editor_audio_buses.cpp msgid "Bus options" @@ -950,7 +917,7 @@ msgstr "Effekt löschen" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Audio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1131,13 +1098,12 @@ msgid "Updating scene.." msgstr "Aktualisiere Szene..." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(leer)" +msgstr "[leer]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ungespeichert]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1177,8 +1143,8 @@ msgid "Packing" msgstr "Packe" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Template-Datei nicht gefunden:\n" +msgid "Template file not found:" +msgstr "Vorlagendatei nicht gefunden:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1389,6 +1355,19 @@ msgid "Description" msgstr "Beschreibung" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Anleitungen im Netz:" + +#: 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 "" +"Es gibt zurzeit keine Tutorials zu dieser Klasse. [color=$color][url=" +"$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr erwünscht!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Eigenschaften" @@ -1424,6 +1403,10 @@ msgstr "" msgid "Search Text" msgstr "Suchtext" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Finden" + #: editor/editor_log.cpp msgid "Output:" msgstr "Ausgabe:" @@ -1435,6 +1418,10 @@ msgstr "Ausgabe:" msgid "Clear" msgstr "Löschen" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Ausgabe löschen" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Fehler beim speichern der Ressource!" @@ -1443,8 +1430,8 @@ msgstr "Fehler beim speichern der Ressource!" msgid "Save Resource As.." msgstr "Speichere Ressource als.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Verstehe..." @@ -1498,10 +1485,11 @@ msgstr "Diese Aktion kann nicht ohne eine Wurzel ausgeführt werden." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "Szene konnte nicht gespeichert werden. Wahrscheinlich werden Abhängigkeiten " -"(Instanzen) nicht erfüllt." +"(Instanzen oder Vererbungen) nicht erfüllt." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1717,7 +1705,7 @@ msgstr "MeshLibrary exportieren" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "Diese Aktion kann nicht ohne eine ausgewählte Node ausgeführt werden." +msgstr "Diese Aktion kann nicht ohne ein Wurzel-Node ausgeführt werden." #: editor/editor_node.cpp msgid "Export Tile Set" @@ -2119,6 +2107,13 @@ msgstr "Hilfe" msgid "Classes" msgstr "Klassen" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Suchen" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Internetdokumentation" @@ -2390,14 +2385,12 @@ msgid "Frame #:" msgstr "Bild #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Zeit:" +msgstr "Zeit" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Aufruf" +msgstr "Aufrufe" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2504,8 +2497,8 @@ msgid "No version.txt found inside templates." msgstr "Keine version.txt in Templates gefunden." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Fehler bei Erzeugen des Pfads für die Vorlagen:\n" +msgid "Error creating path for templates:" +msgstr "Fehler bei Erzeugen des Pfads für die Vorlagen:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2540,7 +2533,6 @@ msgstr "Keine Antwort." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Anfrage fehlgeschlagen." @@ -2588,7 +2580,6 @@ msgid "Connecting.." msgstr "Verbinde.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "Keine Verbindung möglich" @@ -2666,11 +2657,8 @@ msgid "View items as a list" msgstr "Einträge als Liste anzeigen" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Status: Dateiimport fehlgeschlagen. Manuelle Reparatur und Neuimport nötig." #: editor/filesystem_dock.cpp @@ -2678,21 +2666,20 @@ msgid "Cannot move/rename resources root." msgstr "Ressourcen-Wurzel kann nicht verschoben oder umbenannt werden." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Ordner kann nicht in sich selbst verschoben werden.\n" +msgid "Cannot move a folder into itself." +msgstr "Ordner kann nicht in sich selbst verschoben werden." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Fehler beim Verschieben:\n" +msgid "Error moving:" +msgstr "Fehler beim Verschieben:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Ladefehler:" +msgid "Error duplicating:" +msgstr "Fehler beim Duplizieren:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Fehler beim Aktualisieren der Abhängigkeiten:\n" +msgid "Unable to update dependencies:" +msgstr "Fehler beim Aktualisieren der Abhängigkeiten:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2723,14 +2710,12 @@ msgid "Renaming folder:" msgstr "Benenne Ordner um:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Duplizieren" +msgstr "Dupliziere Datei:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Benenne Ordner um:" +msgstr "Dupliziere Ordner:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2749,9 +2734,8 @@ msgid "Move To.." msgstr "Verschiebe zu.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Szene öffnen" +msgstr "Szene(n) öffnen" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2766,9 +2750,8 @@ msgid "View Owners.." msgstr "Zeige Besitzer.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Duplizieren" +msgstr "Duplizieren.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2865,14 +2848,12 @@ msgid "Importing Scene.." msgstr "Szene wird importiert.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "übertrage zu Lightmaps:" +msgstr "Generiere Lightmaps" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Erzeuge AABB" +msgstr "Generierung für Mesh: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3340,6 +3321,10 @@ msgstr "Nodefilter bearbeiten" msgid "Filters.." msgstr "Filter.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimationTree" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Kostenlos" @@ -3489,23 +3474,31 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Der Speicherpfad für Lightmap-Bilder kann nicht bestimmt werden.\n" +"Speichern Sie die Szene (Bilder werden im gleichen Ordner gespeichert) oder " +"legen Sie den Speicherpfad in den BakedLightmap-Eigenschaften fest." #: 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 "" +"Keine Meshes zum vorrendern vorhanden. Meshes, die vorgerendert werden " +"sollen, müssen einen UV2-Kanal beinhalten und die ‚Bake Light‘-Option " +"aktiviert haben." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Erstellung der Lightmap-Bilder fehlgeschlagen. Ist der Speicherpfad " +"beschreibbar?" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "übertrage zu Lightmaps:" +msgstr "Lightmaps vorrendern" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Vorschau" @@ -3812,6 +3805,14 @@ msgstr "%s hinzufügen" msgid "Adding %s..." msgstr "%s hinzufügen…" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "InÂsÂtanÂziÂieÂren mehrerer Nodes nicht möglich ohne Wurzel-Node." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3823,11 +3824,6 @@ msgid "Error instancing scene from %s" msgstr "Fehler beim Instanziieren von %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Standardtyp ändern" @@ -3935,7 +3931,7 @@ msgstr "Umsch halten um Tangenten einzeln zu bearbeiten" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "GI Sonde einbetten" +msgstr "GI Sonde vorrendern" #: editor/plugins/gradient_editor_plugin.cpp msgid "Add/Remove Color Ramp Point" @@ -4020,19 +4016,20 @@ msgstr "Navigations-Mesh erzeugen" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Beinhaltetes Mesh ist nicht vom Typ ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" msgstr "" +"UV-Entfalten fehlgeschlagen, könnte das Mesh keine Mannigfaltigkeit sein?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Kein Mesh zu debuggen." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Modell besitzt kein UV in dieser Schicht" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4075,18 +4072,16 @@ msgid "Create Outline Mesh.." msgstr "Umriss-Mesh erzeugen.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Ansicht" +msgstr "UV1 zeigen" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Ansicht" +msgstr "UV2 zeigen" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "UV2 entfalten für Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4199,11 +4194,11 @@ msgstr "Füllen" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Bake!" -msgstr "Backen!" +msgstr "Vorrendern!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Navigations-Mesh erzeugen.\n" +msgid "Bake the navigation mesh." +msgstr "Das Navigations-Mesh backen." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4593,17 +4588,17 @@ msgstr "Ressource laden" msgid "Paste" msgstr "Einfügen" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "Ressourcen-Vorlader" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Letzte Dateien leeren" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Schließen und Änderungen speichern?\n" -"„" +msgid "Close and save changes?" +msgstr "Schließen und Änderungen speichern?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4674,9 +4669,12 @@ msgid "Soft Reload Script" msgstr "Zaghaftes Skript-Neuladen" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Pfad kopieren" +msgstr "Skriptpfad kopieren" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Im Dateisystem anzeigen" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4869,9 +4867,8 @@ msgid "Clone Down" msgstr "Klone herunter" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Zeile aufklappen" +msgstr "Zeile ein/aufklappen" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5115,84 +5112,84 @@ msgid "Rotating %s degrees." msgstr "Rotiere %s Grad." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Sicht von unten." +msgid "Keying is disabled (no key inserted)." +msgstr "Schlüsselbildeinfügen ist deaktiviert (kein Schlüsselbild eingefügt)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Unten" +msgid "Animation Key Inserted." +msgstr "Animationsschlüsselbild eingefügt." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Sicht von oben." +msgid "Objects Drawn" +msgstr "Gezeichnete Objekte" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Sicht von hinten." +msgid "Material Changes" +msgstr "Materialänderungen" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Hinten" +msgid "Shader Changes" +msgstr "Shader-Änderungen" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Sicht von Vorne." +msgid "Surface Changes" +msgstr "Oberflächen-Änderungen" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Vorne" +msgid "Draw Calls" +msgstr "Zeichenaufrufe" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Sicht von links." +msgid "Vertices" +msgstr "Vertices" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Links" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Sicht von Rechts." +msgid "Top View." +msgstr "Sicht von oben." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Rechts" +msgid "Bottom View." +msgstr "Sicht von unten." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Schlüsselbildeinfügen ist deaktiviert (kein Schlüsselbild eingefügt)." +msgid "Bottom" +msgstr "Unten" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Animationsschlüsselbild eingefügt." +msgid "Left View." +msgstr "Sicht von links." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Gezeichnete Objekte" +msgid "Left" +msgstr "Links" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Materialänderungen" +msgid "Right View." +msgstr "Sicht von Rechts." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Shader-Änderungen" +msgid "Right" +msgstr "Rechts" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Oberflächen-Änderungen" +msgid "Front View." +msgstr "Sicht von Vorne." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Zeichenaufrufe" +msgid "Front" +msgstr "Vorne" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vertices" +msgid "Rear View." +msgstr "Sicht von hinten." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Hinten" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5206,6 +5203,10 @@ msgstr "Verstehe" msgid "No parent to instance a child at." msgstr "Kein Node unter dem Unterobjekt instantiiert werden könnte vorhanden." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Normale Ansicht" @@ -5279,16 +5280,12 @@ msgid "Freelook Speed Modifier" msgstr "Freisicht Geschwindigkeitsregler" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "Vorschau" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Transformationsdialog" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Auswahlmodus (Q)\n" +msgid "Select Mode (Q)" +msgstr "Auswahlmodus (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5317,14 +5314,12 @@ msgid "Local Coords" msgstr "Lokale Koordinaten" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Skalierungsmodus (R)" +msgstr "Lokalkoordinatenmodus (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Einrastmodus:" +msgstr "Einrastmodus (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5441,7 +5436,7 @@ msgstr "Einstellungen" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "Skelett-Greifer-Sichtbarkeit" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5567,10 +5562,18 @@ msgstr "Davor bewegen" msgid "Move (After)" msgstr "Dahinter bewegen" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "Sprite-Einzelbilder" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox-Vorschau:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "Style-Box" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Bereichsrechteck setzen" @@ -5596,14 +5599,17 @@ msgid "Auto Slice" msgstr "Autoschnitt" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Versatz:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Schritt:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Trennung:" @@ -5741,6 +5747,10 @@ msgstr "Schriftart" msgid "Color" msgstr "Farbe" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Motiv" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Auswahl löschen" @@ -5826,9 +5836,8 @@ msgid "Merge from scene?" msgstr "Aus Szene vereinen?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet.." +msgstr "Kachelsatz" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5842,6 +5851,34 @@ msgstr "Aus Szene zusammenführen" msgid "Error" msgstr "Fehler" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "Autokacheln" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" +"Unterkachel zur Benutzung als Icon auswählen, dieses wird auch für ungültige " +"Autokachelzuordnungen benutzt werden." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"LMT: Bit anstellen.\n" +"RMT: Bit ausstellen." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Speichere die so eben bearbeitete Unterkachel." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Unterkachel auswählen um ihre Priorität zu ändern." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Abbrechen" @@ -5953,12 +5990,8 @@ msgid "Please choose a 'project.godot' file." msgstr "Eine ‚project.godot‘-Datei auswählen." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Das Projekt wir in einem nicht-leeren Ordner erstellt (meist sind leere " -"Ordner die bessere Wahl)." +msgid "Please choose an empty folder." +msgstr "Bitte einen leeren Ordner auswählen." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5969,6 +6002,15 @@ msgid "Imported Project" msgstr "Importiertes Projekt" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "Ordner konnte nicht erstellt werden." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "" +"Es existiert bereits ein Ordner an diesem Pfad mit dem angegebenen Namen." + +#: editor/project_manager.cpp msgid "It would be a good idea to name your project." msgstr "Es wird empfohlen das Projekt zu benennen." @@ -6009,14 +6051,26 @@ msgid "Import Existing Project" msgstr "Existierendes Projekt importieren" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importieren & Bearbeiten" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Erstelle neues Projekt" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Erstellen & Bearbeiten" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Installiere Projekt:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Installieren & Bearbeiten" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Projektname:" @@ -6033,10 +6087,6 @@ msgid "Browse" msgstr "Durchstöbern" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "Aber klar :-) !" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Unbenanntes Projekt" @@ -6093,6 +6143,10 @@ msgid "" msgstr "Sollen wirklich %s Ordner nach Godot-Projekten durchsucht werden?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Projektverwaltung" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Projektliste" @@ -6221,11 +6275,6 @@ msgid "Button 9" msgstr "Taste 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Ändern" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Joystickachsen-Index:" @@ -6238,9 +6287,8 @@ msgid "Joypad Button Index:" msgstr "Joysticktasten-Index:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Lösche Eingabeaktionsereignis" +msgstr "Eingabeaktion löschen" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6488,7 +6536,7 @@ msgstr "Neues Skript" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Neues %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6523,9 +6571,8 @@ msgid "On" msgstr "An" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Empty einfügen" +msgstr "[leer]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6607,10 +6654,6 @@ msgid "Error loading scene from %s" msgstr "Fehler beim Laden der Szene von %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6700,8 +6743,8 @@ msgid "Error duplicating scene to save it." msgstr "Fehler beim Duplizieren der Szene zum Speichern." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Unter-Ressourcen:" +msgid "Sub-Resources" +msgstr "Unter-Ressourcen" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -7004,7 +7047,7 @@ msgstr "Funktion:" msgid "Pick one or more items from the list to display the graph." msgstr "Ein oder mehrere Einträge der Liste auswählen um Graph anzuzeigen." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Fehler" @@ -7013,6 +7056,10 @@ msgid "Child Process Connected" msgstr "Unterprozess verbunden" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Kopierfehler" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Vorherige Instanz untersuchen" @@ -7106,7 +7153,7 @@ msgstr "Tastenkürzel" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Zuordnung" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7158,43 +7205,39 @@ msgstr "Sondenausmaße ändern" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Dynamische Bibliothek für diesen Eintrag auswählen" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Abhängigkeiten der Bibliothek dieses Eintrags auswählen" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Kurvenpunkt entfernen" +msgstr "Aktuellen Eintrag entfernen" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Neuen Eintrag mittels Doppelklick erstellen" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Plattform:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "Kopiere zu Plattform.." +msgstr "Plattform" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Bibliothek" +msgstr "Dynamische Bibliothek" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Einen Architektureintrag hinzufügen" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNative-Bibliothek" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7366,10 +7409,50 @@ msgstr "GridMap-Einstellungen" msgid "Pick Distance:" msgstr "Auswahlradius:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "Lösungen erzeugen..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "C#-Projekt erzeugen..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Fehler beim Erzeugen einer Lösung." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Fehler beim Speichern der Lösung." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Fertig" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "C#-Projekt-Erzeugen fehlgeschlagen." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Erzeuge C#-Lösung" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Fertigstellungen" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Projekt bauen" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Warnungen" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7732,24 +7815,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "Führe exportiertes HTML im Standard-Browser des Betriebssystems aus." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Konnte Datei nicht schreiben:\n" +msgid "Could not write file:" +msgstr "Konnte Datei nicht schreiben:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "Konnte Exportvorlage nicht öffnen:\n" +msgid "Could not open template for export:" +msgstr "Konnte Vorlage nicht zum Export öffnen:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Ungültige Exportvorlage:\n" +msgid "Invalid export template:" +msgstr "Ungültige Exportvorlage:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "Konnte benutzerdefinierte HTML-Shell nicht lesen:\n" +msgid "Could not read custom HTML shell:" +msgstr "Konnte benutzerdefinierte HTML-Shell nicht lesen:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:\n" +msgid "Could not read boot splash image file:" +msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "Verwende Standard-Startbildschirm-Bilddatei." #: scene/2d/animated_sprite.cpp msgid "" @@ -7768,6 +7855,17 @@ msgstr "" "instantiierten Szenen) erlaubt. Der zuerst erstellte wird verwendet, der " "Rest wird ignoriert." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"Dieses Node besitzt keine untergeordneten Formen, es kann deshalb nicht mit " +"dem Raum interagieren.\n" +"Es wird empfohlen CollisionShape2D oder CollisionPolygon2D Unterobjekte " +"hinzuzufügen um seine Form festzulegen." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7863,7 +7961,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7919,23 +8017,31 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin benötigt ein ARVRCamera-Unterobjekt" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "Plotte Mesh" +msgstr "Plotte Meshe: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "Plotte Mesh" +msgstr "Plotte Lichter:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "Stelle Plot fertig" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "Plotte Mesh" +msgstr "Beleuchte Meshe: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"Dieses Node besitzt keine untergeordneten Formen, es kann deshalb nicht mit " +"dem Raum interagieren.\n" +"Es wird empfohlen CollisionShape oder CollisionPolygon Unterobjekte " +"hinzuzufügen um seine Form festzulegen." #: scene/3d/collision_polygon.cpp msgid "" @@ -7995,8 +8101,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "Größenänderungen von RigidBody (in Character- oder Rigid-Modus) werden " @@ -8081,11 +8187,11 @@ msgstr "(Andere)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Das Standard-Environment wie festgelegt in den Projekteinstellungen " -"(Rendering→Viewport→Standard-Environment) konnte nicht geladen werden." +"(Rendering→Environment→Standard-Environment) konnte nicht geladen werden." #: scene/main/viewport.cpp msgid "" @@ -8116,6 +8222,40 @@ msgstr "Fehler beim Laden der Schriftart." msgid "Invalid font size." msgstr "Ungültige Schriftgröße." +#~ msgid "Next" +#~ msgstr "Nächste" + +#~ msgid "Not found!" +#~ msgstr "Nicht gefunden!" + +#~ msgid "Replace By" +#~ msgstr "Ersetzen durch" + +#~ msgid "Case Sensitive" +#~ msgstr "Groß-/Kleinschreibung beachten" + +#~ msgid "Backwards" +#~ msgstr "Rückwärts" + +#~ msgid "Prompt On Replace" +#~ msgstr "Vor dem Ersetzen nachfragen" + +#~ msgid "Skip" +#~ msgstr "Überspringen" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Das Projekt wir in einem nicht-leeren Ordner erstellt (meist sind leere " +#~ "Ordner die bessere Wahl)." + +#~ msgid "That's a BINGO!" +#~ msgstr "Aber klar :-) !" + +#~ msgid "preview" +#~ msgstr "Vorschau" + #~ msgid "Move Add Key" #~ msgstr "Schlüsselbild bewegen hinzufügen" @@ -8212,9 +8352,6 @@ msgstr "Ungültige Schriftgröße." #~ "‘ kann nicht aktiviert werden, Einlesen der Konfigurationsdatei " #~ "fehlgeschlagen." -#~ msgid "Theme" -#~ msgstr "Motiv" - #~ msgid "Method List For '%s':" #~ msgstr "Methodenliste für '%s':" @@ -8484,9 +8621,6 @@ msgstr "Ungültige Schriftgröße." #~ msgid "Import Anyway" #~ msgstr "Trotzdem importieren" -#~ msgid "Import & Open" -#~ msgstr "Importieren & Öffnen" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "Bearbeitete Szene wurde nicht gespeichert, trotzdem importierte Szene " @@ -8742,9 +8876,6 @@ msgstr "Ungültige Schriftgröße." #~ msgid "Stereo" #~ msgstr "Stereo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Tonhöhe" @@ -8911,9 +9042,6 @@ msgstr "Ungültige Schriftgröße." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Signalisiert, wenn sich eine externe Ressource verändert hat." -#~ msgid "Tutorials" -#~ msgstr "Anleitungen" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Öffnet https://godotengine.org im Abschnitt ‚Tutorials‘." diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po index 52cf8a1ec4..e0d10c9264 100644 --- a/editor/translations/de_CH.po +++ b/editor/translations/de_CH.po @@ -196,8 +196,7 @@ msgstr "Erstelle %d in neuer Ebene inklusiv Bild?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -374,14 +373,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -390,47 +381,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -550,6 +509,17 @@ msgstr "" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Typ ändern" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change" +msgstr "Typ ändern" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Node erstellen" @@ -655,7 +625,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -740,9 +710,10 @@ msgstr "Projekt exportieren" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " +msgstr "Projektname:" #: editor/editor_about.cpp msgid "Developers" @@ -826,7 +797,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1138,7 +1109,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1352,6 +1323,17 @@ msgid "Description" msgstr "Script hinzufügen" #: 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 "Properties" msgstr "" @@ -1383,6 +1365,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1394,6 +1380,11 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Script hinzufügen" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1402,8 +1393,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1461,7 +1452,8 @@ msgstr "Ohne eine Szene kann das nicht funktionieren." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2026,6 +2018,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2410,7 +2409,7 @@ msgstr "" #: editor/export_template_manager.cpp #, fuzzy -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "Fehler beim Schreiben des Projekts PCK!" #: editor/export_template_manager.cpp @@ -2573,9 +2572,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2583,22 +2580,22 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "Szene kann nicht gespeichert werden." #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Szene kann nicht gespeichert werden." #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "Szene '%s' hat kapute Abhängigkeiten:" #: editor/filesystem_dock.cpp @@ -3252,6 +3249,11 @@ msgstr "Node Filter editieren" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animations-Node" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3420,6 +3422,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3728,6 +3731,14 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Okay" + +#: 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" @@ -3739,11 +3750,6 @@ msgid "Error instancing scene from %s" msgstr "Fehler beim Instanzieren der %s Szene" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Bitte nur ein Node selektieren." - -#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Change default type" msgstr "Typ ändern" @@ -4118,7 +4124,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4515,14 +4521,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4598,6 +4606,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5033,85 +5045,85 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "" +msgid "Keying is disabled (no key inserted)." +msgstr "\"keying\" ist deaktiviert (Bild nicht hinzugefügt)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "" +msgid "Animation Key Inserted." +msgstr "Animationsbild eingefügt." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "Typ ändern" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "" +#, fuzzy +msgid "Surface Changes" +msgstr "Oberfläche %d" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "\"keying\" ist deaktiviert (Bild nicht hinzugefügt)." +msgid "Bottom" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Animationsbild eingefügt." +msgid "Left View." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Typ ändern" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Surface Changes" -msgstr "Oberfläche %d" +msgid "Front View." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5126,6 +5138,10 @@ msgstr "Okay :(" 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 "Bitte nur ein Node selektieren." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "" @@ -5200,16 +5216,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "Selektiere Node(s) zum Importieren aus" #: editor/plugins/spatial_editor_plugin.cpp @@ -5487,10 +5499,18 @@ msgstr "Node(s) entfernen" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5516,14 +5536,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5663,6 +5686,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5764,6 +5791,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Node(s) löschen" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Abbrechen" @@ -5875,10 +5927,9 @@ msgid "Please choose a 'project.godot' file." msgstr "Bitte ausserhalb des Projekt Verzeichnis exportieren!" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" +#, fuzzy +msgid "Please choose an empty folder." +msgstr "Bitte ausserhalb des Projekt Verzeichnis exportieren!" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5889,6 +5940,15 @@ msgid "Imported Project" msgstr "Importierte Projekte" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Node erstellen" + +#: 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 "" @@ -5934,14 +5994,28 @@ msgid "Import Existing Project" msgstr "Existierendes Projekt importieren" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importiere von folgendem Node:" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Neues Projekt erstellen" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Node erstellen" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Projektname:" @@ -5959,10 +6033,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6009,6 +6079,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6137,12 +6211,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Change" -msgstr "Typ ändern" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6530,10 +6598,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Okay" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6619,7 +6683,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6923,7 +6987,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6932,6 +6996,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Connections editieren" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7282,10 +7351,51 @@ msgstr "Projekteinstellungen" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Projektname:" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7654,23 +7764,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" +msgstr "Neues Projekt erstellen" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7690,6 +7805,13 @@ msgstr "" "instanzierten Szenen) erlaubt. Das erste erstellte gewinnt der Rest wird " "ignoriert." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7769,7 +7891,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7833,6 +7955,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7878,8 +8007,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7947,8 +8076,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 20ded4a4fb..a1e1b1d4ae 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -190,8 +190,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -368,14 +367,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -384,47 +375,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -542,6 +501,15 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp msgid "Create New %s" msgstr "" @@ -647,7 +615,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -730,8 +698,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -816,7 +784,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1123,7 +1091,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1335,6 +1303,17 @@ msgid "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 "Properties" msgstr "" @@ -1366,6 +1345,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1377,6 +1360,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1385,8 +1372,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1440,7 +1427,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -1993,6 +1981,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2372,7 +2367,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2526,9 +2521,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2536,19 +2529,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +msgid "Error moving:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3185,6 +3178,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3350,6 +3347,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3650,19 +3648,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4033,7 +4034,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4422,14 +4423,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4505,6 +4508,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4936,83 +4943,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5027,6 +5034,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5100,15 +5111,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5383,10 +5390,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5412,14 +5427,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5557,6 +5575,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5657,6 +5679,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5764,9 +5810,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5778,6 +5822,14 @@ msgid "Imported Project" 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 "" @@ -5818,14 +5870,26 @@ 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 "" @@ -5842,10 +5906,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5891,6 +5951,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6017,11 +6081,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6399,10 +6458,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6487,7 +6542,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6778,7 +6833,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6787,6 +6842,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7132,10 +7191,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7481,23 +7580,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +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 "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7512,6 +7615,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7580,7 +7690,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7639,6 +7749,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7684,8 +7801,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7750,8 +7867,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/el.po b/editor/translations/el.po index 6b63d8eef8..e8841a9338 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -3,12 +3,12 @@ # Copyright (c) 2014-2018 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. +# George Tsiamasiotis <gtsiam@windowslive.com>, 2017-2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-05 21:46+0000\n" +"PO-Revision-Date: 2018-01-24 19:46+0000\n" "Last-Translator: George Tsiamasiotis <gtsiam@windowslive.com>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -27,9 +27,8 @@ msgid "All Selection" msgstr "Επιλογή όλων" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Anim Αλλαγή τιμής" +msgstr "Anim Αλλαγή χÏόνου στιγμιοτÏπου" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -40,9 +39,8 @@ msgid "Anim Change Transform" msgstr "Anim Αλλαγή Î¼ÎµÏ„Î±ÏƒÏ‡Î·Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (transform)" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Anim Αλλαγή τιμής" +msgstr "Anim Αλλαγή τιμής στιγμιοτÏπου" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -198,8 +196,7 @@ msgstr "ΔημιουÏγία %d νÎων κομματιών και εισαγωΠ#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "ΔημιουÏγία" @@ -378,14 +375,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Αντικαταστάθηκαν %d εμφανίσεις." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Αντικατάσταση" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Αντικατάσταση όλων" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Αντιστοίχηση πεζών-κεφαλαίων" @@ -394,48 +383,16 @@ msgid "Whole Words" msgstr "ΟλόκληÏες λÎξεις" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Μόνο στην επιλογή" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Αναζήτηση" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "ΕÏÏεση" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Επόμενο" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Δεν βÏÎθηκε!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Αντικατάσταση με" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ΔιάκÏιση πεζών-κεφαλαίων" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "ΑντίστÏοφα" +msgid "Replace" +msgstr "Αντικατάσταση" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Ρώτησε στην αντικατάσταση" +msgid "Replace All" +msgstr "Αντικατάσταση όλων" #: editor/code_editor.cpp -msgid "Skip" -msgstr "ΠαÏάλειψη" +msgid "Selection Only" +msgstr "Μόνο στην επιλογή" #: editor/code_editor.cpp msgid "Zoom In" @@ -537,9 +494,8 @@ msgid "Connecting Signal:" msgstr "ΣÏνδεση στο σήμα:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "ΣÏνδεση του '%s' στο '%s'" +msgstr "ΑποσÏνδεση του '%s' απο το '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -555,9 +511,17 @@ msgid "Signals" msgstr "Σήματα" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Αλλαγή Ï„Ïπου %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Αλλαγή" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "ΔημιουÏγία νÎου" +msgstr "ΔημιουÏγία νÎου %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -667,8 +631,8 @@ msgstr "" "Îα αφαιÏεθοÏν; (ΑδÏνατη η αναίÏεση)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "ΑδÏνατη η αφαίÏεση:\n" +msgid "Cannot remove:" +msgstr "ΑδÏνατη η αφαίÏεση:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -750,9 +714,9 @@ msgstr "ΙδÏÏ…Ï„ÎÏ‚ του ÎÏγου" msgid "Lead Developer" msgstr "Επικεφαλής Ï€ÏογÏαμματιστής" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "ΔιαχειÏιστής" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "ΔιαχειÏιστής ÎÏγων " #: editor/editor_about.cpp msgid "Developers" @@ -841,7 +805,7 @@ msgid "Success!" msgstr "Επιτυχία!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Εγκατάσταση" @@ -862,9 +826,8 @@ msgid "Rename Audio Bus" msgstr "Μετονομασία διαÏλου ήχου" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Εναλλαγή σόλο διαÏλου ήχου" +msgstr "Αλλαγή Îντασης διαÏλου ήχου" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -929,7 +892,7 @@ msgstr "ΔιαγÏαφή εφÎ" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Ήχος" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1106,13 +1069,12 @@ msgid "Updating scene.." msgstr "ΕνημÎÏωση σκηνής.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(άδειο)" +msgstr "[άδειο]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[μη αποθηκευμÎνο]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1152,8 +1114,8 @@ msgid "Packing" msgstr "ΠακετάÏισμα" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Δεν βÏÎθηκε το αÏχείο Ï€ÏοτÏπου:\n" +msgid "Template file not found:" +msgstr "Δεν βÏÎθηκε αÏχείο Ï€ÏοτÏπου:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1364,6 +1326,20 @@ msgid "Description" msgstr "ΠεÏιγÏαφή" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Online Tutorial:" + +#: 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 "" +"Δεν υπάÏχει ακόμα βοήθεια για αυτήν την κλάση, μποÏείτε να την [color=$color]" +"[url=$url]γÏάψετε[/url][/color] ή να την [color=$color][url=$url2]ζητήσετε[/" +"url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Ιδιότητες" @@ -1399,6 +1375,10 @@ msgstr "" msgid "Search Text" msgstr "Αναζήτηση κειμÎνου" +#: editor/editor_help.cpp +msgid "Find" +msgstr "ΕÏÏεση" + #: editor/editor_log.cpp msgid "Output:" msgstr "Έξοδος:" @@ -1410,6 +1390,10 @@ msgstr "Έξοδος:" msgid "Clear" msgstr "ΕκκαθάÏιση" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "ΕκκαθάÏιση εξόδου" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Σφάλμα κατά την αποθήκευση πόÏου!" @@ -1418,8 +1402,8 @@ msgstr "Σφάλμα κατά την αποθήκευση πόÏου!" msgid "Save Resource As.." msgstr "Αποθήκευση πόÏου ως.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Εντάξει.." @@ -1473,10 +1457,11 @@ msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει Ï‡Ï #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"ΑδÏνατη η αποθήκευση σκηνής. Πιθανώς οι εξαÏτήσεις (στιγμιότυπα) να μην " -"μποÏοÏσαν να ικανοποιηθοÏν." +"ΑδÏνατη η αποθήκευση σκηνής. Πιθανώς οι εξαÏτήσεις (στιγμιότυπα ή " +"κληÏονομιά) να μην μποÏοÏσαν να ικανοποιηθοÏν." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -2097,13 +2082,20 @@ msgstr "Βοήθεια" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Αναζήτηση" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "ΗλεκτÏονική τεκμηÏίωση" #: editor/editor_node.cpp msgid "Q&A" -msgstr "ΕÏώτηση&Απάντηση" +msgstr "ΕÏωτήσεις & Απαντήσεις" #: editor/editor_node.cpp msgid "Issue Tracker" @@ -2368,14 +2360,12 @@ msgid "Frame #:" msgstr "ΚαÏÎ #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "ΧÏόνος:" +msgstr "ΧÏόνος" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Κλήση" +msgstr "Κλήσεις" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2482,8 +2472,8 @@ msgid "No version.txt found inside templates." msgstr "Δεν βÏÎθηκε version.txt μÎσα στα Ï€Ïότυπα." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Σφάλμα κατά τη δημιουÏγία διαδÏομης για τα Ï€Ïότυπα:\n" +msgid "Error creating path for templates:" +msgstr "Σφάλμα κατά τη δημιουÏγία διαδÏομης για τα Ï€Ïότυπα:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2518,7 +2508,6 @@ msgstr "Δεν λήφθηκε απόκÏιση." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Το αίτημα απÎτυχε." @@ -2566,9 +2555,8 @@ msgid "Connecting.." msgstr "ΣÏνδεση.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" -msgstr "Δεν ήταν δυνατή η σÏνδεση" +msgstr "ΑδÏνατη η σÏνδεση" #: editor/export_template_manager.cpp msgid "Connected" @@ -2643,11 +2631,8 @@ msgid "View items as a list" msgstr "Εμφάνιση αντικειμÎνων σε λίστα" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Κατάσταση: Η εισαγωγή απÎτυχε. ΠαÏακαλοÏμε διοÏθώστε το αÏχείο και " "επανεισάγετε το χειÏοκίνητα." @@ -2656,21 +2641,20 @@ msgid "Cannot move/rename resources root." msgstr "Δεν ήταν δυνατή η μετακίνηση/μετονομασία του πηγαίου καταλόγου." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Δεν είναι δυνατή η μετακίνηση ενός φακÎλου στον εαυτό του.\n" +msgid "Cannot move a folder into itself." +msgstr "Δεν είναι δυνατή η μετακίνηση ενός φακÎλου στον εαυτό του." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Σφάλμα κατά την μετακίνηση:\n" +msgid "Error moving:" +msgstr "Σφάλμα κατά την μετακίνηση:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Σφάλμα κατά την φόÏτωση:" +msgid "Error duplicating:" +msgstr "Σφάλμα κατά τον διπλασιασμό:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "ΑδÏνατη η ενημÎÏωση των εξαÏτήσεων:\n" +msgid "Unable to update dependencies:" +msgstr "ΑδÏνατη η ενημÎÏωση των εξαÏτήσεων:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2701,14 +2685,12 @@ msgid "Renaming folder:" msgstr "Μετονομασία καταλόγου:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Διπλασιασμός" +msgstr "Διπλασιασμός αÏχείου:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Μετονομασία καταλόγου:" +msgstr "Διπλασιασμός καταλόγου:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2727,7 +2709,6 @@ msgid "Move To.." msgstr "Μετακίνηση σε" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" msgstr "Άνοιγμα σκηνής" @@ -2744,9 +2725,8 @@ msgid "View Owners.." msgstr "Î Ïοβολή ιδιοκτητών" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Διπλασιασμός" +msgstr "ΑναπαÏαγωγή" #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2845,14 +2825,12 @@ msgid "Importing Scene.." msgstr "Εισαγωγή σκηνής..." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "ΜεταφοÏά στους χάÏτες φωτός:" +msgstr "ΔημιουÏγία χαÏτών φωτός" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "ΔημιουÏία AABB" +msgstr "ΔημιουÏία για πλÎγμα: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3146,7 +3124,7 @@ msgstr "Εξανάγκασε τονισμό άσπÏου" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" -msgstr "ΣυμπεÏιÎλαβε μαÏαφÎτια (3D)" +msgstr "ΣυμπεÏιÎλαβε τα μαÏαφÎτια (3D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -3322,6 +3300,10 @@ msgstr "ΕπεξεÏγασία φίλτÏων κόμβων" msgid "Filters.." msgstr "ΦίλτÏα.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "ΔÎντÏο κίνησης" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "ΔωÏεάν" @@ -3472,23 +3454,31 @@ 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." #: 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 "" +"ΑπÎτυχε η δημιουÏγία του χάÏτη φψτός, σιγουÏευτείτε ότι η διαδÏομή είναι " +"εγγÏάψιμη." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "ΜεταφοÏά στους χάÏτες φωτός:" +msgstr "Î ÏοεπεξεÏγασία χαÏτών φωτός" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Î Ïοεπισκόπηση" @@ -3793,6 +3783,14 @@ msgstr "Î Ïόσθεσε %s" msgid "Adding %s..." msgstr "Î Ïοσθήκη %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3804,11 +3802,6 @@ msgid "Error instancing scene from %s" msgstr "Σφάλμα κατά την αÏχικοποίηση σκηνής από %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Αυτή η λειτουÏγία απαιτεί Îναν μόνο επιλεγμÎνο κόμβο." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Αλλαγή Ï€ÏοεπιλεγμÎνου Ï„Ïπου" @@ -4001,19 +3994,19 @@ msgstr "ΔημιουÏγία πλÎγματος πλοήγησης" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Το πεÏιεχόμενο πλÎγμα δεν είναι Ï„Ïπου ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "Το ξεδίπλωμα των UV απÎτυχε, το πλÎγμα μποÏεί να μην είναι πολλαπλό?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "ΚανÎνα πλÎγμα για αποσφαλμάτωση." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Το μοντÎλο δεν Îχει UV σε αυτό το στÏώμα" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4056,18 +4049,16 @@ msgid "Create Outline Mesh.." msgstr "ΔημιουÏγία πλÎγματος πεÏιγÏάμματος.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "ΚάμεÏα" +msgstr "Εμφάνιση UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "ΚάμεÏα" +msgstr "Εμφάνιση UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Ξεδίπλωμα UV2 για χάÏτη φωτός / ΑΟ" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4181,11 +4172,11 @@ msgstr "ΣυμπλήÏωση" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Bake!" -msgstr "Î ÏοεπεξεÏγάσου!" +msgstr "Î Ïοετοίμασε!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Î Ïοετοιμασία του πλÎγματος πλοήγησης.\n" +msgid "Bake the navigation mesh." +msgstr "Î Ïοετοιμασία του πλÎγματος πλοήγησης." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4575,17 +4566,17 @@ msgstr "ΦόÏτωση πόÏου" msgid "Paste" msgstr "Επικόληση" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "Î ÏόφÏαμμα Ï€ÏοφόÏτωσης" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "ΕκκαθάÏιση Ï€Ïόσφατων αÏχείων" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Κλείσιμο και αποθήκευση αλλαγών;\n" -"\"" +msgid "Close and save changes?" +msgstr "Κλείσιμο και αποθήκευση αλλαγών;" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4656,9 +4647,12 @@ msgid "Soft Reload Script" msgstr "Απλή επαναφόÏτωση δεσμής ενεÏγειών" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "ΑντιγÏαφή διαδÏομής" +msgstr "ΑντιγÏαφή διαδÏομής δεσμής ενεÏγειών" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Εμφάνιση στο σÏστημα αÏχείων" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4851,9 +4845,8 @@ msgid "Clone Down" msgstr "Κλωνοποίηση κάτω" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Ξεδίπλωμα γÏαμμής" +msgstr "Δίπλωμα/Ξεδίπλωμα γÏαμμής" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5097,85 +5090,85 @@ msgid "Rotating %s degrees." msgstr "ΠεÏιστÏοφή %s μοίÏες." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Κάτω όψη." +msgid "Keying is disabled (no key inserted)." +msgstr "" +"Η δημιουÏγία κλειδιών είναι απενεÏγοποιημÎνη (Δεν Îχει εισαχθεί κλειδί)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Κάτω" +msgid "Animation Key Inserted." +msgstr "Το κλειδί κίνησης Îχει εισαχθεί." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Πάνω όψη." +msgid "Objects Drawn" +msgstr "ΖωγÏαφισμÎνα αντικείμενα" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Πίσω όψη." +msgid "Material Changes" +msgstr "ΑλλαγÎÏ‚ υλικοÏ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Πίσω" +msgid "Shader Changes" +msgstr "ΑλλαγÎÏ‚ Ï€ÏογÏάμματος σκίασης" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "ΕμπÏόσθια όψη." +msgid "Surface Changes" +msgstr "ΑλλαγÎÏ‚ επιφάνειας" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "ΜπÏοστά" +msgid "Draw Calls" +msgstr "Κλήσεις σχεδίασης" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "ΑÏιστεÏή όψη." +msgid "Vertices" +msgstr "ΚοÏυφÎÏ‚" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "ΑÏιστεÏά" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Δεξιά όψη." +msgid "Top View." +msgstr "Πάνω όψη." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Δεξιά" +msgid "Bottom View." +msgstr "Κάτω όψη." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "" -"Η δημιουÏγία κλειδιών είναι απενεÏγοποιημÎνη (Δεν Îχει εισαχθεί κλειδί)." +msgid "Bottom" +msgstr "Κάτω" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Το κλειδί κίνησης Îχει εισαχθεί." +msgid "Left View." +msgstr "ΑÏιστεÏή όψη." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "ΖωγÏαφισμÎνα αντικείμενα" +msgid "Left" +msgstr "ΑÏιστεÏά" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "ΑλλαγÎÏ‚ υλικοÏ" +msgid "Right View." +msgstr "Δεξιά όψη." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "ΑλλαγÎÏ‚ Ï€ÏογÏάμματος σκίασης" +msgid "Right" +msgstr "Δεξιά" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "ΑλλαγÎÏ‚ επιφάνειας" +msgid "Front View." +msgstr "ΕμπÏόσθια όψη." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Κλήσεις σχεδίασης" +msgid "Front" +msgstr "ΜπÏοστά" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "ΚοÏυφÎÏ‚" +msgid "Rear View." +msgstr "Πίσω όψη." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Πίσω" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5190,6 +5183,10 @@ 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 "Display Normal" msgstr "Κανονική εμφάνιση" @@ -5263,16 +5260,12 @@ msgid "Freelook Speed Modifier" msgstr "ΤαχÏτητα ελεÏθεÏου κοιτάγματος" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "Î Ïοεπισκόπηση" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Διάλογος XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Επιλογή λειτουÏγίας (Q)\n" +msgid "Select Mode (Q)" +msgstr "Επιλογή λειτουÏγίας (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5301,14 +5294,12 @@ msgid "Local Coords" msgstr "ΤοπικÎÏ‚ συντεταγμÎνες" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "ΛειτουÏγία κλιμάκωσης (R)" +msgstr "ΛειτουÏγία Ï„Î¿Ï€Î¹ÎºÎ¿Ï Ï‡ÏŽÏου (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "ΛειτουÏγία κουμπώματος:" +msgstr "ΛειτουÏγία κουμπώματος (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5425,7 +5416,7 @@ msgstr "Ρυθμίσεις" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "ΟÏατότητα μαÏαφετιών σκελετοÏ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5551,10 +5542,18 @@ msgstr "Μετακίνηση (Î Ïιν)" msgid "Move (After)" msgstr "Μετκίνιση (Μετά)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "KαÏÎ Sprite" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Î Ïοεπισκόπηση StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "Κουτί Στυλ" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "ΟÏισμός οÏθογωνίου πεÏιοχής" @@ -5580,14 +5579,17 @@ msgid "Auto Slice" msgstr "Αυτόματο κόψιμο" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Μετατόπιση:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Βήμα:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "ΔιαχωÏισμός:" @@ -5725,6 +5727,10 @@ msgstr "ΓÏαμματοσειÏά" msgid "Color" msgstr "ΧÏώμα" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "ΘÎμα" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ΔιαγÏαφή επιλογής" @@ -5810,9 +5816,8 @@ msgid "Merge from scene?" msgstr "Συγχώνευση από σκηνή;" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet..." +msgstr "ΣÏνολο πλακιδίων" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5826,6 +5831,34 @@ msgstr "Συγχώνευση από σκηνή" msgid "Error" msgstr "Σφάλμα" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" +"ΕπιλÎξτε υπότιτλο για εικονίδιο, o οποίος θα χÏησιμοποιείται και σε μη " +"ÎγκυÏες συνδÎσεις αυτόματων πλακιδίων." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"ΑÏιστεÏÏŒ κλικ: ενεÏγοποίησε το bit.\n" +"Δεξί κλικ: απενεÏγοποίησε το bit." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "ΕπÎλεξε το Ï„ÏÎχων επεξεÏγαζόμενο υπο-πλακίδιο." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "ΕπιλÎξτε υπο-πλακίδιο για να αλλάξετε την Ï€ÏοτεÏαιότητα του." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "ΑκÏÏωση" @@ -5939,12 +5972,8 @@ msgid "Please choose a 'project.godot' file." msgstr "ΠαÏακαλοÏμε επιλÎκτε Îνα αÏχείο 'project.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Το ÎÏγο θα δημιουÏγηθεί σε Îναν μη-άδειο φάκελο (Ίσως θÎλετε να " -"δημιουÏγήσετε Îναν καινοÏÏγιο)." +msgid "Please choose an empty folder." +msgstr "ΠαÏακαλοÏμε επιλÎξτε Îναν άδειο φάκελο." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5956,6 +5985,14 @@ msgid "Imported Project" 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 "Είναι καλή ιδÎα να ονομάσετε το ÎÏγο σας." @@ -5997,14 +6034,26 @@ 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 "Όνομα ÎÏγου:" @@ -6021,10 +6070,6 @@ msgid "Browse" msgstr "ΠεÏιήγηση" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "Αυτό είναι Îνα «ΕÏÏηκα»!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Ανώνυμο ÎÏγο" @@ -6081,6 +6126,10 @@ msgstr "" "Είστε Îτοιμοι να σαÏώσετε %s φακÎλους για υπαÏκτά ÎÏγα Godot. Είστε σίγουÏοι;" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "ΔιαχειÏιστής" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Λίστα ÎÏγων" @@ -6209,11 +6258,6 @@ msgid "Button 9" msgstr "Κουμπί 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Αλλαγή" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "ΑÏιθμός άξονα Joypad:" @@ -6226,9 +6270,8 @@ msgid "Joypad Button Index:" msgstr "ΑÏιθμός ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï Joypad:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "ΔιαγÏαφή συμβάντος ενÎÏγειας εισόδου" +msgstr "ΔιαγÏαφή ενÎÏγειας εισόδου" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6476,7 +6519,7 @@ msgstr "Îεα δεσμή ενεÏγειών" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "ÎÎο %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6511,9 +6554,8 @@ msgid "On" msgstr "Îαι" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Î Ïοσθήκη άδειου" +msgstr "[Άδειο]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6595,10 +6637,6 @@ msgid "Error loading scene from %s" msgstr "Σφάλμα κατά τη φόÏτωση σκηνής από %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Εντάξει" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6691,8 +6729,8 @@ msgid "Error duplicating scene to save it." msgstr "Σφάλμα κατά τον διπλασιασμό σκηνής για αποθήκευση." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Yπο-Î ÏŒÏοι:" +msgid "Sub-Resources" +msgstr "Yπο-Î ÏŒÏοι" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6997,7 +7035,7 @@ msgstr "" "ΕπιλÎξτε Îνα ή πεÏισσότεÏα αντικείμενα από την λίστα για να εμφανιστεί το " "γÏάφημα." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Σφάλματα" @@ -7006,6 +7044,10 @@ msgid "Child Process Connected" msgstr "Η παιδική διαδικασία συνδÎθηκε" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "ΑντιγÏαφή σφάλματος" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "ΕπιθεώÏηση του Ï€ÏοηγοÏμενου στιγμιοτÏπου" @@ -7047,7 +7089,7 @@ msgstr "ΠαÏακολοÏθηση" #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "Λίστα χÏήσης βιντεο-μνήμης ανά πόÏο:" +msgstr "Λίστα χÏήσης βίντεο-μνήμης ανά πόÏο:" #: editor/script_editor_debugger.cpp msgid "Total:" @@ -7055,7 +7097,7 @@ msgstr "Συνολικά:" #: editor/script_editor_debugger.cpp msgid "Video Mem" -msgstr "βιντεο-μνήμη" +msgstr "Βίντεο μνήμη" #: editor/script_editor_debugger.cpp msgid "Resource Path" @@ -7099,7 +7141,7 @@ msgstr "ΣυντομεÏσεις" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "ΣÏνδεση" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7151,43 +7193,39 @@ 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 -#, fuzzy msgid "Remove current entry" -msgstr "ΑφαίÏεση σημείου καμπÏλης" +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:" -msgstr "" +msgstr "ΠλατφόÏμα:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "ΑντιγÏαφή σε πλατφόÏμα.." +msgstr "ΠλατφόÏμα" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy 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 -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "Βιβλιοθήκη GDNative" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7358,10 +7396,50 @@ msgstr "Ρυθμίσεις GridMap" msgid "Pick Distance:" msgstr "Επιλογή απόστασης:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "ΔημιουÏγία λÏσης..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "ΔημιουÏγία ÎÏγου C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "ΑπÎτυχε η δημιουÏγία λÏσης." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "ΑπÎτυχε η αποθήκευση της λÏσης." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "ΤÎλος" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "ΑπÎτυχε η δημιουÏγία ÎÏγου C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Μονοφωνικό" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "ΔημιουÏγία λÏσης C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Δόμηση" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Δόμηση ÎÏγου" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Î Ïοειδοποιήσεις" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7724,24 +7802,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "ΕκτÎλεση εξαγόμενης HTMP στον Ï€ÏοεπιλεγμÎνο πεÏιηγητή του συστήματος." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Δεν ήταν δυνατό το γÏάψιμο στο αÏχείο:\n" +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 "Could not open template for export:\n" -msgstr "Δεν ήταν δυνατό το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:\n" +msgid "Invalid export template:" +msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:\n" +msgid "Could not read custom HTML shell:" +msgstr "Σφάλμα κατά την ανάγνωση Ï€ÏοσαÏμοσμÎνου κελÏφους HTML:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "Δεν ήταν δυνατή η ανάγνωση του Ï€ÏοσαÏμοσμÎνου κελÏφους HTML:\n" +msgid "Could not read boot splash image file:" +msgstr "Σφάλμα κατά την ανάγνωση εικόνας εκκίνησης:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "Δεν ήταν δυνατή η ανάγνωση της εικόνας εκκίνησης:\n" +msgid "Using default boot splash image." +msgstr "ΧÏήση Ï€ÏοεπιλεγμÎνης εικόνας εκκίνησης." #: scene/2d/animated_sprite.cpp msgid "" @@ -7760,6 +7842,17 @@ msgstr "" "στιγμιότυπων σκηνών). Το Ï€Ïώτο που δημιουÏγήθηκε θα δουλÎψει, ενώ τα άλλα θα " "αγνοηθοÏν." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"Αυτός ο κόμβος δεν Îχει παιδιά κόμβους σχήματος, οπότε δεν μποÏεί να " +"αντιδÏάσει με το πεÏιβάλλον.\n" +"Σκεφτείτε να Ï€ÏοσθÎσετε CollisionShape2D ή CollisionPolygon2D για να οÏίσετε " +"το σχήμα του." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7850,7 +7943,7 @@ msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεΠ#: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7905,23 +7998,31 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "Το ARVROrigin απαιτεί Îναν κόμβο ARVRCamera ως παιδί" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "ΤοποθÎτηση πλεγμάτων" +msgstr "ΤοποθÎτηση πλεγμάτων: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "ΤοποθÎτηση πλεγμάτων" +msgstr "ΤοποθÎτηση φώτων:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "ΟλοκλήÏωση σχεδιαγÏάμματος" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "ΤοποθÎτηση πλεγμάτων" +msgstr "Φώτηση πλεγμάτων: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"Αυτός ο κόμβος δεν Îχει παιδιά κόμβους σχήματος, οπότε δεν μποÏεί να " +"αντιδÏάσει με το πεÏιβάλλον.\n" +"Σκεφτείτε να Ï€ÏοσθÎσετε CollisionShape ή CollisionPolygon για να οÏίσετε το " +"σχήμα του." #: scene/3d/collision_polygon.cpp msgid "" @@ -7983,8 +8084,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "ΑλλαγÎÏ‚ στο μÎγεθος του RigidBody (στις λειτουÏγίες character ή rigid) θα " @@ -8067,11 +8168,11 @@ msgstr "(Άλλο)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Το Ï€ÏοεπιλεγμÎνο πεÏιβάλλον, όπως Îχει οÏισθεί στις Ïυθμίσεις ÎÏγου " -"(Rendering -> Viewport -> Default Environment) δεν μποÏοÏσε να φοÏτωθεί." +"(Rendering -> Environment -> Default Environment) δεν μποÏοÏσε να φοÏτωθεί." #: scene/main/viewport.cpp msgid "" @@ -8101,6 +8202,40 @@ msgstr "Σφάλμα κατά την φόÏτωση της γÏαμματοσεΠmsgid "Invalid font size." msgstr "Μη ÎγκυÏο μÎγεθος γÏαμματοσειÏάς." +#~ msgid "Next" +#~ msgstr "Επόμενο" + +#~ msgid "Not found!" +#~ msgstr "Δεν βÏÎθηκε!" + +#~ msgid "Replace By" +#~ msgstr "Αντικατάσταση με" + +#~ msgid "Case Sensitive" +#~ msgstr "ΔιάκÏιση πεζών-κεφαλαίων" + +#~ msgid "Backwards" +#~ msgstr "ΑντίστÏοφα" + +#~ msgid "Prompt On Replace" +#~ msgstr "Ρώτησε στην αντικατάσταση" + +#~ msgid "Skip" +#~ msgstr "ΠαÏάλειψη" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Το ÎÏγο θα δημιουÏγηθεί σε Îναν μη-άδειο φάκελο (Ίσως θÎλετε να " +#~ "δημιουÏγήσετε Îναν καινοÏÏγιο)." + +#~ msgid "That's a BINGO!" +#~ msgstr "Αυτό είναι Îνα «ΕÏÏηκα»!" + +#~ msgid "preview" +#~ msgstr "Î Ïοεπισκόπηση" + #~ msgid "Move Add Key" #~ msgstr "Μετακίνηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï€Ïοσθήκης" @@ -8194,9 +8329,6 @@ msgstr "Μη ÎγκυÏο μÎγεθος γÏαμματοσειÏάς." #~ msgid "' parsing of config failed." #~ msgstr "' απÎτυχε η ανάλυση του αÏγείου παÏαμÎÏ„Ïων." -#~ msgid "Theme" -#~ msgstr "ΘÎμα" - #~ msgid "Method List For '%s':" #~ msgstr "Λίστα συναÏτήσεων για '%s':" @@ -8467,9 +8599,6 @@ msgstr "Μη ÎγκυÏο μÎγεθος γÏαμματοσειÏάς." #~ msgid "Import Anyway" #~ msgstr "Εισαγωγή οÏτως ή άλλως" -#~ msgid "Import & Open" -#~ msgstr "Εισαγωγή & Άνοιγμα" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "Η Ï„ÏÎχουσα σκηνή δεν Îχει αποθηκευτεί, άνοιγμα της εισαγμÎνης σκηνής " @@ -8729,9 +8858,6 @@ msgstr "Μη ÎγκυÏο μÎγεθος γÏαμματοσειÏάς." #~ msgid "Stereo" #~ msgstr "ΣτεÏεοφωνικό" -#~ msgid "Mono" -#~ msgstr "Μονοφωνικό" - #~ msgid "Pitch" #~ msgstr "Τόνος" @@ -8903,9 +9029,6 @@ msgstr "Μη ÎγκυÏο μÎγεθος γÏαμματοσειÏάς." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Ειδοποίηση όταν Îνας εξωτεÏικός πόÏος Îχει αλλάξει." -#~ msgid "Tutorials" -#~ msgstr "Βοηθήματα" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "" #~ "Άνοιγμα της ιστοσελίδας https://godotengine.org στην πεÏιοχή tutorials." diff --git a/editor/translations/es.po b/editor/translations/es.po index 328e50d9f2..df1a38d45b 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -218,8 +218,7 @@ msgstr "¿Quieres crear %d NUEVAS pistas e insertar claves?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Crear" @@ -398,14 +397,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d ocurrencia/s reemplazadas." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Reemplazar" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Reemplazar todo" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Coincidir mayús/minúsculas" @@ -414,48 +405,16 @@ msgid "Whole Words" msgstr "Palabras completas" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Sólo selección" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Buscar" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Búsqueda" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Siguiente" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "¡No se ha encontrado!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Reemplazar por" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Respetar mayús/minúsculas" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Hacia atrás" +msgid "Replace" +msgstr "Reemplazar" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Preguntar antes de reemplazar" +msgid "Replace All" +msgstr "Reemplazar todo" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Saltar" +msgid "Selection Only" +msgstr "Sólo selección" #: editor/code_editor.cpp msgid "Zoom In" @@ -576,6 +535,16 @@ msgstr "Señales" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Cambiar tipo" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Cambiar" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Crear nuevo" @@ -690,7 +659,8 @@ msgstr "" "¿Seguro que quieres quitarlos? (No puedes deshacerlo)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "No se puede eliminar:\n" #: editor/dependency_editor.cpp @@ -773,8 +743,9 @@ msgstr "Los Fundadores del Proyecto" msgid "Lead Developer" msgstr "Desarrollador Principal" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Administrador de proyectos" #: editor/editor_about.cpp @@ -863,7 +834,7 @@ msgid "Success!" msgstr "Finalizado!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Instalar" @@ -1178,7 +1149,8 @@ msgid "Packing" msgstr "Empaquetando" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "No se encontró archivo plantilla:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1391,6 +1363,21 @@ msgid "Description" msgstr "Descripción" #: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Tutoriales" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Actualmente no hay una descripción para este método. Por favor, ¡ayúdanos " +"[color=$color][url=$url]aportando una[/url][/color]!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Propiedades" @@ -1426,6 +1413,10 @@ msgstr "" msgid "Search Text" msgstr "Texto de búsqueda" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Búsqueda" + #: editor/editor_log.cpp msgid "Output:" msgstr "Salida:" @@ -1437,6 +1428,11 @@ msgstr "Salida:" msgid "Clear" msgstr "Borrar todo" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Salida" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "¡Hubo un error al guardar el recurso!" @@ -1445,8 +1441,8 @@ msgstr "¡Hubo un error al guardar el recurso!" msgid "Save Resource As.." msgstr "Guardar recurso como.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Ya veo.." @@ -1499,8 +1495,10 @@ msgid "This operation can't be done without a tree root." msgstr "Esta operación no puede realizarse sin una escena raÃz." #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "No se pudo guardar la escena. Es posible que no se hayan podido satisfacer " "las dependencias (instancias)." @@ -2121,6 +2119,13 @@ msgstr "Ayuda" msgid "Classes" msgstr "Clases" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Buscar" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentación en LÃnea" @@ -2508,7 +2513,8 @@ msgid "No version.txt found inside templates." msgstr "No se ha encontrado el archivo version.txt dentro de las plantillas." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "Error al crear ruta para las plantillas:\n" #: editor/export_template_manager.cpp @@ -2672,9 +2678,8 @@ msgid "View items as a list" msgstr "Ver elementos como una lista" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "Estado: No se pudo importar el archivo. Por favor, arregla el archivo e " @@ -2687,20 +2692,22 @@ msgstr "No se puede mover/renombrar la raÃz de recursos." #: editor/filesystem_dock.cpp #, fuzzy -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "No se puede importar una carpeta sobre si misma.\n" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +#, fuzzy +msgid "Error moving:" msgstr "Error al mover:\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Error al cargar:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +#, fuzzy +msgid "Unable to update dependencies:" msgstr "No se ha podido actualizar las dependencias:\n" #: editor/filesystem_dock.cpp @@ -3375,6 +3382,11 @@ msgstr "Editar filtros de nodo" msgid "Filters.." msgstr "Filtros.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animación" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Libre" @@ -3544,6 +3556,7 @@ msgid "Bake Lightmaps" msgstr "Transfiriendo a «lightmaps»:" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Vista previa" @@ -3875,6 +3888,14 @@ msgstr "Añadir todos" msgid "Adding %s..." msgstr "Añadiendo %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Aceptar" + +#: 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" @@ -3886,11 +3907,6 @@ msgid "Error instancing scene from %s" msgstr "Error al instanciar escena desde %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Esta operación requiere un solo nodo seleccionado." - -#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Change default type" msgstr "Cambiar Valor por Defecto" @@ -4284,7 +4300,7 @@ msgstr "¡Quemar!" #: editor/plugins/navigation_mesh_editor_plugin.cpp #, fuzzy -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "Crear modelo de navegación 3D" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4711,15 +4727,19 @@ msgstr "Cargar recurso" msgid "Paste" msgstr "Pegar" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Ruta de recursos" + #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Clear Recent Files" msgstr "Reestablecer huesos" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +#, fuzzy +msgid "Close and save changes?" msgstr "" "¿Cerrar y guardar cambios?\n" "\"" @@ -4799,6 +4819,11 @@ msgid "Copy Script Path" msgstr "Copiar ruta" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "SistDeArchivos" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "Previo en historial" @@ -5253,50 +5278,6 @@ msgid "Rotating %s degrees." msgstr "Girando %s grados." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Vista inferior." - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Fondo" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Vista superior." - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Vista anterior." - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Detrás" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Vista frontal." - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Frente" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vista izquierda." - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Izquierda" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Vista derecha." - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Derecha" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." msgstr "Poner claves está desactivado (no se insertaron claves)." @@ -5339,6 +5320,50 @@ msgid "FPS" msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "Vista superior." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "Vista inferior." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "Fondo" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "Vista izquierda." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "Izquierda" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "Vista derecha." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "Derecha" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "Vista frontal." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "Frente" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "Vista anterior." + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "Detrás" + +#: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" msgstr "Alinear con vista" @@ -5350,6 +5375,10 @@ msgstr "Muy bien :(" msgid "No parent to instance a child at." msgstr "No hay padre al que instanciarle un hijo." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Esta operación requiere un solo nodo seleccionado." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Mostrar normales" @@ -5436,17 +5465,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidad de la vista libre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "Vista previa" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Ventana de transformación" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "Modo de selección" #: editor/plugins/spatial_editor_plugin.cpp @@ -5732,10 +5756,20 @@ msgstr "Borrar nodos" msgid "Move (After)" msgstr "Mover a la izquierda" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "Frames del Stack" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Vista previa de StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Estilo" + #: editor/plugins/texture_region_editor_plugin.cpp #, fuzzy msgid "Set Region Rect" @@ -5762,14 +5796,17 @@ msgid "Auto Slice" msgstr "Autotrocear" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Desplazamiento:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Paso:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separación:" @@ -5910,6 +5947,11 @@ msgstr "TipografÃa" msgid "Color" msgstr "Color" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Guardar tema" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -6016,6 +6058,32 @@ msgstr "Unir desde escena" msgid "Error" msgstr "Error" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +msgstr "Autotrocear" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Guardar el recurso editado actualmente." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Cancelar" @@ -6148,12 +6216,9 @@ msgid "Please choose a 'project.godot' file." msgstr "¡Prueba exportando fuera de la carpeta del proyecto!" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Tu proyecto se creará en un directorio existente (quizás quieras crear un " -"directorio nuevo)." +#, fuzzy +msgid "Please choose an empty folder." +msgstr "¡Prueba exportando fuera de la carpeta del proyecto!" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6165,6 +6230,15 @@ msgid "Imported Project" msgstr "Proyecto importado" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "No se pudo crear la carpeta." + +#: 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 "SerÃa una buena idea nombrar tu proyecto." @@ -6210,14 +6284,29 @@ msgid "Import Existing Project" msgstr "Importar proyecto existente" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importar y abrir" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Crear proyecto nuevo" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Crear emisor" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Instalar proyecto:" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Instalar" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nombre del proyecto:" @@ -6235,10 +6324,6 @@ msgid "Browse" msgstr "Examinar" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Proyecto sin nombre" @@ -6299,6 +6384,10 @@ msgstr "" "¿Quieres continuar?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Administrador de proyectos" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Lista de proyectos" @@ -6431,11 +6520,6 @@ msgid "Button 9" msgstr "Botón 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Cambiar" - -#: editor/project_settings_editor.cpp #, fuzzy msgid "Joypad Axis Index:" msgstr "Ãndice de ejes del mando:" @@ -6845,10 +6929,6 @@ msgid "Error loading scene from %s" msgstr "Error al cargar escena desde %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Aceptar" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6939,7 +7019,7 @@ msgstr "Error al duplicar escena para guardarla." #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "Recursos:" #: editor/scene_tree_dock.cpp @@ -7272,7 +7352,7 @@ msgstr "Función:" msgid "Pick one or more items from the list to display the graph." msgstr "Elige uno o más elementos de la lista para mostrar el gráfico." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Errores" @@ -7281,6 +7361,11 @@ msgid "Child Process Connected" msgstr "Proceso Hijo Conectado" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Errores de carga" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Inspeccionar instancia anterior" @@ -7664,11 +7749,59 @@ msgstr "Ajustes de fijado" msgid "Pick Distance:" msgstr "Instancia:" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "Creando octree de texturas" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "¡No se pudo crear el contorno!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Hubo un problema al cargar el recurso." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "¡Hecho!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Hubo un problema al cargar el recurso." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Crear contorno" + #: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "Builds" msgstr "Compilaciones" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Proyecto" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "Advertencia" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -8060,27 +8193,32 @@ msgstr "Ejecutar HTML exportado en el navegador por defecto del sistema." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "No se pudo cargar el tile:" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "No se pudo crear la carpeta." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Instalar plantillas de exportación" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" +msgstr "No se pudo cargar el tile:" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" msgstr "No se pudo cargar el tile:" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "No se pudo cargar el tile:" #: scene/2d/animated_sprite.cpp @@ -8100,6 +8238,13 @@ msgstr "" "instanciadas). El primero creado va a funcionar, mientras que el resto van a " "ser ignorados." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -8190,7 +8335,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp #, fuzzy msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8263,6 +8408,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "Copiando datos de imágenes" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8325,8 +8477,8 @@ msgstr "" #: scene/3d/physics_body.cpp #, fuzzy msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "Los cambios en el tamaño del RigidBody (en el personaje o modos rÃgidos) " @@ -8411,9 +8563,10 @@ msgid "(Other)" msgstr "(Otros)" #: scene/main/scene_tree.cpp +#, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "El entorno por defecto especificado en los Ajustes del Proyecto (Renderizado " "-> Ventana -> Entorno por Defecto) no se ha podido cargar." @@ -8446,6 +8599,41 @@ msgstr "Error al cargar la tipografÃa." msgid "Invalid font size." msgstr "Tamaño de tipografÃa incorrecto." +#~ msgid "Next" +#~ msgstr "Siguiente" + +#~ msgid "Not found!" +#~ msgstr "¡No se ha encontrado!" + +#~ msgid "Replace By" +#~ msgstr "Reemplazar por" + +#~ msgid "Case Sensitive" +#~ msgstr "Respetar mayús/minúsculas" + +#~ msgid "Backwards" +#~ msgstr "Hacia atrás" + +#~ msgid "Prompt On Replace" +#~ msgstr "Preguntar antes de reemplazar" + +#~ msgid "Skip" +#~ msgstr "Saltar" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Tu proyecto se creará en un directorio existente (quizás quieras crear un " +#~ "directorio nuevo)." + +#~ msgid "That's a BINGO!" +#~ msgstr "BINGO!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "Vista previa" + #~ msgid "Move Add Key" #~ msgstr "Mover o añadir clave" @@ -8546,10 +8734,6 @@ msgstr "Tamaño de tipografÃa incorrecto." #~ msgid "' parsing of config failed." #~ msgstr "' análisis de config fallido." -#, fuzzy -#~ msgid "Theme" -#~ msgstr "Guardar tema" - #~ msgid "Method List For '%s':" #~ msgstr "Lista de métodos Para '%s':" @@ -8824,9 +9008,6 @@ msgstr "Tamaño de tipografÃa incorrecto." #~ msgid "Import Anyway" #~ msgstr "Importar de todos modos" -#~ msgid "Import & Open" -#~ msgstr "Importar y abrir" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "La escena editada no se ha guardado, ¿Quieres abrir la escena importada " @@ -9085,9 +9266,6 @@ msgstr "Tamaño de tipografÃa incorrecto." #~ msgid "Stereo" #~ msgstr "Estéreo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Altura" @@ -9287,9 +9465,6 @@ msgstr "Tamaño de tipografÃa incorrecto." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Alerta cuando un recurso externo haya cambiado." -#~ msgid "Tutorials" -#~ msgstr "Tutoriales" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Abre https://godotengine.org en la sección de tutoriales." diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index a97f2361cc..55a1953d34 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -4,16 +4,16 @@ # 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-2017. -# Roger BR <drai_kin@hotmail.com>, 2016. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018. +# Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018. # Sebastian Silva <sebastian@sugarlabs.org>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-11-30 15:50+0000\n" -"Last-Translator: Diego López <diegodario21@gmail.com>\n" +"PO-Revision-Date: 2018-01-24 20:49+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" @@ -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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -32,9 +32,8 @@ msgid "All Selection" msgstr "Toda la Selección" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Cambiar valor de animación" +msgstr "Cambiar Tiempo de Keyframe de Anim" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -45,9 +44,8 @@ msgid "Anim Change Transform" msgstr "Cambiar Transform de Anim" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Cambiar valor de animación" +msgstr "Cambiar Valor de Keyframe de Anim" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -203,8 +201,7 @@ msgstr "Crear %d NUEVOS tracks e insertar claves?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Crear" @@ -382,14 +379,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d ocurrencia(s) Reemplazadas." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Reemplazar" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Reemplazar Todo" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Coincidir Mayúsculas/Minúsculas" @@ -398,48 +387,16 @@ msgid "Whole Words" msgstr "Palabras Completas" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Solo Selección" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Buscar" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Encontrar" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Siguiente" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "No se encontró!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Reemplazar Por" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Respetar Mayúsculas/Minúsculas" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Hacia Atrás" +msgid "Replace" +msgstr "Reemplazar" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Preguntar Antes de Reemplazar" +msgid "Replace All" +msgstr "Reemplazar Todo" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Saltear" +msgid "Selection Only" +msgstr "Solo Selección" #: editor/code_editor.cpp msgid "Zoom In" @@ -541,9 +498,8 @@ msgid "Connecting Signal:" msgstr "Conectando Señal:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Conectar '%s' a '%s'" +msgstr "Desconectar '%s' de '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -559,9 +515,17 @@ msgid "Signals" msgstr "Señales" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Cambiar Tipo de %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Cambiar" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Crear Nuevo" +msgstr "Crear Nuevo %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -670,8 +634,8 @@ msgstr "" "Quitarlos de todos modos? (imposible deshacer)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "No se puede remover:\n" +msgid "Cannot remove:" +msgstr "No se puede remover:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -754,9 +718,9 @@ msgstr "Fundadores del Proyecto" msgid "Lead Developer" msgstr "Desarrollador Principal" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Gestor de Proyectos" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Gestor de Proyectos " #: editor/editor_about.cpp msgid "Developers" @@ -844,7 +808,7 @@ msgid "Success!" msgstr "Conseguido!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Instalar" @@ -865,9 +829,8 @@ msgid "Rename Audio Bus" msgstr "Renombrar Bus de Audio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Act./Desact. Solo de Bus de Audio" +msgstr "Cambiar Volumen de Bus de Audio" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -932,7 +895,7 @@ msgstr "Eliminar Efecto" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Audio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1113,13 +1076,12 @@ msgid "Updating scene.." msgstr "Actualizando escena.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(vacÃo)" +msgstr "[vacÃo]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[sin guardar]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1159,8 +1121,8 @@ msgid "Packing" msgstr "Empaquetando" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Plantilla no encontrada:\n" +msgid "Template file not found:" +msgstr "Plantilla no encontrada:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1371,6 +1333,20 @@ msgid "Description" msgstr "Descripción" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Tutoriales En Linea:" + +#: 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 "" +"Actualmente no existen tutoriales para esta clase, podés [color=$color][url=" +"$url]contribuir uno[/url][/color] o [color=$color][url=$url2]solicitar uno[/" +"url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Propiedades" @@ -1406,6 +1382,10 @@ msgstr "" msgid "Search Text" msgstr "Texto de Búsqueda" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Encontrar" + #: editor/editor_log.cpp msgid "Output:" msgstr "Salida:" @@ -1417,6 +1397,10 @@ msgstr "Salida:" msgid "Clear" msgstr "Limpiar" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Limpiar Salida" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Error al guardar el recurso!" @@ -1425,8 +1409,8 @@ msgstr "Error al guardar el recurso!" msgid "Save Resource As.." msgstr "Guardar Recurso Como.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Ya Veo.." @@ -1480,10 +1464,11 @@ msgstr "Esta operación no puede hacerse sin una raÃz de árbol." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "No se pudo guardar la escena. Probablemente no se hayan podido satisfacer " -"dependencias (instancias)." +"dependencias (instancias o herencia)." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1581,11 +1566,11 @@ msgstr "Colapsar todas las propiedades" #: editor/editor_node.cpp msgid "Copy Params" -msgstr "Copiar Params" +msgstr "Copiar Parámetros" #: editor/editor_node.cpp msgid "Paste Params" -msgstr "Pegar Parametros" +msgstr "Pegar Parámetros" #: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" @@ -2100,6 +2085,13 @@ msgstr "Ayuda" msgid "Classes" msgstr "Clases" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Buscar" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentación Online" @@ -2287,7 +2279,7 @@ msgstr "Abrir en Editor de Script" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" -msgstr "Exportar Libreria de Assets" +msgstr "Abrir Biblioteca de Assets" #: editor/editor_node.cpp msgid "Open the next Editor" @@ -2371,14 +2363,12 @@ msgid "Frame #:" msgstr "Frame #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Tiempo:" +msgstr "Tiempo" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Llamar" +msgstr "Llamadas" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2486,8 +2476,8 @@ msgid "No version.txt found inside templates." msgstr "No se encontro ningún version.txt dentro de las plantillas." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Error creando ruta para las plantillas:\n" +msgid "Error creating path for templates:" +msgstr "Error creando rutas para las plantillas:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2522,7 +2512,6 @@ msgstr "Sin respuesta." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Solicitud fallida." @@ -2570,7 +2559,6 @@ msgid "Connecting.." msgstr "Conectando.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "No se puede conectar" @@ -2647,34 +2635,30 @@ msgid "View items as a list" msgstr "Ver items como una lista" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" -"Estado: Falló la importación del archivo. Por favor arregle el archivo y " -"reimporta manualmente." +"Estado: Falló la importación del archivo. Por favor arreglá el archivo y " +"reimportá manualmente." #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." msgstr "No se puede mover/renombrar la raiz de recursos." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "No se puede mover una carpeta dento de si misma.\n" +msgid "Cannot move a folder into itself." +msgstr "No se puede mover una carpeta dentro de si misma." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Error al mover:\n" +msgid "Error moving:" +msgstr "Error al mover:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Error cargando:" +msgid "Error duplicating:" +msgstr "Error al duplicar:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "No se pudieron actualizar las dependencias:\n" +msgid "Unable to update dependencies:" +msgstr "No se pudieron actualizar las dependencias:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2705,14 +2689,12 @@ msgid "Renaming folder:" msgstr "Renombrar carpeta:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Duplicar" +msgstr "Duplicando archivo:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Renombrar carpeta:" +msgstr "Duplicando carpeta:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2731,9 +2713,8 @@ msgid "Move To.." msgstr "Mover A.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Abrir Escena" +msgstr "Abrir Escena(s)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2748,9 +2729,8 @@ msgid "View Owners.." msgstr "Ver Dueños.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Duplicar" +msgstr "Duplicar.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2848,14 +2828,12 @@ msgid "Importing Scene.." msgstr "Importando Escena.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Transferencia a Lightmaps:" +msgstr "Generando Lightmaps" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Generando AABB" +msgstr "Generando para Mesh: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3325,6 +3303,10 @@ msgstr "Editar Filtros de Nodo" msgid "Filters.." msgstr "Filtros.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimationTree" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Libre" @@ -3474,23 +3456,30 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"No se pudo determinar una ruta de guardado para las imagenes de lightmap.\n" +"Guardá tu escena (para imagenes a ser guardadas en el mismo directorio), o " +"elegà una ruta de guardado desde las propiedades de 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 "" +"No hay meshes para hacer bake. Asegurate que contienen un canal UV2 y que el " +"flag 'Bake Light' esta activado." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Error al crear imagenes de lightmap. Asegurate que la ruta tenga permiso de " +"escritura." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "Transferencia a Lightmaps:" +msgstr "Hacer Bake de Lightmaps" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Vista Previa" @@ -3795,6 +3784,14 @@ msgstr "Agregar %s" msgid "Adding %s..." msgstr "Agregando %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "No se puede instanciar múltiples nodos sin raÃz." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3806,11 +3803,6 @@ msgid "Error instancing scene from %s" msgstr "Error al instanciar escena desde %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Esta operación requiere un solo nodo seleccionado." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Cambiar typo por defecto" @@ -4003,19 +3995,19 @@ msgstr "Crear Mesh de Navegación" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "La Mesh contenida no es del tipo ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "Fallo el UV Unwrap, la mesh podria no ser manifold?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "No hay meshes para debuguear." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "El modelo no tiene UV en esta capa" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4058,18 +4050,16 @@ msgid "Create Outline Mesh.." msgstr "Crear Outline Mesh.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Ver" +msgstr "Ver UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Ver" +msgstr "Ver UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Hacer Unwrap de UV2 para Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4185,8 +4175,8 @@ msgid "Bake!" msgstr "Hacer Bake!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Hacer bake de mesh de navegación.\n" +msgid "Bake the navigation mesh." +msgstr "Hacer bake de mesh de navegación." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4575,17 +4565,17 @@ msgstr "Cargar Recurso" msgid "Paste" msgstr "Pegar" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "ResourcePreloader" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Restablecer Archivos Recientes" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Cerrar y guardar cambios?\n" -"\"" +msgid "Close and save changes?" +msgstr "¿Cerrar y guardar cambios?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4656,9 +4646,12 @@ msgid "Soft Reload Script" msgstr "Recarga Soft de Script" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Copiar Ruta" +msgstr "Copiar Ruta de Script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Mostrar en Sistema de Archivos" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4851,9 +4844,8 @@ msgid "Clone Down" msgstr "Clonar hacia Abajo" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Expandir LÃnea" +msgstr "Expandir/Colapsar LÃnea" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5097,84 +5089,84 @@ msgid "Rotating %s degrees." msgstr "Torando %s grados." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Vista Inferior." +msgid "Keying is disabled (no key inserted)." +msgstr "Poner claves está desactivado (no se insertaron claves)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Fondo" +msgid "Animation Key Inserted." +msgstr "Clave de Animación Insertada." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Vista Superior." +msgid "Objects Drawn" +msgstr "Objetos Dibujados" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Vista Anterior." +msgid "Material Changes" +msgstr "Cambios de Material" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Detrás" +msgid "Shader Changes" +msgstr "Cambios de Shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Vista Frontal." +msgid "Surface Changes" +msgstr "Cambios de Superficie" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Frente" +msgid "Draw Calls" +msgstr "Llamadas de Dibujado" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vista Izquierda." +msgid "Vertices" +msgstr "Vértices" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Izquierda" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Vista Derecha." +msgid "Top View." +msgstr "Vista Superior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Derecha" +msgid "Bottom View." +msgstr "Vista Inferior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Poner claves está desactivado (no se insertaron claves)." +msgid "Bottom" +msgstr "Fondo" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Clave de Animación Insertada." +msgid "Left View." +msgstr "Vista Izquierda." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Objetos Dibujados" +msgid "Left" +msgstr "Izquierda" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Cambios de Material" +msgid "Right View." +msgstr "Vista Derecha." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Cambios de Shader" +msgid "Right" +msgstr "Derecha" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Cambios de Superficie" +msgid "Front View." +msgstr "Vista Frontal." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Llamadas de Dibujado" +msgid "Front" +msgstr "Frente" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vértices" +msgid "Rear View." +msgstr "Vista Anterior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Detrás" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5188,6 +5180,10 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "No hay padre al que instanciarle un hijo." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Esta operación requiere un solo nodo seleccionado." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Mostrar Normal" @@ -5261,16 +5257,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de Velocidad de Vista Libre" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "vista previa" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Dialogo XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Modo Seleccionar (Q)\n" +msgid "Select Mode (Q)" +msgstr "Modo Seleccionar (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5299,14 +5291,12 @@ msgid "Local Coords" msgstr "Coordenadas Locales" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Modo de Escalado (R)" +msgstr "Modo de Espacio Local (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Modo Snap:" +msgstr "Modo de Snap (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5423,7 +5413,7 @@ msgstr "Configuración" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "Visibilidad de Esqueleto de Gizmo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5549,10 +5539,18 @@ msgstr "Mover (Antes)" msgid "Move (After)" msgstr "Mover (Despues)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "SpriteFrames" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Vista Previa de StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StyleBox" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Setear Region Rect" @@ -5578,14 +5576,17 @@ msgid "Auto Slice" msgstr "Auto Rebanar" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Offset:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Paso:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separación:" @@ -5723,6 +5724,10 @@ msgstr "TipografÃa" msgid "Color" msgstr "Color" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Eliminar Selección" @@ -5808,9 +5813,8 @@ msgid "Merge from scene?" msgstr "¿Mergear desde escena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet.." +msgstr "Tile Set" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5824,6 +5828,34 @@ msgstr "Mergear desde Escena" msgid "Error" msgstr "Error" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "Autotiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" +"Selectionar sub-tile para usar como icono, esta también sera usada en " +"bindings inválidos de autotile." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"Click izq: Activar bit.\n" +"Click der: Desactivar bit." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Seleccionar sub-tile editado actualmente." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Seleccionar sub-tile para cambiar su prioridad." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Cancelar" @@ -5939,12 +5971,8 @@ msgid "Please choose a 'project.godot' file." msgstr "Por favor elegà un archivo 'project.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Tu proyecto será creado en una carpeta no vacÃa (podrÃas preferir crear una " -"carpeta nueva)." +msgid "Please choose an empty folder." +msgstr "Por favor elegà una carpeta vacÃa." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5956,6 +5984,14 @@ msgid "Imported Project" msgstr "Proyecto Importado" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "No se pudo crear la carpeta." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "Ya hay una carpeta en esta ruta con el nombre especificado." + +#: editor/project_manager.cpp msgid "It would be a good idea to name your project." msgstr "SerÃa buena idea darle un nombre a tu proyecto." @@ -5996,14 +6032,26 @@ msgid "Import Existing Project" msgstr "Importar Proyecto Existente" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importar y Editar" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Crear Proyecto Nuevo" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Crear y Editar" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Instalar Proyecto:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Instalar y Editar" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nombre del Proyecto:" @@ -6020,10 +6068,6 @@ msgid "Browse" msgstr "Examinar" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Proyecto Sin Nombre" @@ -6082,6 +6126,10 @@ msgstr "" "¿Confirmar?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Gestor de Proyectos" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Listado de Proyectos" @@ -6210,11 +6258,6 @@ msgid "Button 9" msgstr "Botón 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Cambiar" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Indice del Eje del Gamepad:" @@ -6227,9 +6270,8 @@ msgid "Joypad Button Index:" msgstr "Indice del Boton del Gamepad:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Borrar Evento de Acción de Entrada" +msgstr "Borrar Acción de Entrada" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6477,7 +6519,7 @@ msgstr "Nuevo Script" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Nuevo %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6512,9 +6554,8 @@ msgid "On" msgstr "On" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Agregar VacÃo" +msgstr "[Vacio]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6595,10 +6636,6 @@ msgid "Error loading scene from %s" msgstr "Error al cargar escena desde %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6688,8 +6725,8 @@ msgid "Error duplicating scene to save it." msgstr "Error al duplicar escena para guardarla." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Sub-Recursos:" +msgid "Sub-Resources" +msgstr "Sub-Recursos" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6992,7 +7029,7 @@ msgstr "Funcion:" msgid "Pick one or more items from the list to display the graph." msgstr "Elegir uno o mas items de la lista para mostrar el gráfico." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Errores" @@ -7001,6 +7038,10 @@ msgid "Child Process Connected" msgstr "Proceso Hijo Conectado" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Erroes de Copia" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Inspeccionar Instancia Previa" @@ -7094,7 +7135,7 @@ msgstr "Atajos" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Binding" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7146,43 +7187,39 @@ msgstr "Cambiar Extensión de Sonda" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Seleccionar una biblioteca dinamica para esta entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Seleccionar dependencias de la biblioteca para esta entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Quitar Punto de Curva" +msgstr "Quitar ingreso actual" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Doble click para crear una nueva entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Plataforma:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "Copiar A Plataforma.." +msgstr "Plataforma" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Biblioteca" +msgstr "Biblioteca Dinámica" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Agregar una entrada de arquitectura" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7354,10 +7391,50 @@ msgstr "Ajustes de GridMap" msgid "Pick Distance:" msgstr "Elegir Instancia:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "Generando solución..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "Generando proyecto en C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "No se pudo crear la solución." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "No se pudo guardar la solución." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Hecho" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "No se pudo crear el proyecto en C#" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Crear solución en C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Builds" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Construir Proyecto" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Advertencias" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7718,24 +7795,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "Ejecutar HTML exportado en el navegador por defecto del sistema." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "No se pudo escribir el archivo:\n" +msgid "Could not write file:" +msgstr "No se pudo escribir el archivo:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "No se pudo abrir la plantilla para exportar:\n" +msgid "Could not open template for export:" +msgstr "No se pudo abrir la plantilla para exportar:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Plantilla de exportación inválida:\n" +msgid "Invalid export template:" +msgstr "Plantilla de exportación inválida:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "No se pudo leer el shell HTML personalizado:\n" +msgid "Could not read custom HTML shell:" +msgstr "No se pudo leer el shell HTML personalizado:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "No se pudo leer la imagen de boot splash:\n" +msgid "Could not read boot splash image file:" +msgstr "No se pudo leer la imagen de boot splash:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "Usando imagen boot splash por defecto." #: scene/2d/animated_sprite.cpp msgid "" @@ -7754,6 +7835,17 @@ msgstr "" "instanciadas). El primero creado va a funcionar, mientras que el resto van a " "ser ignorados." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"Este nodo no tiene hijos de tipo shape, por lo tanto no puede interactuar " +"con el espacio.\n" +"Considerá agregarle nodos hijos de tipo CollisionShape2D o " +"CollisionPolygon2D para definir su forma." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7842,7 +7934,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7895,23 +7987,31 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin requiere un nodo hijo ARVRCamera" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "Ploteando Meshes" +msgstr "Ploteando Meshes: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "Ploteando Meshes" +msgstr "Ploteando Luces:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "Terminando Ploteo" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "Ploteando Meshes" +msgstr "Iluminando Meshes: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"Este nodo no tiene hijos de tipo shape, asi que no puede interactuar con el " +"espacio.\n" +"Considerá agregarle nodos hijos de tipo CollisionShape o CollisionPolygon " +"para definir su forma." #: scene/3d/collision_polygon.cpp msgid "" @@ -7969,8 +8069,8 @@ msgstr "Nada visible ya que no se asigno pasadas de dibujado a los meshes." #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "Los cambios de tamaño a RigidBody (en modo character o rigid) seran " @@ -8051,10 +8151,10 @@ msgstr "(Otro)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" -"El Entorno por Defecto especificado en Configuracion del Editor (Rendering -" +"El Entorno por Defecto especificado en Configuración del Editor (Rendering -" "> Viewport -> Entorno por Defecto) no pudo ser cargado." #: scene/main/viewport.cpp @@ -8085,6 +8185,40 @@ msgstr "Error cargando tipografÃa." msgid "Invalid font size." msgstr "Tamaño de tipografÃa inválido." +#~ msgid "Next" +#~ msgstr "Siguiente" + +#~ msgid "Not found!" +#~ msgstr "No se encontró!" + +#~ msgid "Replace By" +#~ msgstr "Reemplazar Por" + +#~ msgid "Case Sensitive" +#~ msgstr "Respetar Mayúsculas/Minúsculas" + +#~ msgid "Backwards" +#~ msgstr "Hacia Atrás" + +#~ msgid "Prompt On Replace" +#~ msgstr "Preguntar Antes de Reemplazar" + +#~ msgid "Skip" +#~ msgstr "Saltear" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Tu proyecto será creado en una carpeta no vacÃa (podrÃas preferir crear " +#~ "una carpeta nueva)." + +#~ msgid "That's a BINGO!" +#~ msgstr "BINGO!" + +#~ msgid "preview" +#~ msgstr "vista previa" + #~ msgid "Move Add Key" #~ msgstr "Mover o Agregar Clave" @@ -8178,9 +8312,6 @@ msgstr "Tamaño de tipografÃa inválido." #~ msgid "' parsing of config failed." #~ msgstr "' falló el parseo de la configuración." -#~ msgid "Theme" -#~ msgstr "Tema" - #~ msgid "Method List For '%s':" #~ msgstr "Lista de Métodos Para '%s':" @@ -8450,9 +8581,6 @@ msgstr "Tamaño de tipografÃa inválido." #~ msgid "Import Anyway" #~ msgstr "Importar de Todos Modos" -#~ msgid "Import & Open" -#~ msgstr "Importar y Abrir" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "La escena editada no ha sido guardada, abrir la escena importada de todos " @@ -8710,9 +8838,6 @@ msgstr "Tamaño de tipografÃa inválido." #~ msgid "Stereo" #~ msgstr "Estereo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Altura" @@ -8891,9 +9016,6 @@ msgstr "Tamaño de tipografÃa inválido." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Alerta cuando un recurso externo haya cambiado." -#~ msgid "Tutorials" -#~ msgstr "Tutoriales" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Abrir https://godotengine.org en la sección de tutoriales." diff --git a/editor/translations/fa.po b/editor/translations/fa.po index ec548d97ae..3d6b98f49d 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -203,8 +203,7 @@ msgstr "ساختن تعداد d% ترک جدید، ودرج کلیدها؟" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "ساختن" @@ -383,14 +382,6 @@ msgid "Replaced %d occurrence(s)." msgstr "تعداد d% رخداد جایگزین شد." #: editor/code_editor.cpp -msgid "Replace" -msgstr "جایگزینی" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "جایگزینی همه" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "بین ØØ±ÙˆÙ Ú©ÙˆÚ†Ú© Ùˆ بزرگ لاتین تمایز قائل شو" @@ -399,48 +390,16 @@ msgid "Whole Words" msgstr "عین کلمات (بدون هیچ Ú©Ù… Ùˆ کاستی)" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "تنها در قسمت انتخاب شده" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "جستجو" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "ÛŒØ§ÙØªÙ†" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "بعدی" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "چیزی ÛŒØ§ÙØª نشد!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "جایگزین کردن با" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ØØ³Ø§Ø³ به ØØ§Ù„ت (ØØ±ÙˆÙ لاتین)" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "به سمت عقب" +msgid "Replace" +msgstr "جایگزینی" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "موقع جایگزینی از کاربر بپرس" +msgid "Replace All" +msgstr "جایگزینی همه" #: editor/code_editor.cpp -msgid "Skip" -msgstr "رد کردن" +msgid "Selection Only" +msgstr "تنها در قسمت انتخاب شده" #: editor/code_editor.cpp msgid "Zoom In" @@ -559,6 +518,16 @@ msgstr "سیگنال‌ها" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "تغییر نوع" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "تغییر بده" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "ساختن جدید" @@ -671,7 +640,7 @@ msgstr "" "آیا در هر صورت ØØ°Ù شوند؟(بدون برگشت)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -754,8 +723,9 @@ msgstr "برپا کننده های پروژه" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "مدیر پروژه" #: editor/editor_about.cpp @@ -840,7 +810,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1153,7 +1123,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1366,6 +1336,17 @@ msgid "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 "Properties" msgstr "" @@ -1397,6 +1378,10 @@ msgstr "" msgid "Search Text" msgstr "جستجوی متن" +#: editor/editor_help.cpp +msgid "Find" +msgstr "ÛŒØ§ÙØªÙ†" + #: editor/editor_log.cpp msgid "Output:" msgstr "خروجی:" @@ -1408,6 +1393,11 @@ msgstr "خروجی:" msgid "Clear" msgstr "پاک کردن" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "خروجی" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1416,8 +1406,8 @@ msgstr "" msgid "Save Resource As.." msgstr "ذخیره منبع از ..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "من میبینم ..." @@ -1474,7 +1464,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2030,6 +2021,13 @@ msgstr "راهنما" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "جستجو" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2411,8 +2409,9 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "" +#, fuzzy +msgid "Error creating path for templates:" +msgstr "خطای بارگذاری قلم." #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2568,9 +2567,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2578,22 +2575,22 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "خطا در بارگذاری:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "خطا در بارگذاری:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "خطا در بارگذاری صØÙ†Ù‡ به دلیل بستگی‌های Ù…Ùقود:" #: editor/filesystem_dock.cpp @@ -3238,6 +3235,11 @@ msgstr "ویرایش صاÙÛŒ های گره" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "گره انیمیشن" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3405,6 +3407,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3708,6 +3711,14 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3719,11 +3730,6 @@ msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "" - -#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Change default type" msgstr "نوع مقدار آرایه را تغییر بده" @@ -4096,7 +4102,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4489,14 +4495,17 @@ msgstr "" msgid "Paste" msgstr "چسباندن" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "منبع" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4574,6 +4583,11 @@ msgid "Copy Script Path" msgstr "رونوشت مسیر گره" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "سامانه پرونده" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5012,84 +5026,84 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "تغییر بده" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "تغییر بده" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5104,6 +5118,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5181,16 +5199,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "انتخاب ØØ§Ù„ت" #: editor/plugins/spatial_editor_plugin.cpp @@ -5468,10 +5482,18 @@ msgstr "مسیر به سمت گره:" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5497,14 +5519,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5644,6 +5669,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5747,6 +5776,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "ساختن پوشه" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "لغو" @@ -5859,9 +5913,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5873,6 +5925,15 @@ msgid "Imported Project" msgstr "پروژه واردشده" #: editor/project_manager.cpp +#, fuzzy +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 "" @@ -5913,14 +5974,29 @@ msgid "Import Existing Project" msgstr "وارد کردن پروژه موجود" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "وارد کردن" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "ساختن پروژه جدید" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "ساختن گره" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "نصب پروژه:" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "(نصب شده)" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "نام پروژه:" @@ -5937,10 +6013,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "پروژه بی نام" @@ -5988,6 +6060,10 @@ msgstr "" "آیا انجام این عمل را تایید Ù…ÛŒ کنید؟‌" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "مدیر پروژه" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Ùهرست پروژه ها" @@ -6114,11 +6190,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "تغییر بده" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6502,10 +6573,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6590,7 +6657,8 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +#, fuzzy +msgid "Sub-Resources" msgstr "زیرمنبع‌ها:" #: editor/scene_tree_dock.cpp @@ -6894,7 +6962,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6903,6 +6971,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "خطاهای بارگذاری" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7266,10 +7339,54 @@ msgstr "ØªØ±Ø¬ÛŒØØ§Øª" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "ناتوان در ساختن پوشه." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "انتخاب شده را تغییر مقیاس بده" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "انتخاب شده را تغییر مقیاس بده" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "پروژه" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7639,27 +7756,32 @@ msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "نمی‌تواند یک پوشه ایجاد شود." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "نمی‌تواند یک پوشه ایجاد شود." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "نام دارایی ایندکس نامعتبر." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" +msgstr "نمی‌تواند یک پوشه ایجاد شود." + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" msgstr "نمی‌تواند یک پوشه ایجاد شود." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "نمی‌تواند یک پوشه ایجاد شود." #: scene/2d/animated_sprite.cpp @@ -7679,6 +7801,13 @@ msgstr "" "نمونه‌گذاری شده) مجاز است. اولین مورد ایجاد شده کار خواهد کرد، در ØØ§Ù„یکه از " "بقیه صرÙنظر می‌شود." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7767,7 +7896,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7828,6 +7957,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7885,8 +8021,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7960,8 +8096,8 @@ msgstr "(دیگر)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7992,6 +8128,27 @@ msgstr "خطای بارگذاری قلم." msgid "Invalid font size." msgstr "اندازهٔ قلم نامعتبر." +#~ msgid "Next" +#~ msgstr "بعدی" + +#~ msgid "Not found!" +#~ msgstr "چیزی ÛŒØ§ÙØª نشد!" + +#~ msgid "Replace By" +#~ msgstr "جایگزین کردن با" + +#~ msgid "Case Sensitive" +#~ msgstr "ØØ³Ø§Ø³ به ØØ§Ù„ت (ØØ±ÙˆÙ لاتین)" + +#~ msgid "Backwards" +#~ msgstr "به سمت عقب" + +#~ msgid "Prompt On Replace" +#~ msgstr "موقع جایگزینی از کاربر بپرس" + +#~ msgid "Skip" +#~ msgstr "رد کردن" + #~ msgid "Move Add Key" #~ msgstr "کلید Add را جابجا Ú©Ù†" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index f0a58b9e1c..8e8636973e 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -5,21 +5,21 @@ # # basse <basse@roiske.org>, 2017. # Bastian Salmela <bastian.salmela@gmail.com>, 2017. -# ekeimaja <ekeimaja@gmail.com>, 2017. +# ekeimaja <ekeimaja@gmail.com>, 2017-2018. # Jarmo Riikonen <amatrelan@gmail.com>, 2017. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-03 11:31+0000\n" -"Last-Translator: Bastian Salmela <bastian.salmela@gmail.com>\n" +"PO-Revision-Date: 2018-01-24 12:10+0000\n" +"Last-Translator: ekeimaja <ekeimaja@gmail.com>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" "Language: fi\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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -204,8 +204,7 @@ msgstr "Luo %d uutta raitaa ja lisää avaimet?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Luo" @@ -386,14 +385,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Korvattu %d osuvuutta." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Korvaa" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Korvaa kaikki" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Huomioi kirjainkoko" @@ -402,48 +393,16 @@ msgid "Whole Words" msgstr "Kokonaisia sanoja" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Pelkkä valinta" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Hae" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Etsi" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Seuraava" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ei löytynyt!" - -#: editor/code_editor.cpp -msgid "Replace By" +msgid "Replace" msgstr "Korvaa" #: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Merkkikokoriippuvainen" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Taaksepäin" - -#: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Kysy vaihdettaessa" +msgid "Replace All" +msgstr "Korvaa kaikki" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Ohita" +msgid "Selection Only" +msgstr "Pelkkä valinta" #: editor/code_editor.cpp msgid "Zoom In" @@ -564,6 +523,16 @@ msgstr "Signaalit" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Muuta tyyppiä" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Muuta" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Luo uusi" @@ -677,7 +646,8 @@ msgstr "" "Poistetaanko silti? (ei mahdollisuutta kumota)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Ei voida poistaa:\n" #: editor/dependency_editor.cpp @@ -764,8 +734,9 @@ msgstr "Projektin perustajat" msgid "Lead Developer" msgstr "Pääkehittäjä" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Projektinhallinta" #: editor/editor_about.cpp @@ -854,7 +825,7 @@ msgid "Success!" msgstr "Onnistui!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Asenna" @@ -1133,7 +1104,7 @@ msgstr "(tyhjä)" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ei tallennettu]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1173,7 +1144,8 @@ msgid "Packing" msgstr "Pakataan" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "Mallitiedostoa ei löytynyt:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1262,8 +1234,9 @@ msgid "Toggle Mode" msgstr "Näytä/piilota" #: editor/editor_file_dialog.cpp +#, fuzzy msgid "Focus Path" -msgstr "" +msgstr "Kohdista polku" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" @@ -1399,6 +1372,21 @@ msgstr "Kuvaus:" #: editor/editor_help.cpp #, fuzzy +msgid "Online Tutorials:" +msgstr "Oppaat" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Tälle metodille ei vielä löydy kuvailua. Voit auttaa meitä [color=$color]" +"[url=$url]kirjoittamalla sellaisen[/url][/color]!" + +#: editor/editor_help.cpp +#, fuzzy msgid "Properties" msgstr "Ominaisuudet:" @@ -1436,6 +1424,10 @@ msgstr "" msgid "Search Text" msgstr "Hae tekstiä" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Etsi" + #: editor/editor_log.cpp #, fuzzy msgid "Output:" @@ -1448,6 +1440,11 @@ msgstr " Tuloste:" msgid "Clear" msgstr "Tyhjennä" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Tuloste" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Virhe tallennettaessa resurssia!" @@ -1456,8 +1453,8 @@ msgstr "Virhe tallennettaessa resurssia!" msgid "Save Resource As.." msgstr "Tallenna resurssi nimellä..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Ymmärrän..." @@ -1515,8 +1512,10 @@ msgid "This operation can't be done without a tree root." msgstr "Tätä toimintoa ei voi tehdä ilman Sceneä." #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "Sceneä ei voitu tallentaa. Riippuvuuksia ei voitu tyydyttää." #: editor/editor_node.cpp @@ -2129,6 +2128,13 @@ msgstr "Ohje" msgid "Classes" msgstr "Luokat" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Hae" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Dokumentaatio" @@ -2519,7 +2525,8 @@ msgid "No version.txt found inside templates." msgstr "version.txt -tiedostoa ei löytynyt." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "Virhe luotaessa polkua mallille:\n" #: editor/export_template_manager.cpp @@ -2692,9 +2699,8 @@ msgid "View items as a list" msgstr "Listanäkymä" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "Tila: Tuonti epäonnistui. Ole hyvä, korjaa tiedosto, ja tuo uudelleen." @@ -2704,22 +2710,23 @@ msgid "Cannot move/rename resources root." msgstr "Ei voitu siirtää/nimetä uudelleen resurssien päätasoa." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +#, fuzzy +msgid "Cannot move a folder into itself." msgstr "Hakemistoa ei voi siirtää itsensä sisään.\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "Virhe tuotaessa:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Virhe ladatessa:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "Scenellä '%s' on rikkinäisiä riippuvuuksia:" #: editor/filesystem_dock.cpp @@ -3385,6 +3392,11 @@ msgstr "Muokkaa noden suodattimia" msgid "Filters.." msgstr "Suodattimet..." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animaatio" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Vapauta" @@ -3485,7 +3497,7 @@ msgstr "edellinen" #: editor/plugins/asset_library_editor_plugin.cpp msgid "next" -msgstr "" +msgstr "seuraava" #: editor/plugins/asset_library_editor_plugin.cpp msgid "last" @@ -3558,6 +3570,7 @@ msgid "Bake Lightmaps" msgstr "Muunna Lightmapiksi:" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Esikatselu" @@ -3875,6 +3888,14 @@ msgstr "Lisää %s" msgid "Adding %s..." msgstr "Lisätään %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3886,11 +3907,6 @@ msgid "Error instancing scene from %s" msgstr "Virhe luotaessa instanssia kohteesta %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Tämä toiminto vaatii yhden valitun noden." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Muuta oletustyyppiä" @@ -4269,7 +4285,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4278,11 +4294,11 @@ msgstr "" #: editor/plugins/navigation_mesh_generator.cpp msgid "Setting up Configuration..." -msgstr "" +msgstr "Luodaan konfiguraatiota..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Calculating grid size..." -msgstr "" +msgstr "Lasketaan ruudukon kokoa..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating heightfield..." @@ -4673,15 +4689,19 @@ msgstr "Lataa resurssi" msgid "Paste" msgstr "Liitä" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Resurssi" + #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Clear Recent Files" msgstr "Tyhjennä luut" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +#, fuzzy +msgid "Close and save changes?" msgstr "" "Sulje ja tallenna muutokset?\n" "\"" @@ -4761,6 +4781,11 @@ msgid "Copy Script Path" msgstr "Kopioi polku" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Näytä tiedostojärjestelmässä" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "Edellinen historiassa" @@ -5204,89 +5229,89 @@ msgid "Rotating %s degrees." msgstr "Kierto %s astetta." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Pohjanäkymä." +msgid "Keying is disabled (no key inserted)." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Pohja" +msgid "Animation Key Inserted." +msgstr "Animaatioavain lisätty." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Pintanäkymä." +msgid "Objects Drawn" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Takanäkymä." +#, fuzzy +msgid "Material Changes" +msgstr "Päivitä muutokset" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Rear" -msgstr "Taka/perä" +msgid "Shader Changes" +msgstr "Päivitä muutokset" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Etunäkymä." +#, fuzzy +msgid "Surface Changes" +msgstr "Päivitä muutokset" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Etu" +msgid "Draw Calls" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vasen näkymä." +#, fuzzy +msgid "Vertices" +msgstr "Ominaisuudet:" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Vasen" +msgid "FPS" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Oikea näkymä." +msgid "Top View." +msgstr "Pintanäkymä." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "OIkea" +msgid "Bottom View." +msgstr "Pohjanäkymä." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "" +msgid "Bottom" +msgstr "Pohja" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Animaatioavain lisätty." +msgid "Left View." +msgstr "Vasen näkymä." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "" +msgid "Left" +msgstr "Vasen" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Material Changes" -msgstr "Päivitä muutokset" +msgid "Right View." +msgstr "Oikea näkymä." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Päivitä muutokset" +msgid "Right" +msgstr "OIkea" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Surface Changes" -msgstr "Päivitä muutokset" +msgid "Front View." +msgstr "Etunäkymä." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "" +msgid "Front" +msgstr "Etu" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Vertices" -msgstr "Ominaisuudet:" +msgid "Rear View." +msgstr "Takanäkymä." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "" +#, fuzzy +msgid "Rear" +msgstr "Taka/perä" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5300,6 +5325,10 @@ msgstr "Asia kunnossa :(" 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 "Tämä toiminto vaatii yhden valitun noden." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Näytä normaali" @@ -5382,17 +5411,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "Esikatselu" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "Valitse tila" #: editor/plugins/spatial_editor_plugin.cpp @@ -5677,10 +5701,20 @@ msgstr "Poista Node(t)" msgid "Move (After)" msgstr "Siirry vasemmalle" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "Pinoa Framet" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox:in esikatselu:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Tyyli" + #: editor/plugins/texture_region_editor_plugin.cpp #, fuzzy msgid "Set Region Rect" @@ -5707,14 +5741,17 @@ msgid "Auto Slice" msgstr "Jaa automaattisesti" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Siirtymä:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Välistys:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Erotus:" @@ -5856,6 +5893,10 @@ msgstr "Fontti" msgid "Color" msgstr "Väri" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Teema" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5959,6 +6000,32 @@ msgstr "" msgid "Error" msgstr "Virhe" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +msgstr "Jaa automaattisesti" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Tallenna tällä hetkellä muokattu resurssi." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Peru" @@ -6072,12 +6139,9 @@ msgid "Please choose a 'project.godot' file." msgstr "Ole hyvä ja valitse 'project.godot' tiedosto." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Projektillesi valitsema hakemisto ei ole tyhjä (ehkä haluaisit luoda uuden " -"hakemiston)." +#, fuzzy +msgid "Please choose an empty folder." +msgstr "Ole hyvä ja valitse 'project.godot' tiedosto." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6088,6 +6152,15 @@ msgid "Imported Project" msgstr "Tuotu projekti" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Kansiota ei voitu luoda." + +#: 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 "Olisi hyvä idea antaa projektillesi nimi." @@ -6132,14 +6205,29 @@ msgid "Import Existing Project" msgstr "Tuo olemassaoleva projekti" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Tuo & Avaa" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Luo uusi projekti" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Luo säteilijä/lähetin" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Asenna projekti:" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Asenna" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Projektin nimi:" @@ -6157,10 +6245,6 @@ msgid "Browse" msgstr "Selaa" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "Sehän on BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Nimetön projekti" @@ -6214,6 +6298,10 @@ msgid "" msgstr "Olet aikeissa etsiä hakemistosta %s Godot projekteja. Oletko varma?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Projektinhallinta" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Projektiluettelo" @@ -6344,11 +6432,6 @@ msgid "Button 9" msgstr "Painike 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Muuta" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Ohjaimen akselin indeksi:" @@ -6430,7 +6513,7 @@ msgstr "Yhdistä Nodeen:" #: editor/project_settings_editor.cpp msgid "Already existing" -msgstr "" +msgstr "On jo olemassa" #: editor/project_settings_editor.cpp msgid "Add Input Action" @@ -6492,7 +6575,7 @@ msgstr "Projektin asetukset" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" -msgstr "" +msgstr "Yleinen" #: editor/project_settings_editor.cpp editor/property_editor.cpp msgid "Property:" @@ -6617,7 +6700,7 @@ msgstr "Uusi skripti" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Uusi %s" #: editor/property_editor.cpp #, fuzzy @@ -6720,7 +6803,7 @@ msgstr "Pääskenen argumentit:" #: editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "" +msgstr "Scenen suorittamisasetukset" #: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp #: scene/gui/dialogs.cpp @@ -6736,10 +6819,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6763,7 +6842,7 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" -msgstr "" +msgstr "Monista node(t)" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" @@ -6825,7 +6904,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "Resurssit" #: editor/scene_tree_dock.cpp @@ -7024,7 +7103,7 @@ msgstr "" #: editor/script_create_dialog.cpp msgid "Directory of the same name exists" -msgstr "" +msgstr "Samanniminen hakemisto on jo olemassa" #: editor/script_create_dialog.cpp #, fuzzy @@ -7131,7 +7210,7 @@ msgstr "Funktio:" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Virheet" @@ -7140,6 +7219,11 @@ msgid "Child Process Connected" msgstr "Lapsiprosessi yhdistetty" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Lataa virheet" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Tarkastele edellistä instanssia" @@ -7173,7 +7257,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Value" -msgstr "" +msgstr "Arvo" #: editor/script_editor_debugger.cpp msgid "Monitors" @@ -7185,7 +7269,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Total:" -msgstr "" +msgstr "Yhteensä:" #: editor/script_editor_debugger.cpp msgid "Video Mem" @@ -7197,7 +7281,7 @@ msgstr "" #: editor/script_editor_debugger.cpp msgid "Type" -msgstr "" +msgstr "Tyyppi" #: editor/script_editor_debugger.cpp msgid "Format" @@ -7205,7 +7289,7 @@ msgstr "Muoto" #: editor/script_editor_debugger.cpp msgid "Usage" -msgstr "" +msgstr "Käyttö" #: editor/script_editor_debugger.cpp msgid "Misc" @@ -7302,11 +7386,11 @@ msgstr "" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Alusta:" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform" -msgstr "" +msgstr "Alusta" #: modules/gdnative/gdnative_library_editor_plugin.cpp #, fuzzy @@ -7334,7 +7418,7 @@ msgstr "Tila:" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Libraries: " -msgstr "" +msgstr "Kirjastot: " #: modules/gdnative/register_types.cpp msgid "GDNative" @@ -7434,15 +7518,15 @@ msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit X Axis" -msgstr "" +msgstr "Muokkaa X-akselia" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Y Axis" -msgstr "" +msgstr "Muokkaa Y-akselia" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Z Axis" -msgstr "" +msgstr "Muokkaa Z-akselia" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy @@ -7504,10 +7588,57 @@ msgstr "Näyttöruudun asetukset" msgid "Pick Distance:" msgstr "Poimi tile" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "Luodaan C# projekti..." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Ääriviivoja ei voitu luoda!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Resurssin lataaminen epäonnistui." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "Valmis!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Resurssin lataaminen epäonnistui." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Luo ääriviivat" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Uusi projekti" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "Varoitus" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7865,26 +7996,33 @@ msgid "Run exported HTML in the system's default browser." msgstr "Suorita viety HTML järjestelmän oletusselaimessa." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" msgstr "Ei voitu kirjoittaa tiedostoa:\n" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +#, fuzzy +msgid "Could not open template for export:" +msgstr "Kansiota ei voitu luoda." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Hallitse vietäviä Templateja" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "Ei voitu lukea tiedostoa:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "Ei voitu lukea tiedostoa:\n" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "Ei voitu lukea tiedostoa:\n" #: scene/2d/animated_sprite.cpp @@ -7899,6 +8037,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7969,7 +8114,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8028,6 +8173,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8073,8 +8225,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8143,13 +8295,13 @@ msgstr "" #: scene/gui/tree.cpp msgid "(Other)" -msgstr "" +msgstr "(Muu)" #: scene/main/scene_tree.cpp #, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Projektin asetuksissa määriteltyä oletusympäristöä (Renderöinti -> Näkymä -" "> Oletusympäristö) ei voitu ladata." @@ -8182,6 +8334,41 @@ msgstr "Virhe fontin latauksessa." msgid "Invalid font size." msgstr "Virheellinen fonttikoko." +#~ msgid "Next" +#~ msgstr "Seuraava" + +#~ msgid "Not found!" +#~ msgstr "Ei löytynyt!" + +#~ msgid "Replace By" +#~ msgstr "Korvaa" + +#~ msgid "Case Sensitive" +#~ msgstr "Merkkikokoriippuvainen" + +#~ msgid "Backwards" +#~ msgstr "Taaksepäin" + +#~ msgid "Prompt On Replace" +#~ msgstr "Kysy vaihdettaessa" + +#~ msgid "Skip" +#~ msgstr "Ohita" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Projektillesi valitsema hakemisto ei ole tyhjä (ehkä haluaisit luoda " +#~ "uuden hakemiston)." + +#~ msgid "That's a BINGO!" +#~ msgstr "Sehän on BINGO!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "Esikatselu" + #, fuzzy #~ msgid "Move Add Key" #~ msgstr "Siirrä lisäyspainiketta" @@ -8241,9 +8428,6 @@ msgstr "Virheellinen fonttikoko." #~ msgid "Filter:" #~ msgstr "Suodatin:" -#~ msgid "Theme" -#~ msgstr "Teema" - #~ msgid "Arguments:" #~ msgstr "Argumentit:" @@ -8411,9 +8595,6 @@ msgstr "Virheellinen fonttikoko." #~ msgid "Import Anyway" #~ msgstr "Tuo joka tapauksessa" -#~ msgid "Import & Open" -#~ msgstr "Tuo & Avaa" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "Muokattua Sceneä ei ole tallennettu, avaa tuotu Scene joka tapauksessa?" @@ -8677,9 +8858,6 @@ msgstr "Virheellinen fonttikoko." #~ msgid "Export the project to many platforms." #~ msgstr "Vie projekti usealle alustalle." -#~ msgid "Tutorials" -#~ msgstr "Oppaat" - #, fuzzy #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Avaa https://godotengine.org \"tutorials\"-alueelle." diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 396dc01a02..7bb65f8056 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -5,11 +5,12 @@ # # Antoine Carrier <ac.g392@gmail.com>, 2017. # ARocherVj <a.rocher.vj@gmail.com>, 2017. +# Arthur Templé <tuturtemple@gmail.com>, 2018. # Brice <bbric@free.fr>, 2016. # Chenebel Dorian <LoubiTek54@gmail.com>, 2016-2017. # derderder77 <derderder77380@gmail.com>, 2016. # finkiki <specialpopol@gmx.fr>, 2016. -# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017. +# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017-2018. # Hugo Locurcio <hugo.l@openmailbox.org>, 2016-2017. # Kanabenki <lucien.menassol@gmail.com>, 2017. # keltwookie <keltwookie@protonmail.com>, 2017. @@ -34,8 +35,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-12-07 06:46+0000\n" -"Last-Translator: LL <lu.lecocq@free.fr>\n" +"PO-Revision-Date: 2018-01-22 08:08+0000\n" +"Last-Translator: Gilles Roudiere <gilles.roudiere@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -43,7 +44,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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -54,9 +55,8 @@ msgid "All Selection" msgstr "Toute la sélection" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Animation Changer la valeur" +msgstr "Changer l'heure de l'animation des images clés" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -67,9 +67,8 @@ msgid "Anim Change Transform" msgstr "Animation Changer la transformation" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Animation Changer la valeur" +msgstr "Changer la valeur de l'animation des images clés" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -225,8 +224,7 @@ msgstr "Créer %d NOUVELLES pistes et insérer des clés ?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Créer" @@ -405,14 +403,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d occurrence(s) remplacée(s)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Remplacer" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Remplacer tout" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Sensible à la casse" @@ -421,48 +411,16 @@ msgid "Whole Words" msgstr "Mots entiers" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Sélection uniquement" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Rechercher" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Trouver" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Suivant" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Non trouvé !" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Remplacer par" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Sensible à la casse" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "À l'envers" +msgid "Replace" +msgstr "Remplacer" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Avertir lors du remplacement" +msgid "Replace All" +msgstr "Remplacer tout" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Passer" +msgid "Selection Only" +msgstr "Sélection uniquement" #: editor/code_editor.cpp msgid "Zoom In" @@ -564,9 +522,8 @@ msgid "Connecting Signal:" msgstr "Connecter un signal :" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Connecter « %s » à « %s »" +msgstr "Déconnecter « %s » de « %s »" #: editor/connections_dialog.cpp msgid "Connect.." @@ -582,9 +539,17 @@ msgid "Signals" msgstr "Signaux" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Changer le type de %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Changer" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Créer un nouveau" +msgstr "Créer un nouveau %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -696,8 +661,8 @@ msgstr "" "Les supprimer tout de même ? (annulation impossible)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Impossible à enlever :\n" +msgid "Cannot remove:" +msgstr "Impossible à enlever :" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -779,9 +744,9 @@ msgstr "Fondateurs du projet" msgid "Lead Developer" msgstr "Développeur principal" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Gestionnaire de projets" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Gestionnaire de projets " #: editor/editor_about.cpp msgid "Developers" @@ -869,7 +834,7 @@ msgid "Success!" msgstr "Succès!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installer" @@ -890,9 +855,8 @@ msgid "Rename Audio Bus" msgstr "Renommer bus audio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Basculer vers transport audio solo" +msgstr "Modifier le volume audio du bus" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -957,7 +921,7 @@ msgstr "Supprimer l'effet" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Audio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1138,13 +1102,12 @@ msgid "Updating scene.." msgstr "Mise à jour de la scène…" #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" msgstr "(vide)" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "(Non sauvegardé)" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1184,8 +1147,8 @@ msgid "Packing" msgstr "Empaquetage" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Fichier modèle introuvable :\n" +msgid "Template file not found:" +msgstr "Fichier modèle introuvable :" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1396,6 +1359,20 @@ msgid "Description" msgstr "Description" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Tutoriels en ligne :" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Pas de description disponible pour cette méthode. [color=$color][url=" +"$url]Contribuez[/url][/color] pour nous aider!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Propriétés" @@ -1431,6 +1408,10 @@ msgstr "" msgid "Search Text" msgstr "Chercher du texte" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Trouver" + #: editor/editor_log.cpp msgid "Output:" msgstr "Sortie :" @@ -1442,6 +1423,11 @@ msgstr "Sortie :" msgid "Clear" msgstr "Effacer" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Effacer la sortie" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Erreur d'enregistrement de la ressource !" @@ -1450,8 +1436,8 @@ msgstr "Erreur d'enregistrement de la ressource !" msgid "Save Resource As.." msgstr "Enregistrer la ressource sous…" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Je vois…" @@ -1505,10 +1491,11 @@ msgstr "Cette opération ne peut être réalisée sans une arborescence racine." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Impossible d'enregistrer la scène. Les dépendances (instances) n'ont sans " -"doute pas pu être satisfaites." +"Impossible d'enregistrer la scène. Les dépendances (instances ou héritage) " +"n'ont sans doute pas pu être satisfaites." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1597,12 +1584,10 @@ msgstr "" "comprendre ce fonctionnement." #: editor/editor_node.cpp -#, fuzzy msgid "Expand all properties" msgstr "Développer tout" #: editor/editor_node.cpp -#, fuzzy msgid "Collapse all properties" msgstr "Réduire tout" @@ -2134,6 +2119,13 @@ msgstr "Aide" msgid "Classes" msgstr "Classes" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Rechercher" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentation en ligne" @@ -2405,14 +2397,12 @@ msgid "Frame #:" msgstr "Frame # :" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" msgstr "Temps :" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Appel" +msgstr "Appels" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2519,8 +2509,8 @@ msgid "No version.txt found inside templates." msgstr "Aucun version.txt n'a été trouvé dans les modèles." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Erreur lors de la création du chemin pour les modèles:\n" +msgid "Error creating path for templates:" +msgstr "Erreur lors de la création du chemin pour les modèles :" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2556,9 +2546,8 @@ msgstr "Pas de réponse." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "Req. a Échoué." +msgstr "Requête échouée." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2595,7 +2584,6 @@ msgid "Resolving" msgstr "Résolution" #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Resolve" msgstr "Impossible à résoudre." @@ -2605,7 +2593,6 @@ msgid "Connecting.." msgstr "Connexion en cours.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "Connexion impossible" @@ -2681,11 +2668,8 @@ msgid "View items as a list" msgstr "Afficher les éléments sous forme de liste" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Statut : L'importation du fichier a échoué. Veuillez corriger le fichier et " "le réimporter manuellement." @@ -2694,21 +2678,20 @@ msgid "Cannot move/rename resources root." msgstr "Impossible de déplacer / renommer les ressources root." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Impossible de déplacer un dossier dans lui-même.\n" +msgid "Cannot move a folder into itself." +msgstr "Impossible de déplacer un dossier dans lui-même." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Erreur lors du déplacement :\n" +msgid "Error moving:" +msgstr "Erreur lors du déplacement :" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Erreur au chargement :" +msgid "Error duplicating:" +msgstr "Erreur à la duplication :" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Impossible de mettre à jour les dépendences :\n" +msgid "Unable to update dependencies:" +msgstr "Impossible de mettre à jour les dépendences :" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2739,14 +2722,12 @@ msgid "Renaming folder:" msgstr "Renommer le dossier :" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Dupliquer" +msgstr "Duplication du fichier :" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Renommer le dossier :" +msgstr "Duplication du dossier :" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2765,9 +2746,8 @@ msgid "Move To.." msgstr "Déplacer vers…" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Ouvrir une scène" +msgstr "Ouvrir une(des) scène(s)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2883,14 +2863,12 @@ msgid "Importing Scene.." msgstr "Importation de la scène…" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Transfert vers des lightmaps :" +msgstr "Génération des lightmaps :" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Générer AABB" +msgstr "Généreration pour le Mesh : " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3153,7 +3131,7 @@ msgstr "Directions" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Past" -msgstr "Coller" +msgstr "Passé" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Future" @@ -3181,7 +3159,7 @@ msgstr "seul les différence" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "Forcer la modulation blanche" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" @@ -3361,6 +3339,10 @@ msgstr "Modifier les filtres de nÅ“ud" msgid "Filters.." msgstr "Filtres…" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimationTree" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Libérer" @@ -3510,23 +3492,31 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Ne peut pas déterminer un chemin de sauvegarde pour les images lightmap.\n" +"Sauvegarder votre scène (pour que les images soient sauvegardées dans le " +"même répertoire), ou choisissez un répertoire de sauvegarde à partir des " +"propriétés 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 "" +"Aucun mesh à transférer. Assurez-vous qu'ils contiennent un canal UV2 et que " +"l'indicateur \"Bake Light\" est activé." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Échec de la création des images lightmap, assurez-vous que le chemin est " +"accessible en écriture." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "Transfert vers des lightmaps :" +msgstr "Précalculer les lightmaps :" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Aperçu" @@ -3808,9 +3798,8 @@ msgid "Clear Pose" msgstr "Vider la pose" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Drag pivot from mouse position" -msgstr "Déplacer le point de pivot à partir de la position de la souris" +msgstr "Déplacer le point de pivot à la position de la souris" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set pivot at mouse position" @@ -3832,6 +3821,15 @@ msgstr "Ajouter %s" msgid "Adding %s..." msgstr "Ajout de %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "OK" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "Cannot instantiate multiple nodes without root." +msgstr "Impossible d'instancier plusieurs nÅ“uds sans nÅ“ud racine." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3843,13 +3841,6 @@ msgid "Error instancing scene from %s" msgstr "Erreur d'instanciation de la scène depuis %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "" -"Cette opération ne peut être réalisée uniquement avec un seul nÅ“ud " -"sélectionné." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Changer le type par défaut" @@ -3893,11 +3884,11 @@ msgstr "Mettre à jour depuis la scène" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat0" -msgstr "" +msgstr "Plat0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat1" -msgstr "" +msgstr "Plat1" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease in" @@ -4041,19 +4032,19 @@ msgstr "Créer un maillage de navigation" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Le maillage contenu n'est pas de type ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "L'ouverture du UV a échoué, le maillage n'est peut-être pas multiple ?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Aucun maillage à déboguer." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Le modèle n'a pas d'UV dans cette couche" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4099,16 +4090,16 @@ msgstr "Créer un maillage de contour…" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy msgid "View UV1" -msgstr "Affichage" +msgstr "Afficher l'UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp #, fuzzy msgid "View UV2" -msgstr "Affichage" +msgstr "Afficher l'UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Ouverture d'UV2 pour Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4228,9 +4219,8 @@ msgid "Bake!" msgstr "Calculer !" #: editor/plugins/navigation_mesh_editor_plugin.cpp -#, fuzzy -msgid "Bake the navigation mesh.\n" -msgstr "Créer un maillage de navigation\n" +msgid "Bake the navigation mesh." +msgstr "Précalculer le maillage de navigation." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4247,21 +4237,19 @@ msgstr "Calcul de la taille de la grille..." #: editor/plugins/navigation_mesh_generator.cpp #, fuzzy msgid "Creating heightfield..." -msgstr "Création de l'octree de lumière" +msgstr "Création de la heightmap..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." msgstr "Marquage des triangles parcourables..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Constructing compact heightfield..." -msgstr "Construction d'un terrain compact..." +msgstr "Construction d'une heightmap compacte..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Eroding walkable area..." -msgstr "Abrasion de la zone parcourable..." +msgstr "Réduction de la zone parcourable..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Partitioning..." @@ -4272,7 +4260,6 @@ msgid "Creating contours..." msgstr "Création des coutours..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Creating polymesh..." msgstr "Création d'un maillage de contour…" @@ -4499,9 +4486,8 @@ msgid "Set Curve In Position" msgstr "Définir courbe en position" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Set Curve Out Position" -msgstr "Définir courbe hors position" +msgstr "Définir la position de sortie de la courbe" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" @@ -4625,15 +4611,18 @@ msgstr "Charger une ressource" msgid "Paste" msgstr "Coller" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Chemin de la ressource" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Effacer les fichiers récents" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "Quitter et sauvegarder les modifications?" +msgid "Close and save changes?" +msgstr "Quitter et sauvegarder les modifications ?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4704,9 +4693,12 @@ msgid "Soft Reload Script" msgstr "Recharger le script (mode doux)" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Copier le chemin" +msgstr "Copier le chemin du script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Afficher dans le système de fichiers" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4899,9 +4891,8 @@ msgid "Clone Down" msgstr "Cloner en dessous" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Dérouler la ligne" +msgstr "Réduire/Développer la ligne" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5145,84 +5136,84 @@ msgid "Rotating %s degrees." msgstr "Rotation de %s degrés." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Vue de dessous." +msgid "Keying is disabled (no key inserted)." +msgstr "L'insertion de clé est désactivée (pas de clé insérée)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Dessous" +msgid "Animation Key Inserted." +msgstr "Clé d'animation insérée." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Vue de dessus." +msgid "Objects Drawn" +msgstr "Objets dessinés" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Vue arrière." +msgid "Material Changes" +msgstr "Modifications de materiau" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Arrière" +msgid "Shader Changes" +msgstr "Modification de shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Vue avant." +msgid "Surface Changes" +msgstr "Modifications de surface" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Avant" +msgid "Draw Calls" +msgstr "Appels de graphes" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vue de gauche." +msgid "Vertices" +msgstr "Vertex" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Gauche" +msgid "FPS" +msgstr "Images par secondes" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Vue de droite." +msgid "Top View." +msgstr "Vue de dessus." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Droite" +msgid "Bottom View." +msgstr "Vue de dessous." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "L'insertion de clé est désactivée (pas de clé insérée)." +msgid "Bottom" +msgstr "Dessous" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Clé d'animation insérée." +msgid "Left View." +msgstr "Vue de gauche." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Objets dessinés" +msgid "Left" +msgstr "Gauche" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Modifications de materiau" +msgid "Right View." +msgstr "Vue de droite." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Modification de shader" +msgid "Right" +msgstr "Droite" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Modifications de surface" +msgid "Front View." +msgstr "Vue avant." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Appels de graphes" +msgid "Front" +msgstr "Avant" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vertex" +msgid "Rear View." +msgstr "Vue arrière." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "Images par secondes" +msgid "Rear" +msgstr "Arrière" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5236,6 +5227,12 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Pas de parent dans lequel instancier l'enfant." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" +"Cette opération ne peut être réalisée uniquement avec un seul nÅ“ud " +"sélectionné." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Affichage normal" @@ -5309,16 +5306,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificateur de vitesse de la vue libre" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "Aperçu" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Dialogue XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Sélectionner le mode (Q)\n" +msgid "Select Mode (Q)" +msgstr "Sélectionner le mode (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5347,14 +5340,12 @@ msgid "Local Coords" msgstr "Coordonnées locales" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Mode de mise à l'échelle (R)" +msgstr "Mode d'échelle local (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Mode d'aimantation :" +msgstr "Mode d'aimantation (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5471,7 +5462,7 @@ msgstr "Paramètres" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "Visibilité squelette Gizmo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5598,10 +5589,20 @@ msgstr "Déplacer le(s) nÅ“ud(s)" msgid "Move (After)" msgstr "Déplacer (Après)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "Images du sprite" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Aperçu de la StyleBox :" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Style Box" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Définir région rectangulaire" @@ -5627,14 +5628,17 @@ msgid "Auto Slice" msgstr "Coupe automatique" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Décalage :" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Pas (s) :" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Séparation :" @@ -5772,6 +5776,10 @@ msgstr "Police" msgid "Color" msgstr "Couleur" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Thème" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Supprimer la sélection" @@ -5874,6 +5882,32 @@ msgstr "Fusionner depuis la scène" msgid "Error" msgstr "Erreur" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +msgstr "Coupe automatique" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Enregistrer la ressource actuellement modifiée." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Annuler" @@ -5985,12 +6019,9 @@ msgid "Please choose a 'project.godot' file." msgstr "Veuillez choisir un fichier 'project.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Votre projet sera créé dans un dossier non-vide (vous pourriez avoir besoin " -"de créer un nouveau dossier)." +#, fuzzy +msgid "Please choose an empty folder." +msgstr "Veuillez choisir un fichier 'project.godot'." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6002,6 +6033,15 @@ msgid "Imported Project" msgstr "Projet importé" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Impossible de créer le dossier." + +#: 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 "Ce serait une bonne idée de donner un nom à votre projet." @@ -6045,14 +6085,29 @@ msgid "Import Existing Project" msgstr "Importer un projet existant" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importer et ouvrir" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Créer un nouveau projet" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Créer Émetteur" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Installer projet :" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Installer" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nom du projet :" @@ -6069,10 +6124,6 @@ msgid "Browse" msgstr "Parcourir" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "C'est un BINGO !" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projet sans titre" @@ -6129,6 +6180,10 @@ msgstr "" "existants. Est-ce que vous confirmez ?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Gestionnaire de projets" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Liste des projets" @@ -6258,11 +6313,6 @@ msgid "Button 9" msgstr "Bouton 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Changer" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Index de l'axe de la manette de jeu :" @@ -6526,7 +6576,7 @@ msgstr "Nouveau script" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Nouveau %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6644,10 +6694,6 @@ msgid "Error loading scene from %s" msgstr "Erreur de chargement de la scène depuis %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "OK" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6736,7 +6782,8 @@ msgid "Error duplicating scene to save it." msgstr "Erreur de duplication de la scène afin de l'enregistrer." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +#, fuzzy +msgid "Sub-Resources" msgstr "Ressources secondaires :" #: editor/scene_tree_dock.cpp @@ -7041,7 +7088,7 @@ msgid "Pick one or more items from the list to display the graph." msgstr "" "Chosissez un ou plusieurs éléments dans la liste pour afficher le graphique." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Erreurs" @@ -7050,6 +7097,11 @@ msgid "Child Process Connected" msgstr "Processus enfant connecté" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Erreurs de chargement" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Inspecter l'instance précédente" @@ -7143,7 +7195,7 @@ msgstr "Raccourcis" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Liaison" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7195,11 +7247,11 @@ msgstr "Changer les ampleurs de la sonde" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Sélectionnez la librairie dynamique pour cette entrée" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Sélectionnez les dépendances de la librairie pour cette entrée" #: modules/gdnative/gdnative_library_editor_plugin.cpp #, fuzzy @@ -7208,11 +7260,12 @@ msgstr "Supprimer point de courbe" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Double-cliquez pour créer une nouvelle entrée" #: modules/gdnative/gdnative_library_editor_plugin.cpp +#, fuzzy msgid "Platform:" -msgstr "" +msgstr "Platform:" #: modules/gdnative/gdnative_library_editor_plugin.cpp #, fuzzy @@ -7225,8 +7278,9 @@ msgid "Dynamic Library" msgstr "Bibliothèque" #: modules/gdnative/gdnative_library_editor_plugin.cpp +#, fuzzy msgid "Add an architecture entry" -msgstr "" +msgstr "Ajouter une entrée architecturale" #: modules/gdnative/gdnative_library_editor_plugin.cpp #, fuzzy @@ -7406,10 +7460,58 @@ msgstr "Paramètres GridMap" msgid "Pick Distance:" msgstr "Choisissez distance :" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "Création des coutours..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Impossible de créer le contour !" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Impossible de charger la ressource." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "C'est fait !" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Impossible de charger la ressource." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Créer le contour" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Constructions" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Projet" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "Avertissement" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7771,23 +7873,33 @@ msgid "Run exported HTML in the system's default browser." msgstr "Exécutez le HTML exporté dans le navigateur par défaut du système." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" msgstr "Impossible d'écrire le fichier:\n" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +#, fuzzy +msgid "Could not open template for export:" msgstr "Impossible d'ouvrir le modèle pour exportation:\n" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +#, fuzzy +msgid "Invalid export template:" msgstr "Modèle d'exportation non valide :\n" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +#, fuzzy +msgid "Could not read custom HTML shell:" msgstr "Impossible de lire le shell HTML :\n" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +#, fuzzy +msgid "Could not read boot splash image file:" +msgstr "Impossible de lire l'image de démarrage :\n" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "Impossible de lire l'image de démarrage :\n" #: scene/2d/animated_sprite.cpp @@ -7806,6 +7918,13 @@ msgstr "" "Seul un nÅ“ud de type CanvasModulate est autorisé par scène (ou ensemble de " "scènes instanciées). Le premier créé fonctionnera, les autres seront ignorés." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7899,7 +8018,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7972,6 +8091,13 @@ msgstr "Finalisation du tracer" msgid "Lighting Meshes: " msgstr "Tracer les maillages" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8029,8 +8155,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "Les changements de taille pour RigidBody (dans les modes caractère ou " @@ -8111,9 +8237,10 @@ msgid "(Other)" msgstr "(Autre)" #: scene/main/scene_tree.cpp +#, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "L'environnement par défaut spécifié dans les réglages du projet (Rendu -> " "Viewport -> Environnement par défaut) ne peut pas être chargé." @@ -8146,6 +8273,40 @@ msgstr "Erreur lors du chargement de la police." msgid "Invalid font size." msgstr "Taille de police invalide." +#~ msgid "Next" +#~ msgstr "Suivant" + +#~ msgid "Not found!" +#~ msgstr "Non trouvé !" + +#~ msgid "Replace By" +#~ msgstr "Remplacer par" + +#~ msgid "Case Sensitive" +#~ msgstr "Sensible à la casse" + +#~ msgid "Backwards" +#~ msgstr "À l'envers" + +#~ msgid "Prompt On Replace" +#~ msgstr "Avertir lors du remplacement" + +#~ msgid "Skip" +#~ msgstr "Passer" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Votre projet sera créé dans un dossier non-vide (vous pourriez avoir " +#~ "besoin de créer un nouveau dossier)." + +#~ msgid "That's a BINGO!" +#~ msgstr "C'est un BINGO !" + +#~ msgid "preview" +#~ msgstr "Aperçu" + #~ msgid "Move Add Key" #~ msgstr "Mouvement Ajouter une clé" @@ -8241,9 +8402,6 @@ msgstr "Taille de police invalide." #~ msgid "' parsing of config failed." #~ msgstr "L'analyse de la configuration a échoué." -#~ msgid "Theme" -#~ msgstr "Thème" - #~ msgid "Method List For '%s':" #~ msgstr "Liste des méthodes pour « %s » :" @@ -8514,9 +8672,6 @@ msgstr "Taille de police invalide." #~ msgid "Import Anyway" #~ msgstr "Importer quand même" -#~ msgid "Import & Open" -#~ msgstr "Importer et ouvrir" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "La scène modifiée actuellement n'a pas été enregistrée, ouvrir la scène " @@ -8773,9 +8928,6 @@ msgstr "Taille de police invalide." #~ msgid "Stereo" #~ msgstr "Stéréo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Hauteur" @@ -8957,9 +9109,6 @@ msgstr "Taille de police invalide." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Alerte lorsqu'une ressource externe a été modifiée." -#~ msgid "Tutorials" -#~ msgstr "Tutoriels" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Ouvre https://godotengine.org dans la section des tutoriels." diff --git a/editor/translations/he.po b/editor/translations/he.po index 032e8bcac7..57ec12e002 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -5,19 +5,20 @@ # # Ben Golan <golanben4@gmail.com>, 2017. # Luc Stepniewski <lior@gradstein.info>, 2017. +# Yaron Shahrabani <sh.yaron@gmail.com>, 2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-10 12:47+0000\n" -"Last-Translator: Ben Golan <golanben4@gmail.com>\n" +"PO-Revision-Date: 2018-01-25 22:27+0000\n" +"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" "Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/" "godot/he/>\n" "Language: he\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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -25,7 +26,7 @@ msgstr "מושבת" #: editor/animation_editor.cpp msgid "All Selection" -msgstr "כל ×”××œ×ž× ×˜×™× ×©× ×‘×—×¨×•" +msgstr "כל הבחירה" #: editor/animation_editor.cpp msgid "Anim Change Keyframe Time" @@ -110,11 +111,11 @@ msgstr "" #: editor/animation_editor.cpp msgid "Remove Selection" -msgstr "" +msgstr "הסרת הבחירה" #: editor/animation_editor.cpp msgid "Continuous" -msgstr "" +msgstr "מתמשך" #: editor/animation_editor.cpp msgid "Discrete" @@ -155,35 +156,35 @@ msgstr "" #: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "" +msgstr "קבוע" #: editor/animation_editor.cpp msgid "In" -msgstr "" +msgstr "×›× ×™×¡×”" #: editor/animation_editor.cpp msgid "Out" -msgstr "" +msgstr "יצי××”" #: editor/animation_editor.cpp msgid "In-Out" -msgstr "" +msgstr "×›× ×™×¡×”-יצי××”" #: editor/animation_editor.cpp msgid "Out-In" -msgstr "" +msgstr "יצי××”-×›× ×™×¡×”" #: editor/animation_editor.cpp msgid "Transitions" -msgstr "" +msgstr "×ž×¢×‘×¨×•× ×™×" #: editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "" +msgstr "מטוב ×”×”× ×¤×©×”" #: editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "" +msgstr "× ×™×§×•×™ ×”×”× ×¤×©×”" #: editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" @@ -197,10 +198,9 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" -msgstr "" +msgstr "יצירה" #: editor/animation_editor.cpp msgid "Anim Create & Insert" @@ -248,11 +248,11 @@ msgstr "" #: editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "" +msgstr "משך ×”×”× ×¤×©×” (×‘×©× ×™×•×ª)." #: editor/animation_editor.cpp msgid "Step (s):" -msgstr "" +msgstr "צעד/×™×:" #: editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." @@ -264,7 +264,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Add new tracks." -msgstr "" +msgstr "הוספת רצועות חדשות." #: editor/animation_editor.cpp msgid "Move current track up." @@ -304,7 +304,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Optimize" -msgstr "" +msgstr "מטוב" #: editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." @@ -312,15 +312,15 @@ msgstr "" #: editor/animation_editor.cpp msgid "Key" -msgstr "" +msgstr "מפתח" #: editor/animation_editor.cpp msgid "Transition" -msgstr "" +msgstr "מעברון" #: editor/animation_editor.cpp msgid "Scale Ratio:" -msgstr "" +msgstr "יחס מתיחה:" #: editor/animation_editor.cpp msgid "Call Functions in Which Node?" @@ -328,15 +328,15 @@ msgstr "" #: editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "" +msgstr "הסרת מפתחות שגויי×" #: editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "" +msgstr "הסרת רצועות בלתי פתורות וריקות" #: editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "" +msgstr "× ×™×§×•×™ כל ×”×”× ×¤×©×•×ª" #: editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" @@ -348,111 +348,71 @@ 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" -msgstr "" +msgstr "מעבר לשורה" #: editor/code_editor.cpp msgid "Line Number:" -msgstr "" +msgstr "מספר השורה:" #: editor/code_editor.cpp msgid "No Matches" -msgstr "" +msgstr "×ין תוצ×ות" #: editor/code_editor.cpp msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" -msgstr "" +msgstr "הת×מת רישיות" #: editor/code_editor.cpp msgid "Whole Words" -msgstr "" +msgstr "×ž×™×œ×™× ×©×œ×ž×•×ª" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "" +msgid "Replace" +msgstr "להחליף" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "" +msgid "Replace All" +msgstr "להחליף הכול" #: editor/code_editor.cpp -msgid "Skip" -msgstr "" +msgid "Selection Only" +msgstr "בחירה בלבד" #: editor/code_editor.cpp msgid "Zoom In" -msgstr "" +msgstr "להתקרב" #: editor/code_editor.cpp msgid "Zoom Out" -msgstr "" +msgstr "להתרחק" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "" +msgstr "×יפוס התקריב" #: editor/code_editor.cpp editor/script_editor_debugger.cpp msgid "Line:" -msgstr "" +msgstr "שורה:" #: editor/code_editor.cpp msgid "Col:" -msgstr "" +msgstr "עמודה:" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -466,20 +426,20 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "" +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 "" +msgstr "הוספה" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp msgid "Remove" -msgstr "" +msgstr "הסרה" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" @@ -491,7 +451,7 @@ msgstr "" #: editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "" +msgstr "× ×ª×™×‘ המפרק:" #: editor/connections_dialog.cpp msgid "Make Function" @@ -517,7 +477,7 @@ msgstr "" #: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Close" -msgstr "" +msgstr "סגירה" #: editor/connections_dialog.cpp msgid "Connect" @@ -542,51 +502,60 @@ msgstr "" #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Disconnect" -msgstr "" +msgstr "× ×™×ª×•×§" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" +msgstr "×ותות" + +#: editor/create_dialog.cpp +msgid "Change %s Type" msgstr "" +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "×©×™× ×•×™" + #: editor/create_dialog.cpp msgid "Create New %s" -msgstr "" +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/editor_node.cpp #: editor/plugins/asset_library_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp #: editor/quick_open.cpp msgid "Search:" -msgstr "" +msgstr "חיפוש:" #: editor/create_dialog.cpp editor/editor_help.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp #: editor/quick_open.cpp msgid "Matches:" -msgstr "" +msgstr "הת×מות:" #: editor/create_dialog.cpp editor/editor_help.cpp #: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp #: editor/script_editor_debugger.cpp msgid "Description:" -msgstr "" +msgstr "תי×ור:" #: editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "" +msgstr "חיפוש חלופה עבור:" #: editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "תלויות עבור:" #: editor/dependency_editor.cpp msgid "" @@ -603,40 +572,40 @@ msgstr "" #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Dependencies" -msgstr "" +msgstr "תלויות" #: editor/dependency_editor.cpp msgid "Resource" -msgstr "" +msgstr "מש×ב" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp #: editor/project_manager.cpp editor/project_settings_editor.cpp #: editor/script_create_dialog.cpp msgid "Path" -msgstr "" +msgstr "× ×ª×™×‘" #: editor/dependency_editor.cpp msgid "Dependencies:" -msgstr "" +msgstr "תלויות:" #: editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "תיקון פגומי×" #: editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "" +msgstr "עורך תלויות" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "חיפוש מש×ב חלופי:" #: editor/dependency_editor.cpp editor/editor_file_dialog.cpp #: editor/editor_help.cpp editor/editor_node.cpp editor/filesystem_dock.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp #: editor/quick_open.cpp scene/gui/file_dialog.cpp msgid "Open" -msgstr "" +msgstr "פתיחה" #: editor/dependency_editor.cpp msgid "Owners Of:" @@ -644,7 +613,7 @@ msgstr "" #: editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" -msgstr "" +msgstr "להסיר ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×ž×”×ž×™×–×? (××™ ×פשר לשחזר)" #: editor/dependency_editor.cpp msgid "" @@ -654,32 +623,32 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "" +msgid "Cannot remove:" +msgstr "×œ× × ×™×ª×Ÿ להסיר:" #: editor/dependency_editor.cpp msgid "Error loading:" -msgstr "" +msgstr "שגי××” ×‘×˜×¢×™× ×”:" #: editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "" +msgstr "×˜×¢×™× ×ª ×”×¡×¦× ×” × ×›×©×œ×” עקב תלויות חסרות:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" -msgstr "" +msgstr "לפתוח בכל ×–×ת" #: editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "" +msgstr "ב×יזו פעולה יש ×œ× ×§×•×˜?" #: editor/dependency_editor.cpp msgid "Fix Dependencies" -msgstr "" +msgstr "תיקון תלויות" #: editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "" +msgstr "שגי××” ×‘×˜×¢×™× ×”!" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" @@ -691,15 +660,15 @@ msgstr "" #: editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "" +msgstr "מש××‘×™× × ×˜×•×œ×™ בעלות מפורשת:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "דפדפן מש××‘×™× ×™×ª×•×ž×™×" #: editor/dependency_editor.cpp msgid "Delete selected files?" -msgstr "" +msgstr "למחוק ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™×?" #: editor/dependency_editor.cpp editor/editor_audio_buses.cpp #: editor/editor_file_dialog.cpp editor/editor_node.cpp @@ -707,83 +676,83 @@ msgstr "" #: editor/project_export.cpp editor/project_settings_editor.cpp #: editor/scene_tree_dock.cpp msgid "Delete" -msgstr "" +msgstr "למחוק" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "" +msgstr "החלפת מפתח מילון" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" -msgstr "" +msgstr "החלפת ערך מילון" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" -msgstr "" +msgstr "תודה רבה מקהילת Godot!" #: editor/editor_about.cpp msgid "Thanks!" -msgstr "" +msgstr "תודה!" #: editor/editor_about.cpp msgid "Godot Engine contributors" -msgstr "" +msgstr "×ž×ª× ×“×‘×™ ×ž× ×•×¢ Godot" #: editor/editor_about.cpp msgid "Project Founders" -msgstr "" +msgstr "מקימי המיז×" #: editor/editor_about.cpp msgid "Lead Developer" -msgstr "" +msgstr "×ž×¤×ª×—×™× ×¨×שיי×" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "×ž× ×”×œ ×”×ž×™×–× " #: editor/editor_about.cpp msgid "Developers" -msgstr "" +msgstr "מפתחי×" #: editor/editor_about.cpp msgid "Authors" -msgstr "" +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" -msgstr "" +msgstr "×ª×•×¨×ž×™× ×‘×“×¨×’×ª זהב" #: editor/editor_about.cpp msgid "Silver Donors" -msgstr "" +msgstr "×ª×•×¨×ž×™× ×‘×“×¨×’×ª כסף" #: editor/editor_about.cpp msgid "Bronze Donors" -msgstr "" +msgstr "×ª×•×¨×ž×™× ×‘×“×¨×’×ª ×רד" #: editor/editor_about.cpp msgid "Donors" -msgstr "" +msgstr "תורמי×" #: editor/editor_about.cpp msgid "License" -msgstr "" +msgstr "רישיון" #: editor/editor_about.cpp msgid "Thirdparty License" -msgstr "" +msgstr "רישיון צד שלישי" #: editor/editor_about.cpp msgid "" @@ -795,19 +764,19 @@ msgstr "" #: editor/editor_about.cpp msgid "All Components" -msgstr "" +msgstr "כל הרכיבי×" #: editor/editor_about.cpp msgid "Components" -msgstr "" +msgstr "רכיבי×" #: editor/editor_about.cpp msgid "Licenses" -msgstr "" +msgstr "×¨×™×©×™×•× ×•×ª" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in zip format." -msgstr "" +msgstr "פתיחת קובץ החבילה × ×›×©×œ×”, ×”×ž×‘× ×” ××™× ×• zip." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" @@ -815,37 +784,37 @@ msgstr "" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package Installed Successfully!" -msgstr "" +msgstr "החבילה ×”×•×ª×§× ×” בהצלחה!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Success!" -msgstr "" +msgstr "הצלחה!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" -msgstr "" +msgstr "×”×ª×§× ×”" #: editor/editor_asset_installer.cpp msgid "Package Installer" -msgstr "" +msgstr "מתקין החבילות" #: editor/editor_audio_buses.cpp msgid "Speakers" -msgstr "" +msgstr "רמקולי×" #: editor/editor_audio_buses.cpp msgid "Add Effect" -msgstr "" +msgstr "הוספת ×פקט" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" -msgstr "" +msgstr "×©×™× ×•×™ ×©× ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Change Audio Bus Volume" -msgstr "" +msgstr "×©×™× ×•×™ עצמה ל×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -853,7 +822,7 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "" +msgstr "החלפת מצב השתקה על ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" @@ -865,19 +834,19 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "" +msgstr "הוספת ×פקט על ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" -msgstr "" +msgstr "העברת ×פקט ×פיק" #: editor/editor_audio_buses.cpp msgid "Delete Bus Effect" -msgstr "" +msgstr "מחיקת ×פקט ×פיק" #: editor/editor_audio_buses.cpp msgid "Audio Bus, Drag and Drop to rearrange." -msgstr "" +msgstr "×פיק שמע, יש לגרור ולשחרר כדי לסדר מחדש." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -885,154 +854,154 @@ msgstr "" #: editor/editor_audio_buses.cpp msgid "Mute" -msgstr "" +msgstr "השתקה" #: editor/editor_audio_buses.cpp msgid "Bypass" -msgstr "" +msgstr "מעקף" #: editor/editor_audio_buses.cpp msgid "Bus options" -msgstr "" +msgstr "×פשרויות ×פיק" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Duplicate" -msgstr "" +msgstr "שכפול" #: editor/editor_audio_buses.cpp msgid "Reset Volume" -msgstr "" +msgstr "×יפוס עצמת השמע" #: editor/editor_audio_buses.cpp msgid "Delete Effect" -msgstr "" +msgstr "מחיקת ×פקט" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "שמע" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" -msgstr "" +msgstr "הוספת ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Master bus can't be deleted!" -msgstr "" +msgstr "××™ ×פשר למחוק ×ת ×”×פיק הר×שי!" #: editor/editor_audio_buses.cpp msgid "Delete Audio Bus" -msgstr "" +msgstr "מחיקת ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Duplicate Audio Bus" -msgstr "" +msgstr "שכפול ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Reset Bus Volume" -msgstr "" +msgstr "×יפוס עצמת שמע ×”×פיק" #: editor/editor_audio_buses.cpp msgid "Move Audio Bus" -msgstr "" +msgstr "הזזת ×פיק שמע" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As.." -msgstr "" +msgstr "שמירת פריסת ×פיקי השמע בתור…" #: editor/editor_audio_buses.cpp msgid "Location for New Layout.." -msgstr "" +msgstr "×ž×™×§×•× ×œ×¤×¨×™×¡×” החדשה…" #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" -msgstr "" +msgstr "פתיחת פריסת ×פיקי שמע" #: editor/editor_audio_buses.cpp msgid "There is no 'res://default_bus_layout.tres' file." -msgstr "" +msgstr "×ין קובץ ‚res://default_bus_layout.tres’." #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "" +msgstr "קובץ שגוי, ×œ× ×¤×¨×™×¡×” של ×פיקי שמע." #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "" +msgstr "הוספת ×פיק" #: editor/editor_audio_buses.cpp msgid "Create a new Bus Layout." -msgstr "" +msgstr "יצירת פריסת ××¤×™×§×™× ×—×“×©×”." #: editor/editor_audio_buses.cpp editor/property_editor.cpp #: editor/script_create_dialog.cpp msgid "Load" -msgstr "" +msgstr "×˜×¢×™× ×”" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." -msgstr "" +msgstr "×˜×¢×™× ×ª פריסת ×פיקי שמע." #: editor/editor_audio_buses.cpp #: editor/plugins/animation_player_editor_plugin.cpp msgid "Save As" -msgstr "" +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" -msgstr "" +msgstr "×˜×¢×™× ×ª בררת המחדל" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "" +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 "Invalid name. Must not collide with an existing engine class name." -msgstr "" +msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×ž×—×œ×§×ª ×ž× ×•×¢ קיימת." #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." -msgstr "" +msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×¡×•×’ ×ž×•×‘× ×” ×§×™×™×." #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." -msgstr "" +msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×§×‘×•×¢ גלובלי ×§×™×™×." #: editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "" +msgstr "× ×ª×™×‘ שגוי." #: editor/editor_autoload_settings.cpp msgid "File does not exist." -msgstr "" +msgstr "הקובץ ×œ× ×§×™×™×." #: editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "" +msgstr "×œ× ×‘× ×ª×™×‘ המש×ב." #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "" +msgstr "הוספת ×˜×¢×™× ×” ×וטומטית" #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "" +msgstr "×”×˜×¢×™× ×” ×”×וטומטית ‚%s’ כבר קיימת!" #: editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "" +msgstr "×©×™× ×•×™ ×©× ×˜×¢×™× ×” ×וטומטית" #: editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" @@ -1040,217 +1009,217 @@ msgstr "" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "" +msgstr "הזזת ×˜×¢×™× ×” ×וטומטית" #: editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "" +msgstr "הסרת ×˜×¢×™× ×” ×וטומטית" #: editor/editor_autoload_settings.cpp msgid "Enable" -msgstr "" +msgstr "הפעלה" #: editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "" +msgstr "סידור ×˜×¢×™× ×•×ª ×וטומטית מחדש" #: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp #: scene/gui/file_dialog.cpp msgid "Path:" -msgstr "" +msgstr "× ×ª×™×‘:" #: editor/editor_autoload_settings.cpp msgid "Node Name:" -msgstr "" +msgstr "×©× ×”×ž×¤×¨×§:" #: editor/editor_autoload_settings.cpp editor/editor_profiler.cpp #: editor/project_manager.cpp editor/settings_config_dialog.cpp msgid "Name" -msgstr "" +msgstr "ש×" #: editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "" +msgstr "×™×—×™×“× ×™" #: editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "×”×¡×¦× ×” ×ž×ª×¢×“×›× ×ª" #: editor/editor_data.cpp msgid "Storing local changes.." -msgstr "" +msgstr "×”×©×™× ×•×™×™× ×”×ž×§×•×ž×™×™× ×ž××•×—×¡× ×™×…" #: editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "×”×¡×¦× ×” ×ž×ª×¢×“×›× ×ªâ€¦" #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[ריק]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[×œ× × ×©×ž×¨]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" -msgstr "" +msgstr "× × ×œ×‘×—×•×¨ ×ת תיקיית הבסיס תחילה" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "" +msgstr "× × ×œ×‘×—×•×¨ תיקייה" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp 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 #: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp #: scene/gui/file_dialog.cpp msgid "Name:" -msgstr "" +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" -msgstr "" +msgstr "בחירה" #: editor/editor_export.cpp msgid "Storing File:" -msgstr "" +msgstr "קובץ ×חסון:" #: editor/editor_export.cpp msgid "Packing" -msgstr "" +msgstr "×ריזה" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "" +msgid "Template file not found:" +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 Current Folder" -msgstr "" +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 "Show In File Manager" -msgstr "" +msgstr "הצגה ×‘×ž× ×”×œ הקבצי×" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder.." -msgstr "" +msgstr "תיקייה חדשה…" #: editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "" +msgstr "×¨×¢× ×•×Ÿ" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" -msgstr "" +msgstr "כל המוכרי×" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Files (*)" -msgstr "" +msgstr "כל ×”×§×‘×¦×™× (*)" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "" +msgstr "פתיחת קובץ" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "" +msgstr "פתיחת קבצי×" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a Directory" -msgstr "" +msgstr "פתיחת תיקייה" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a File or Directory" -msgstr "" +msgstr "פתיחת קובץ ×ו תיקייה" #: editor/editor_file_dialog.cpp editor/editor_node.cpp #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp msgid "Save" -msgstr "" +msgstr "שמירה" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Save a File" -msgstr "" +msgstr "שמירת קובץ" #: editor/editor_file_dialog.cpp msgid "Go Back" -msgstr "" +msgstr "חזרה ×חורה" #: editor/editor_file_dialog.cpp msgid "Go Forward" -msgstr "" +msgstr "התקדמות קדימה" #: editor/editor_file_dialog.cpp msgid "Go Up" -msgstr "" +msgstr "עלייה למעלה" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "" +msgstr "החלפת מצב תצוגה ×œ×§×‘×¦×™× ×ž×•×¡×ª×¨×™×" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "" +msgstr "החלפת מצב מועדפי×" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "" +msgstr "החלפת מצב" #: editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "" +msgstr "התמקדות על × ×ª×™×‘" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "" +msgstr "העברת מועדף למעלה" #: editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "" +msgstr "העברת מועדף למטה" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Go to parent folder" -msgstr "" +msgstr "מעבר לתיקייה שמעל" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" -msgstr "" +msgstr "תיקיות וקבצי×:" #: editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "" +msgstr "תצוגה מקדימה:" #: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp #: scene/gui/file_dialog.cpp msgid "File:" -msgstr "" +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" -msgstr "" +msgstr "סריקת מקורות" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" @@ -1259,95 +1228,106 @@ msgstr "" #: editor/editor_help.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp msgid "Search Help" -msgstr "" +msgstr "חיפוש בעזרה" #: editor/editor_help.cpp msgid "Class List:" -msgstr "" +msgstr "רשימת מחלקות:" #: editor/editor_help.cpp msgid "Search Classes" -msgstr "" +msgstr "חיפוש במחלקות" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" -msgstr "" +msgstr "עליון" #: editor/editor_help.cpp editor/property_editor.cpp msgid "Class:" -msgstr "" +msgstr "מחלקה:" #: editor/editor_help.cpp editor/scene_tree_editor.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 "Members" -msgstr "" +msgstr "חברי×" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Members:" -msgstr "" +msgstr "חברי×:" #: editor/editor_help.cpp msgid "Public Methods" -msgstr "" +msgstr "שיטות ציבוריות" #: editor/editor_help.cpp msgid "Public Methods:" -msgstr "" +msgstr "שיטות ציבוריות:" #: editor/editor_help.cpp msgid "GUI Theme Items" -msgstr "" +msgstr "פריטי ×ž× ×©×§ משתמש של ערכת העיצוב" #: editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "" +msgstr "פריטי ×ž× ×©×§ משתמש של ערכת העיצוב:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" -msgstr "" +msgstr "×ותות:" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "" +msgstr "×ž×•× ×™×" #: editor/editor_help.cpp msgid "Enumerations:" -msgstr "" +msgstr "×ž×•× ×™×:" #: editor/editor_help.cpp msgid "enum " -msgstr "" +msgstr "×ž×•× ×” " #: editor/editor_help.cpp msgid "Constants" -msgstr "" +msgstr "קבועי×" #: editor/editor_help.cpp msgid "Constants:" -msgstr "" +msgstr "קבועי×:" #: editor/editor_help.cpp msgid "Description" +msgstr "תי×ור" + +#: editor/editor_help.cpp +msgid "Online Tutorials:" msgstr "" #: editor/editor_help.cpp -msgid "Properties" +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 "Properties" +msgstr "מ××¤×™×™× ×™×" + +#: editor/editor_help.cpp msgid "Property Description:" -msgstr "" +msgstr "תי×ור המ×פיין:" #: editor/editor_help.cpp msgid "" @@ -1357,11 +1337,11 @@ msgstr "" #: editor/editor_help.cpp msgid "Methods" -msgstr "" +msgstr "שיטות" #: editor/editor_help.cpp msgid "Method Description:" -msgstr "" +msgstr "תי×ור השיטה:" #: editor/editor_help.cpp msgid "" @@ -1371,55 +1351,63 @@ msgstr "" #: editor/editor_help.cpp msgid "Search Text" -msgstr "" +msgstr "חיפוש טקסט" + +#: editor/editor_help.cpp +msgid "Find" +msgstr "×יתור" #: editor/editor_log.cpp msgid "Output:" -msgstr "" +msgstr "פלט:" #: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp #: editor/property_editor.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 "" +msgstr "מחיקה" + +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "מחיקת הפלט" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" -msgstr "" +msgstr "שגי××” בשמירת המש×ב!" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As.." -msgstr "" +msgstr "שמירת המש×ב בתור…" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." -msgstr "" +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." -msgstr "" +msgstr "שגי××” בעת השמירה." #: editor/editor_node.cpp msgid "Can't open '%s'." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ת ‚%s’." #: editor/editor_node.cpp msgid "Error while parsing '%s'." -msgstr "" +msgstr "×”×¤×¢× ×•×— של ‚%s’ × ×›×©×œ." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "" +msgstr "סוף הקובץ בלתי צפוי ‚%s’." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." @@ -1427,32 +1415,35 @@ msgstr "" #: editor/editor_node.cpp msgid "Error while loading '%s'." -msgstr "" +msgstr "×”×˜×¢×™× ×” של ‚%s’ × ×›×©×œ×”." #: editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "×”×¡×¦× ×” × ×©×ž×¨×ª" #: editor/editor_node.cpp msgid "Analyzing" -msgstr "" +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." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×©×•×¨×© ×”×¢×¥." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" +"×œ× × ×™×ª×Ÿ לשמור ×ת ×”×¡×¦× ×”. כפי ×”× ×¨××” עקב תלויות (×ž×•×¤×¢×™× ×ו ירושות) ש××™× ×Ÿ " +"מסופקות." #: editor/editor_node.cpp msgid "Failed to load resource." -msgstr "" +msgstr "×˜×¢×™× ×ª המש×ב × ×›×©×œ×”." #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1472,19 +1463,19 @@ msgstr "" #: editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "" +msgstr "שמירת הפריסה × ×›×©×œ×”!" #: editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "" +msgstr "בררת המחדל של פריסת העורך שוכתבה." #: editor/editor_node.cpp msgid "Layout name not found!" -msgstr "" +msgstr "×©× ×”×¤×¨×™×¡×” ×œ× × ×ž×¦×!" #: editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "" +msgstr "פריסת בררת המחדל שוחזרה להגדרות הבסיס." #: editor/editor_node.cpp msgid "" @@ -1504,6 +1495,8 @@ 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 "" @@ -1522,27 +1515,27 @@ msgstr "" #: editor/editor_node.cpp msgid "Expand all properties" -msgstr "" +msgstr "הרחבת כל המ××¤×™×™× ×™×" #: editor/editor_node.cpp msgid "Collapse all properties" -msgstr "" +msgstr "×¦×ž×¦×•× ×›×œ המ××¤×™×™× ×™×" #: editor/editor_node.cpp msgid "Copy Params" -msgstr "" +msgstr "העתקת ×ž×©×ª× ×™×" #: editor/editor_node.cpp msgid "Paste Params" -msgstr "" +msgstr "הדבקת ×ž×©×ª× ×™×" #: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "" +msgstr "הדבקת מש×ב" #: editor/editor_node.cpp msgid "Copy Resource" -msgstr "" +msgstr "העתקת מש×ב" #: editor/editor_node.cpp msgid "Make Built-In" @@ -1554,11 +1547,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Open in Help" -msgstr "" +msgstr "פתיחה בעזרה" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "×ין ×¡×¦× ×” מוגדרת להרצה." #: editor/editor_node.cpp msgid "" @@ -1583,55 +1576,55 @@ 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!" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך ×ž×©× ×”!" #: editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "פתיחת ×¡×¦× ×”" #: editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "פתיחת ×¡×¦× ×ª בסיס" #: editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "" +msgstr "פתיחת ×¡×¦× ×” מהירה…" #: editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "" +msgstr "פתיחת סקריפט מהירה…" #: editor/editor_node.cpp msgid "Save & Close" -msgstr "" +msgstr "שמירה וסגירה" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "" +msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œÖ¾â€š%s’ ×œ×¤× ×™ הסגירה?" #: editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "שמירת ×¡×¦× ×” בש×…" #: editor/editor_node.cpp msgid "No" -msgstr "" +msgstr "ל×" #: editor/editor_node.cpp msgid "Yes" -msgstr "" +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." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×¡×¦× ×”." #: editor/editor_node.cpp msgid "Export Mesh Library" @@ -1639,7 +1632,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" @@ -1647,23 +1640,23 @@ 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" -msgstr "" +msgstr "שחזור" #: editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לבטל פעולה זו. לשחזר בכל ×–×ת?" #: editor/editor_node.cpp msgid "Quick Run Scene.." @@ -1671,49 +1664,51 @@ msgstr "" #: editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "יצי××”" #: editor/editor_node.cpp msgid "Exit the editor?" -msgstr "" +msgstr "לצ×ת מהעורך?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "" +msgstr "לפתוח ×ת ×ž× ×”×œ המיזמי×?" #: editor/editor_node.cpp msgid "Save & Quit" -msgstr "" +msgstr "לשמור ולצ×ת" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" -msgstr "" +msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œ×¡×¦× ×•×ª הב×ות ×œ×¤× ×™ היצי××”?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" -msgstr "" +msgstr "לשמור ×ת ×”×¡×¦× ×•×ª הב×ות ×œ×¤× ×™ פתיחת ×ž× ×”×œ המיזמי×?" #: editor/editor_node.cpp msgid "" "This option is deprecated. Situations where refresh must be forced are now " "considered a bug. Please report." msgstr "" +"×פשרות זו ××™× ×” ×–×ž×™× ×” עוד. ×ž×¦×‘×™× ×‘×”× ×™×© ל×לץ ×¨×¢× ×•×Ÿ × ×—×©×‘×™× ×œ×‘××’×™×. × × ×œ×“×•×•×— " +"עליה×." #: editor/editor_node.cpp msgid "Pick a Main Scene" -msgstr "" +msgstr "× × ×œ×‘×—×•×¨ ×¡×¦× ×” ר×שית" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ת תוסף ההרחבות תחת: ‚%s’ ×¤×¢× ×•×— ההגדרות × ×›×©×œ." #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×©×“×” סקריפט עבור תוסף הרחבה תחת ‚res://addons/%s’." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ לטעון סקריפט הרחבה ×ž×”× ×ª×™×‘: ‚%s’." #: editor/editor_node.cpp msgid "" @@ -1792,23 +1787,23 @@ msgstr "" #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "" +msgstr "הוספת ×¡×¦× ×” חדשה." #: editor/editor_node.cpp msgid "Scene" -msgstr "" +msgstr "×¡×¦× ×”" #: editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "" +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.." @@ -1816,39 +1811,39 @@ msgstr "" #: editor/editor_node.cpp msgid "Operations with scene files." -msgstr "" +msgstr "פעולות ×¢× ×§×•×‘×¦×™ ×¡×¦× ×•×ª." #: editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "×¡×¦× ×” חדשה" #: editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "" +msgstr "×¡×¦× ×” חדשה בירושה…" #: editor/editor_node.cpp msgid "Open Scene.." -msgstr "" +msgstr "פתיחת ×¡×¦× ×”â€¦" #: editor/editor_node.cpp msgid "Save Scene" -msgstr "" +msgstr "שמירת ×¡×¦× ×”" #: editor/editor_node.cpp msgid "Save all Scenes" -msgstr "" +msgstr "שמירת כל ×”×¡×¦× ×•×ª" #: editor/editor_node.cpp msgid "Close Scene" -msgstr "" +msgstr "סגירת ×¡×¦× ×”" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Open Recent" -msgstr "" +msgstr "פתיחה מה××—×¨×•× ×™×" #: editor/editor_node.cpp msgid "Convert To.." -msgstr "" +msgstr "המרה ×ל…" #: editor/editor_node.cpp msgid "MeshLibrary.." @@ -1861,62 +1856,64 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Undo" -msgstr "" +msgstr "ביטול" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp msgid "Redo" -msgstr "" +msgstr "ביצוע חוזר" #: editor/editor_node.cpp msgid "Revert Scene" -msgstr "" +msgstr "שחזור ×¡×¦× ×”" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "" +msgstr "×›×œ×™× ×©×•× ×™× ×œ×ž×™×–× ×ו למגוון ×¡×¦× ×•×ª." #: editor/editor_node.cpp msgid "Project" -msgstr "" +msgstr "מיז×" #: editor/editor_node.cpp msgid "Project Settings" -msgstr "" +msgstr "הגדרות מיז×" #: editor/editor_node.cpp msgid "Run Script" -msgstr "" +msgstr "הרצת סקריפט" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export" -msgstr "" +msgstr "ייצו×" #: editor/editor_node.cpp msgid "Tools" -msgstr "" +msgstr "כלי×" #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "" +msgstr "יצי××” לרשימת המיזמי×" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Debug" -msgstr "" +msgstr "× ×™×¤×•×™ שגי×ות" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "" +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 "" +"בעת ×™×™×¦×•× ×ו הטמעה, קובץ ההפעלה ×™× ×¡×” להתחבר לכתובת ×”Ö¾IP של המחשב ×”×–×” לצורך " +"× ×™×¤×•×™ שגי×ות." #: editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "הטמעה ×§×˜× ×” ×¢× ×ž×¢×¨×›×ª ×§×‘×¦×™× ×‘×¨×©×ª" #: editor/editor_node.cpp msgid "" @@ -1940,7 +1937,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "" +msgstr "× ×™×•×•×˜ גלוי" #: editor/editor_node.cpp msgid "" @@ -1950,7 +1947,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "×¡× ×›×¨×•×Ÿ ×”×©×™× ×•×™×™× ×‘×¡×¦× ×”" #: editor/editor_node.cpp msgid "" @@ -1962,7 +1959,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "" +msgstr "×¡× ×›×¨×•×Ÿ ×”×©×™× ×•×™×™× ×‘×¡×§×¨×™×¤×˜" #: editor/editor_node.cpp msgid "" @@ -1974,216 +1971,223 @@ msgstr "" #: editor/editor_node.cpp msgid "Editor" -msgstr "" +msgstr "עורך" #: editor/editor_node.cpp editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "" +msgstr "הגדרות עורך" #: editor/editor_node.cpp msgid "Editor Layout" -msgstr "" +msgstr "פריסת עורך" #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "" +msgstr "×›× ×™×¡×” ×ל/יצי××” ממסך מל×" #: editor/editor_node.cpp editor/project_export.cpp msgid "Manage Export Templates" -msgstr "" +msgstr "× ×™×”×•×œ ×ª×‘× ×™×•×ª ייצו×" #: editor/editor_node.cpp msgid "Help" -msgstr "" +msgstr "עזרה" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Classes" -msgstr "" +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/project_settings_editor.cpp +msgid "Search" +msgstr "חיפוש" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" -msgstr "" +msgstr "×ž×¡×ž×›×™× ×ž×§×•×•× ×™×" #: editor/editor_node.cpp msgid "Q&A" -msgstr "" +msgstr "שו״ת" #: editor/editor_node.cpp msgid "Issue Tracker" -msgstr "" +msgstr "עוקב תקלות" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "קהילה" #: editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "על ×ודות" #: editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "× ×’×™× ×ª המיז×…" #: editor/editor_node.cpp msgid "Play" -msgstr "" +msgstr "× ×’×™× ×”" #: editor/editor_node.cpp msgid "Pause the scene" -msgstr "" +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 "Stop" -msgstr "" +msgstr "עצירה" #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "" +msgstr "× ×’×™× ×ª ×”×¡×¦× ×” ×©× ×¢×¨×›×”." #: editor/editor_node.cpp msgid "Play Scene" -msgstr "" +msgstr "× ×’×™× ×ª ×”×¡×¦× ×”" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "" +msgstr "× ×’×™× ×ª ×¡×¦× ×” מות×מת ×ישית" #: editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "" +msgstr "× ×’×™× ×ª ×¡×¦× ×” בהת×מה ×ישית" #: editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "" +msgstr "מסתובב ×›×שר חלון העורך מצויר מחדש!" #: editor/editor_node.cpp msgid "Update Always" -msgstr "" +msgstr "לעדכן תמיד" #: editor/editor_node.cpp msgid "Update Changes" -msgstr "" +msgstr "עדכון ×©×™× ×•×™×™×" #: editor/editor_node.cpp msgid "Disable Update Spinner" -msgstr "" +msgstr "השבתת שבשבת עדכון" #: editor/editor_node.cpp msgid "Inspector" -msgstr "" +msgstr "חוקר" #: editor/editor_node.cpp msgid "Create a new resource in memory and edit it." -msgstr "" +msgstr "יצירת מש×ב חדש בזיכרון ועריכתו." #: editor/editor_node.cpp msgid "Load an existing resource from disk and edit it." -msgstr "" +msgstr "×˜×¢×™× ×ª מש×ב ×§×™×™× ×ž×”×›×•× ×Ÿ ועריכתו." #: editor/editor_node.cpp msgid "Save the currently edited resource." -msgstr "" +msgstr "שמירת המש×ב ×©× ×¢×¨×š כרגע." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "" +msgstr "שמירה בש×…" #: editor/editor_node.cpp msgid "Go to the previous edited object in history." -msgstr "" +msgstr "מעבר לפריט ×”×חרון ×©× ×¢×¨×š מההיסטוריה." #: editor/editor_node.cpp msgid "Go to the next edited object in history." -msgstr "" +msgstr "מעבר לפריט ×”×‘× ×©× ×¢×¨×š מההיסטוריה." #: editor/editor_node.cpp msgid "History of recently edited objects." -msgstr "" +msgstr "היסטוריה של ×”×¤×¨×™×˜×™× ×©× ×¢×¨×›×• ל××—×¨×•× ×”." #: editor/editor_node.cpp msgid "Object properties." -msgstr "" +msgstr "מ××¤×™×™× ×™ פריט." #: editor/editor_node.cpp msgid "Changes may be lost!" -msgstr "" +msgstr "×”×©×™× ×•×™×™× ×¢×©×•×™×™× ×œ×œ×›×ª ל×יבוד!" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "ייבו×" #: editor/editor_node.cpp msgid "Node" -msgstr "" +msgstr "מפרק" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "מערכת קבצי×" #: editor/editor_node.cpp msgid "Output" -msgstr "" +msgstr "פלט" #: editor/editor_node.cpp msgid "Don't Save" -msgstr "" +msgstr "×œ× ×œ×©×ž×•×¨" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +msgstr "×™×™×‘×•× ×ª×‘× ×™×•×ª מקובץ ZIP" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" -msgstr "" +msgstr "×™×™×¦×•× ×ž×™×–×" #: editor/editor_node.cpp msgid "Export Library" -msgstr "" +msgstr "×™×™×¦×•× ×¡×¤×¨×™×”" #: editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "מיזוג ×¢× × ×•×›×—×™×™×" #: editor/editor_node.cpp msgid "Password:" -msgstr "" +msgstr "ססמה:" #: editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "" +msgstr "פתיחה והרצה של סקריפט" #: editor/editor_node.cpp msgid "New Inherited" -msgstr "" +msgstr "חדש בירושה" #: editor/editor_node.cpp msgid "Load Errors" -msgstr "" +msgstr "שגי×ות ×˜×¢×™× ×”" #: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp msgid "Select" -msgstr "" +msgstr "בחירה" #: editor/editor_node.cpp msgid "Open 2D Editor" -msgstr "" +msgstr "פתיחת עורך דו־ממד" #: editor/editor_node.cpp msgid "Open 3D Editor" -msgstr "" +msgstr "פתיחת עורך תלת־ממד" #: editor/editor_node.cpp msgid "Open Script Editor" -msgstr "" +msgstr "פתיחת עורך סקריפטי×" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" @@ -2191,11 +2195,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Open the next Editor" -msgstr "" +msgstr "פתיחת העורך הב×" #: editor/editor_node.cpp msgid "Open the previous Editor" -msgstr "" +msgstr "פתיחת העורך הקוד×" #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -2203,28 +2207,28 @@ msgstr "" #: editor/editor_plugin.cpp msgid "Thumbnail.." -msgstr "" +msgstr "×ª×ž×•× ×” ממוזערת…" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "" +msgstr "×ª×•×¡×¤×™× ×ž×•×ª×§× ×™×:" #: editor/editor_plugin_settings.cpp msgid "Update" -msgstr "" +msgstr "עדכון" #: editor/editor_plugin_settings.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Version:" -msgstr "" +msgstr "גרסה:" #: editor/editor_plugin_settings.cpp msgid "Author:" -msgstr "" +msgstr "יוצר:" #: editor/editor_plugin_settings.cpp msgid "Status:" -msgstr "" +msgstr "מצב:" #: editor/editor_profiler.cpp msgid "Stop Profiling" @@ -2236,27 +2240,27 @@ msgstr "" #: editor/editor_profiler.cpp msgid "Measure:" -msgstr "" +msgstr "מדידה:" #: editor/editor_profiler.cpp msgid "Frame Time (sec)" -msgstr "" +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 editor/script_editor_debugger.cpp msgid "Time:" -msgstr "" +msgstr "זמן:" #: editor/editor_profiler.cpp msgid "Inclusive" @@ -2264,23 +2268,23 @@ msgstr "" #: editor/editor_profiler.cpp msgid "Self" -msgstr "" +msgstr "עצמי" #: editor/editor_profiler.cpp msgid "Frame #:" -msgstr "" +msgstr "שקופית מס׳:" #: editor/editor_profiler.cpp msgid "Time" -msgstr "" +msgstr "זמן" #: editor/editor_profiler.cpp msgid "Calls" -msgstr "" +msgstr "קרי×ות" #: editor/editor_run_native.cpp msgid "Select device from the list" -msgstr "" +msgstr "× × ×œ×‘×—×•×¨ התקן מהרשימה" #: editor/editor_run_native.cpp msgid "" @@ -2290,11 +2294,11 @@ msgstr "" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "" +msgstr "× ×™×ª×Ÿ לכתוב ×ת הלוגיקה שלך בשיטה ‎_run()‎." #: editor/editor_run_script.cpp msgid "There is an edited scene already." -msgstr "" +msgstr "כבר יש ×¡×¦× ×” בעריכה." #: editor/editor_run_script.cpp msgid "Couldn't instance script:" @@ -2302,55 +2306,55 @@ msgstr "" #: editor/editor_run_script.cpp msgid "Did you forget the 'tool' keyword?" -msgstr "" +msgstr "יכול להיות ששכחת ×ת מילת המפתח ‚tool’?" #: editor/editor_run_script.cpp msgid "Couldn't run script:" -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ להריץ ×ת הסקריפט:" #: editor/editor_run_script.cpp msgid "Did you forget the '_run' method?" -msgstr "" +msgstr "שכחת ×ת השיטה ‚‎_run’?" #: editor/editor_settings.cpp msgid "Default (Same as Editor)" -msgstr "" +msgstr "בררת מחדל (כמו העורך)" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" -msgstr "" +msgstr "× × ×œ×‘×—×•×¨ ×ž×¤×¨×§×™× ×œ×™×™×¦×•×" #: editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "" +msgstr "× ×ª×™×‘ ×¡×¦× ×•×ª:" #: editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "" +msgstr "×™×™×‘×•× ×ž×ž×¤×¨×§:" #: editor/export_template_manager.cpp msgid "Re-Download" -msgstr "" +msgstr "הורדה מחדש" #: editor/export_template_manager.cpp msgid "Uninstall" -msgstr "" +msgstr "הסרה" #: editor/export_template_manager.cpp msgid "(Installed)" -msgstr "" +msgstr "(מותקן)" #: editor/export_template_manager.cpp msgid "Download" -msgstr "" +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.." @@ -2358,15 +2362,15 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Remove template version '%s'?" -msgstr "" +msgstr "להסיר ×ת גרסת ×”×ª×‘× ×™×ª ‚%s’?" #: editor/export_template_manager.cpp msgid "Can't open export templates zip." -msgstr "" +msgstr "×œ× × ×™×ª×Ÿ ×œ×™×™×¦× zip של ×ª×‘× ×™×•×ª." #: editor/export_template_manager.cpp msgid "Invalid version.txt format inside templates." -msgstr "" +msgstr "×ª×‘× ×™×ª ×”Ö¾version.txt שגויה בתוך ×”×ª×‘× ×™×•×ª." #: editor/export_template_manager.cpp msgid "" @@ -2379,7 +2383,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2533,9 +2537,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2543,19 +2545,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +msgid "Error moving:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3192,6 +3194,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3357,6 +3363,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3657,19 +3664,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4040,7 +4050,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4429,14 +4439,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4512,6 +4524,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4943,83 +4959,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5034,6 +5050,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5107,15 +5127,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5390,10 +5406,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5419,14 +5443,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5564,6 +5591,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5664,6 +5695,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5771,9 +5826,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5785,6 +5838,14 @@ msgid "Imported Project" 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 "" @@ -5825,14 +5886,26 @@ 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 "" @@ -5849,10 +5922,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5898,6 +5967,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6024,11 +6097,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6406,10 +6474,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6494,7 +6558,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6785,7 +6849,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6794,6 +6858,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7139,10 +7207,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7411,23 +7519,23 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp msgid "Find Node Type" -msgstr "" +msgstr "×יתור סוג מפרק" #: modules/visual_script/visual_script_editor.cpp msgid "Copy Nodes" -msgstr "" +msgstr "העתקת מפרקי×" #: modules/visual_script/visual_script_editor.cpp msgid "Cut Nodes" -msgstr "" +msgstr "גזירת מפרקי×" #: modules/visual_script/visual_script_editor.cpp msgid "Paste Nodes" -msgstr "" +msgstr "הדבקת מפרקי×" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "סוג הקלט ×œ× ×–×ž×™×Ÿ למחזוריות: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" @@ -7439,15 +7547,15 @@ 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!" -msgstr "" +msgstr "×¢×¦× ×”×‘×¡×™×¡ ××™× × ×• מפרק!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "×”× ×ª×™×‘ ×œ× ×ž×•×‘×™×œ מפרק!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." @@ -7455,23 +7563,23 @@ msgstr "" #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " -msgstr "" +msgstr ": ××¨×’×•×ž× ×˜ שגוי מסוג: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr "" +msgstr ": ××¨×’×•×ž× ×˜×™× ×©×’×•×™×™×: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "×œ× × ×ž×¦× VariableGet בסקריפט: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" +msgstr "×œ× × ×ž×¦× VariableSet בסקריפט: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "" +msgstr "למפרק המות×× ×ין שיטת ‎_step()‎, ×ין ×פשרות לעבד תרשי×." #: modules/visual_script/visual_script_nodes.cpp msgid "" @@ -7481,31 +7589,35 @@ msgstr "" #: platform/javascript/export/export.cpp msgid "Run in Browser" -msgstr "" +msgstr "הפעלה בדפדפן" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." -msgstr "" +msgstr "הפעלת ×”Ö¾HTML ×”×ž×™×•×¦× ×‘×“×¤×“×¤×Ÿ בררת המחדל של המערכת." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "" +msgid "Could not write file:" +msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +msgid "Could not open template for export:" +msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ª×‘× ×™×ª לייצו×:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "" +msgid "Invalid export template:" +msgstr "×ª×‘× ×™×ª ×™×¦×•× ×©×’×•×™×”:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "" +msgid "Could not read custom HTML shell:" +msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ž×¢×˜×¤×ª HTML מות×מת:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "" +msgid "Could not read boot splash image file:" +msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×§×•×‘×¥ ×ª×ž×•× ×ª פתיח:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "× ×¢×©×” שימוש ×‘×ª×ž×•× ×ª הפתיח כבררת מחדל." #: scene/2d/animated_sprite.cpp msgid "" @@ -7519,6 +7631,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7574,20 +7693,21 @@ msgstr "" msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +"מפרק ParallaxLayer עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק ParallaxBackground." #: 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 "" +msgstr "×œ× ×ž×•×§×¦×” חומר לעיבוד חלקיקי×, לכן ×œ× ×ª×•×˜×‘×¢ ×”×ª× ×”×’×•×ª." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." -msgstr "" +msgstr "PathFollow2D עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק Path2D." #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7604,7 +7724,7 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ל־ARVRCamera חייב להיות מפרק ARVROrigin כהורה שלו" #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent" @@ -7628,7 +7748,7 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node" -msgstr "" +msgstr "ARVROrigin דורש מפרק צ××¦× ×ž×¡×•×’ ARVRCamera" #: scene/3d/baked_lightmap.cpp msgid "Plotting Meshes: " @@ -7646,6 +7766,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7655,7 +7782,7 @@ msgstr "" #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." -msgstr "" +msgstr "ל־CollisionPolygon ריק ×ין כל השפעה על ×”×ª× ×’×©×•×ª." #: scene/3d/collision_shape.cpp msgid "" @@ -7691,8 +7818,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7757,8 +7884,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7775,12 +7902,33 @@ msgstr "" #: scene/resources/dynamic_font.cpp msgid "Unknown font format." -msgstr "" +msgstr "×ž×‘× ×” הגופן ×œ× ×™×“×•×¢." #: scene/resources/dynamic_font.cpp msgid "Error loading font." -msgstr "" +msgstr "שגי××” ×‘×˜×¢×™× ×ª הגופן." #: scene/resources/dynamic_font.cpp msgid "Invalid font size." -msgstr "" +msgstr "גודל הגופן שגוי." + +#~ msgid "Next" +#~ msgstr "הב×" + +#~ msgid "Not found!" +#~ msgstr "×œ× × ×ž×¦×!" + +#~ msgid "Replace By" +#~ msgstr "להחליף ב־" + +#~ msgid "Case Sensitive" +#~ msgstr "תלוי רישיות" + +#~ msgid "Backwards" +#~ msgstr "×חורה" + +#~ msgid "Prompt On Replace" +#~ msgstr "להודיע על החלפה" + +#~ msgid "Skip" +#~ msgstr "לדלג" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index 2da7f0fed1..c124727d74 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -204,8 +204,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -382,14 +381,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -398,50 +389,18 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp -msgid "Skip" -msgstr "छोड़ें" - -#: editor/code_editor.cpp msgid "Zoom In" msgstr "बड़ा करो" @@ -565,6 +524,15 @@ msgid "Signals" msgstr "संकेत" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp #, fuzzy msgid "Create New %s" msgstr "à¤à¤• नया बनाà¤à¤‚" @@ -681,7 +649,8 @@ msgstr "" "वैसे à¤à¥€ उनà¥à¤¹à¥‡à¤‚ निकालें? (कोई पूरà¥à¤µà¤µà¤¤ नहीं)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "निकाला नहीं जा सकता:\n" #: editor/dependency_editor.cpp @@ -765,8 +734,9 @@ msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•" msgid "Lead Developer" msgstr "पà¥à¤°à¤®à¥à¤– डेवलपर" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर" #: editor/editor_about.cpp @@ -857,7 +827,7 @@ msgid "Success!" msgstr "सफलता!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "इंसà¥à¤Ÿà¥‰à¤²" @@ -1169,7 +1139,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1381,6 +1351,17 @@ msgid "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 "Properties" msgstr "" @@ -1412,6 +1393,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1423,6 +1408,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1431,8 +1420,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1486,7 +1475,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2039,6 +2029,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2418,7 +2415,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2573,9 +2570,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2583,21 +2578,23 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "" +#, fuzzy +msgid "Unable to update dependencies:" +msgstr "लापता निरà¥à¤à¤°à¤¤à¤¾à¤“ं के कारण दृशà¥à¤¯ लोड करने में विफल रहे:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -3237,6 +3234,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3402,6 +3403,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3702,19 +3704,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4085,7 +4090,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4474,14 +4479,17 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "संसाधन" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4557,6 +4565,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4988,83 +5000,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5079,6 +5091,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5152,15 +5168,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5435,10 +5447,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5464,14 +5484,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5609,6 +5632,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5709,6 +5736,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5816,9 +5867,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5830,6 +5879,14 @@ msgid "Imported Project" 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 "" @@ -5870,14 +5927,28 @@ 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 +#, fuzzy +msgid "Create & Edit" +msgstr "à¤à¤• नया बनाà¤à¤‚" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "इंसà¥à¤Ÿà¥‰à¤²" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5894,10 +5965,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5943,6 +6010,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6069,11 +6140,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6451,10 +6517,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6539,8 +6601,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "संसाधन" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6830,7 +6893,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6839,6 +6902,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7184,10 +7251,51 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7533,23 +7641,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7564,6 +7676,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7632,7 +7751,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7691,6 +7810,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7736,8 +7862,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7802,8 +7928,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7830,6 +7956,5 @@ msgstr "" msgid "Invalid font size." msgstr "गलत फॉणà¥à¤Ÿ का आकार |" -#, fuzzy -#~ msgid "Create Subscription" -#~ msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚" +#~ msgid "Skip" +#~ msgstr "छोड़ें" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 9f38422bbc..9d89e98f7e 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -5,20 +5,20 @@ # # Nagy Lajos <neutron9707@gmail.com>, 2017. # Sandor Domokos <sandor.domokos@gmail.com>, 2017. -# Varga Dániel <danikah.danikah@gmail.com>, 2016-2017. +# Varga Dániel <danikah.danikah@gmail.com>, 2016-2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-01 05:47+0000\n" -"Last-Translator: Sandor Domokos <sandor.domokos@gmail.com>\n" +"PO-Revision-Date: 2018-01-20 08:54+0000\n" +"Last-Translator: Varga Dániel <danikah.danikah@gmail.com>\n" "Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/" "godot/hu/>\n" "Language: hu\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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -26,49 +26,47 @@ msgstr "Tiltva" #: editor/animation_editor.cpp msgid "All Selection" -msgstr "Mind kiválaszt" +msgstr "Mind kiválasztva" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Animáció érték váltás" +msgstr "Animáció Kulcsképkocka IdÅ‘ Változtatása" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "Animáció átmenet megváltoztatása" +msgstr "Animáció Ãtmenet Váltás" #: editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "Animáció átalakÃtó váltás" +msgstr "Animáció Transzformáció Váltás" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Animáció érték váltás" +msgstr "Animáció Kulcsképkocka Érték" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "Animáció hÃvás váltás" +msgstr "Animáció HÃvás Váltás" #: editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "Animáció nyomvonal hozzáadása" +msgstr "Animáció Nyomvonal Hozzáadása" #: editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Animáció kulcs megkettÅ‘zése" +msgstr "Animáció Kulcs MegkettÅ‘zése" #: editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "Animáció nyomvonal felfelé mozgatása" +msgstr "Animáció Nyomvonal Felfelé Mozgatása" #: editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "Animáció nyomvonal lefelé mozgatása" +msgstr "Animáció Nyomvonal Lefelé Mozgatása" #: editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "Animáció nyomvonal eltávolÃtása" +msgstr "Animáció Nyomvonal EltávolÃtása" #: editor/animation_editor.cpp msgid "Set Transitions to:" @@ -76,44 +74,44 @@ msgstr "Ãtmenet beállÃtása erre:" #: editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "Animáció nyomvonal átnevezése" +msgstr "Animáció Nyomvonal Ãtnevezése" #: editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "Animáció nyomvonal intelpoláció változtatása" +msgstr "Animáció Nyomvonal Interpoláció Változtatása" #: editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "Animáció nyomvonal érték mód változtatása" +msgstr "Animáció Nyomvonal Érték Mód Változtatása" #: editor/animation_editor.cpp msgid "Anim Track Change Wrap Mode" -msgstr "Animáció nyomvonal takarási mód változtatása" +msgstr "Animáció Nyomvonal Takarási Mód Változtatása" #: editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "Node görbe szerkesztése" +msgstr "Node Görbe Szerkesztése" #: editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "Kiválasztás görbe szerkesztése" +msgstr "Kiválasztás Görbe Szerkesztése" #: editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "Animáció kulcs törlése" +msgstr "Animáció Kulcs Törlése" #: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "Kiválasztás megkettÅ‘zése" +msgstr "Kiválasztás MegkettÅ‘zése" #: editor/animation_editor.cpp msgid "Duplicate Transposed" -msgstr "Kiválasztás áthelyezése" +msgstr "Ãthelyezettek MegkettÅ‘zése" #: editor/animation_editor.cpp msgid "Remove Selection" -msgstr "Kiválasztás eltávolÃtása" +msgstr "Kiválasztás EltávolÃtása" #: editor/animation_editor.cpp msgid "Continuous" @@ -129,27 +127,27 @@ msgstr "ÉrzékelÅ‘" #: editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "Animáció kulcs hozzáadása" +msgstr "Animáció Kulcs Hozzáadása" #: editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "Animáció kulcs mozgatása" +msgstr "Animáció Kulcs Mozgatása" #: editor/animation_editor.cpp msgid "Scale Selection" -msgstr "Kiválasztás átméretezése" +msgstr "Kiválasztás Ãtméretezése" #: editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "Kijelölés a kurzortól" +msgstr "Ãtméretezés A Kurzortól" #: editor/animation_editor.cpp msgid "Goto Next Step" -msgstr "Ugrás a következÅ‘ lépésre" +msgstr "Ugrás A következÅ‘ lépésre" #: editor/animation_editor.cpp msgid "Goto Prev Step" -msgstr "Ugrás az elÅ‘zÅ‘ lépésre" +msgstr "Ugrás Az ElÅ‘zÅ‘ Lépésre" #: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -162,92 +160,91 @@ msgstr "Ãllandó" #: editor/animation_editor.cpp msgid "In" -msgstr "BelsÅ‘" +msgstr "Be" #: editor/animation_editor.cpp msgid "Out" -msgstr "KülsÅ‘" +msgstr "Ki" #: editor/animation_editor.cpp msgid "In-Out" -msgstr "BelsÅ‘-külsÅ‘" +msgstr "Be-Ki" #: editor/animation_editor.cpp msgid "Out-In" -msgstr "KülsÅ‘-belsÅ‘" +msgstr "Ki-Be" #: editor/animation_editor.cpp msgid "Transitions" -msgstr "Ãtmenet" +msgstr "Ãtmenetek" #: editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "Animáció optimalizálása" +msgstr "Animáció Optimalizálása" #: editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "Animáció megtisztÃtása" +msgstr "Animáció MegtisztÃtása" #: editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "ÚJ útvonal létrehozása %s -hez és kulcs beillesztése?" +msgstr "Létrehoz ÚJ útvonalat %s -hez és beilleszti a kulcsot?" #: editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Létrehoz %d ÚJ útvonalat és beilleszti a kulcsokat?" +msgstr "Létrehoz %d ÚJ nyomvonalat és beilleszti a kulcsokat?" #: editor/animation_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Létrehozás" #: editor/animation_editor.cpp msgid "Anim Create & Insert" -msgstr "Animáció létrehozása és beillesztése" +msgstr "Animáció Létrehozása És Beillesztése" #: editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "Animáció útvonal & kulcs beillesztése" +msgstr "Animáció Útvonal És Kulcs Beillesztése" #: editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "Animáció kulcs beillesztése" +msgstr "Animáció Kulcs Beillesztése" #: editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "Csak animáció változtatása" +msgstr "Csak Animáció változtatása" #: editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "Animáció hurok változtatása" +msgstr "Animáció Loop Megváltoztatása" #: editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "" +msgstr "Animáció TÃpusos Érték Kulcs Létrehozása" #: editor/animation_editor.cpp msgid "Anim Insert" -msgstr "Animáció beillesztése" +msgstr "Animáció Beilleszt" #: editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "" +msgstr "Animáció Kulcsok Nyújtása" #: editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "" +msgstr "Animáció HÃvási Nyomvonal Hozzáadása" #: editor/animation_editor.cpp msgid "Animation zoom." -msgstr "" +msgstr "Animáció nagyÃtás." #: editor/animation_editor.cpp msgid "Length (s):" -msgstr "Hossz(ak):" +msgstr "Hossz (mp):" #: editor/animation_editor.cpp msgid "Animation length (in seconds)." @@ -255,11 +252,11 @@ msgstr "Animáció hossza (másodpercben)." #: editor/animation_editor.cpp msgid "Step (s):" -msgstr "Lépés(ek):" +msgstr "Lépés (mp):" #: editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "Kurzor léptetése (másodpercben)." +msgstr "Kurzor hozzáillesztése a lépésekhez (másodpercben)." #: editor/animation_editor.cpp msgid "Enable/Disable looping in animation." @@ -267,7 +264,7 @@ msgstr "Az animáció ismétlésének engedélyezése/tiltása." #: editor/animation_editor.cpp msgid "Add new tracks." -msgstr "Új nyomvonal hozzáadása." +msgstr "Új nyomvonalak hozzáadása." #: editor/animation_editor.cpp msgid "Move current track up." @@ -287,23 +284,23 @@ msgstr "Nyomvonal eszközök" #: editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "" +msgstr "Engedélyezi az egyes kulcsok szerkesztését rákattintással." #: editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "Animáció Optimalizáló" #: editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "Max. lineáris hiba:" +msgstr "Max. Lineáris Hiba:" #: editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "Max. szög hiba:" +msgstr "Max. Szög Hiba:" #: editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "Max. optimalizálható szög:" +msgstr "Max. Optimalizálható Szög:" #: editor/animation_editor.cpp msgid "Optimize" @@ -312,11 +309,12 @@ msgstr "Optimalizálás" #: editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." msgstr "" -"AnimationPlayer választása a Scene Tree-ból az animációk szerkesztéséhez." +"Válasszon egy AnimationPlayer-t a Jelenetfából, hogy animációkat " +"szerkeszthessen." #: editor/animation_editor.cpp msgid "Key" -msgstr "" +msgstr "Kulcs" #: editor/animation_editor.cpp msgid "Transition" @@ -328,7 +326,7 @@ msgstr "Méretezési arány:" #: editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "Melyik Node-ban hÃvjon funkciókat?" +msgstr "Melyik Node-ban HÃvjon Funkciókat?" #: editor/animation_editor.cpp msgid "Remove invalid keys" @@ -344,7 +342,7 @@ msgstr "Összes animáció tisztÃtása" #: editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "Animációk tisztÃtása (Nem visszavonható!)" +msgstr "Animáció(k) TisztÃtása (NEM VISSZAVONHATÓ!)" #: editor/animation_editor.cpp msgid "Clean-Up" @@ -352,99 +350,59 @@ msgstr "TisztÃtás" #: editor/array_property_edit.cpp msgid "Resize Array" -msgstr "Tömb átméretezése" +msgstr "Tömb Ãtméretezése" #: editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "Tömb értéktÃpusának megváltoztatása" +msgstr "Tömb ÉrtéktÃpusának Megváltoztatása" #: editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "Tömb értékének megváltoztatása" +msgstr "Tömb Értékének Megváltoztatása" #: editor/code_editor.cpp msgid "Go to Line" -msgstr "Sorra ugrás" +msgstr "Sorra Ugrás" #: editor/code_editor.cpp msgid "Line Number:" -msgstr "Sor száma:" +msgstr "Sor Száma:" #: editor/code_editor.cpp msgid "No Matches" -msgstr "Nincs találat" +msgstr "Nincs Találat" #: editor/code_editor.cpp msgid "Replaced %d occurrence(s)." msgstr "Lecserélve %d elÅ‘fordulás." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Lecserélés" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Mind lecserélése" - -#: editor/code_editor.cpp msgid "Match Case" -msgstr "ElÅ‘fordulás" +msgstr "Pontos Egyezés" #: editor/code_editor.cpp msgid "Whole Words" -msgstr "Teljes szavak" +msgstr "Teljes Szavak" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Csak a kiválsztás" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Keresés" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Találat" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "KövetkezÅ‘" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Nincs találat!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "" +msgid "Replace" +msgstr "Lecserélés" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "" +msgid "Replace All" +msgstr "Mind Lecserélése" #: editor/code_editor.cpp -msgid "Skip" -msgstr "" +msgid "Selection Only" +msgstr "Csak Kiválsztás" #: editor/code_editor.cpp msgid "Zoom In" -msgstr "NagyÃtás közelÃtés" +msgstr "NagyÃtás" #: editor/code_editor.cpp msgid "Zoom Out" -msgstr "NagyÃtás távolÃtás" +msgstr "KicsinyÃtés" #: editor/code_editor.cpp msgid "Reset Zoom" @@ -460,54 +418,56 @@ msgstr "Oszlop:" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "" +msgstr "Nevezze meg a metódust a cél Node-ban!" #: editor/connections_dialog.cpp msgid "" "Target method not found! Specify a valid method or attach a script to target " "Node." msgstr "" +"Nem található a cél metódus! Nevezzen meg egy érvényes metódust, vagy " +"csatoljon egy scriptet a cél Node-hoz." #: editor/connections_dialog.cpp msgid "Connect To Node:" -msgstr "" +msgstr "Csatlakoztatás Node-hoz:" #: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp #: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp msgid "Add" -msgstr "" +msgstr "Hozzáad" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp #: editor/project_settings_editor.cpp msgid "Remove" -msgstr "" +msgstr "EltávolÃt" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "" +msgstr "További MeghÃvási Argumentum Hozzáadása:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" -msgstr "" +msgstr "További MeghÃvási Argumentumok:" #: editor/connections_dialog.cpp msgid "Path to Node:" -msgstr "" +msgstr "Út a Node-hoz:" #: editor/connections_dialog.cpp msgid "Make Function" -msgstr "" +msgstr "Funkció KészÃtése" #: editor/connections_dialog.cpp msgid "Deferred" -msgstr "" +msgstr "Elhalasztott" #: editor/connections_dialog.cpp msgid "Oneshot" -msgstr "" +msgstr "Egyszeri" #: editor/connections_dialog.cpp editor/dependency_editor.cpp #: editor/export_template_manager.cpp @@ -521,27 +481,27 @@ msgstr "" #: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Close" -msgstr "" +msgstr "Bezárás" #: editor/connections_dialog.cpp msgid "Connect" -msgstr "" +msgstr "Csatlakoztatás" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "" +msgstr "'%s' Csatlakoztatása '%s'-hez" #: editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "" +msgstr "Csatlakoztató Jelzés:" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "" +msgstr "'%s' Lecsatlakoztatása '%s'-ról" #: editor/connections_dialog.cpp msgid "Connect.." -msgstr "Kapcsolódás..." +msgstr "Kapcsolás..." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_editor_plugin.cpp @@ -553,9 +513,17 @@ msgid "Signals" msgstr "Jelzések" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "%s TÃpusának Megváltoztatása" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Megváltoztatás" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Új létrehozása" +msgstr "Új %s Létrehozása" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -587,23 +555,27 @@ msgstr "LeÃrás:" #: editor/dependency_editor.cpp msgid "Search Replacement For:" -msgstr "" +msgstr "Csere Keresése:" #: editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "FüggÅ‘ségek:" #: editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" +"'%s' Jelenet éppen szerkesztés alatt ál.\n" +"A változások nem lépnek érvénybe, ha csak újra nem tölti a jelenetet." #: editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." msgstr "" +"'%s' forrás éppen használatban van.\n" +"A változtatások akkor lépnek életbe, ha a forrást újratölti." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -612,7 +584,7 @@ msgstr "FüggÅ‘ségek" #: editor/dependency_editor.cpp msgid "Resource" -msgstr "" +msgstr "Forrás" #: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp #: editor/project_manager.cpp editor/project_settings_editor.cpp @@ -622,19 +594,19 @@ msgstr "Útvonal" #: editor/dependency_editor.cpp msgid "Dependencies:" -msgstr "" +msgstr "FüggÅ‘ségek:" #: editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "HIbásak KijavÃtása" #: editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "FüggÅ‘ség szerkesztÅ‘" +msgstr "FüggÅ‘ség SzerkesztÅ‘" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "Csere Forrás Keresése:" #: editor/dependency_editor.cpp editor/editor_file_dialog.cpp #: editor/editor_help.cpp editor/editor_node.cpp editor/filesystem_dock.cpp @@ -657,10 +629,13 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" +"Az eltávolÃtandó fájlokat szükségelik más források a működésükhöz.\n" +"EltávolÃtja Å‘ket ennek ellenére? (nem visszavonható)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Nem eltávolÃtható:\n" +#, fuzzy +msgid "Cannot remove:" +msgstr "Nem eltávolÃtható:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -668,39 +643,39 @@ msgstr "Hiba betöltéskor:" #: editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "A Scene-t nem sikerült betölteni a hiányzó függÅ‘ségek miatt:" +msgstr "A Jelenetet nem sikerült betölteni a hiányzó függÅ‘ségek miatt:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" -msgstr "Valahogy megnyit" +msgstr "Megnyitás Mindenképpen" #: editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "" +msgstr "Melyik lépést tegyük meg?" #: editor/dependency_editor.cpp msgid "Fix Dependencies" -msgstr "" +msgstr "FüggÅ‘ségek MegjavÃtása" #: editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "" +msgstr "Hibák a betöltés során!" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "Véglegesen törli a(z) %d eleme(ke)t? (Nem visszavonható!)" +msgstr "Véglegesen törlöl %d elemet? (Nem visszavonható!)" #: editor/dependency_editor.cpp msgid "Owns" -msgstr "" +msgstr "Birtokol" #: editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "" +msgstr "Források Explicit Tulajdonos Nélkül:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "Ãrva Forrás KezelÅ‘" #: editor/dependency_editor.cpp msgid "Delete selected files?" @@ -712,15 +687,15 @@ msgstr "Törli a kiválasztott fájlokat?" #: editor/project_export.cpp editor/project_settings_editor.cpp #: editor/scene_tree_dock.cpp msgid "Delete" -msgstr "Töröl" +msgstr "Törlés" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "Szótár kulcs módosÃtás" +msgstr "Szótár Kulcs MódosÃtása" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" -msgstr "Szótár érték módosÃtás" +msgstr "Szótár Érték MódosÃtása" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" @@ -736,59 +711,59 @@ msgstr "Godot Engine közreműködÅ‘k" #: editor/editor_about.cpp msgid "Project Founders" -msgstr "" +msgstr "Projekt AlapÃtói" #: editor/editor_about.cpp msgid "Lead Developer" -msgstr "" +msgstr "VezetÅ‘ FejlesztÅ‘" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Projekt Menedzser " #: editor/editor_about.cpp msgid "Developers" -msgstr "" +msgstr "FejlesztÅ‘k" #: editor/editor_about.cpp msgid "Authors" -msgstr "" +msgstr "SzerzÅ‘k" #: editor/editor_about.cpp msgid "Platinum Sponsors" -msgstr "" +msgstr "Platina Támogatók" #: editor/editor_about.cpp msgid "Gold Sponsors" -msgstr "" +msgstr "Arany Szponzorok" #: editor/editor_about.cpp msgid "Mini Sponsors" -msgstr "" +msgstr "Mini Szponzorok" #: editor/editor_about.cpp msgid "Gold Donors" -msgstr "" +msgstr "Arany Adományozók" #: editor/editor_about.cpp msgid "Silver Donors" -msgstr "" +msgstr "Ezüst Adományozók" #: editor/editor_about.cpp msgid "Bronze Donors" -msgstr "" +msgstr "Bronz Adományozók" #: editor/editor_about.cpp msgid "Donors" -msgstr "" +msgstr "Adományozók" #: editor/editor_about.cpp msgid "License" -msgstr "" +msgstr "Licenc" #: editor/editor_about.cpp msgid "Thirdparty License" -msgstr "" +msgstr "Harmadik Fél Engedély" #: editor/editor_about.cpp msgid "" @@ -804,53 +779,53 @@ msgstr "" #: editor/editor_about.cpp msgid "All Components" -msgstr "" +msgstr "Minden ÖsszetevÅ‘" #: editor/editor_about.cpp msgid "Components" -msgstr "" +msgstr "ÖsszetevÅ‘k" #: editor/editor_about.cpp msgid "Licenses" -msgstr "" +msgstr "Licencek" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Error opening package file, not in zip format." -msgstr "" +msgstr "Hiba a csomagfájl megnyitása során, nem zip formátumú." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" -msgstr "" +msgstr "Eszközök Kicsomagolása" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package Installed Successfully!" -msgstr "" +msgstr "A Csomag TelepÃtése Sikeresen Megtörtént!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Success!" -msgstr "" +msgstr "Siker!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" -msgstr "" +msgstr "TelepÃtés" #: editor/editor_asset_installer.cpp msgid "Package Installer" -msgstr "" +msgstr "CsomagtelepÃtÅ‘" #: editor/editor_audio_buses.cpp msgid "Speakers" -msgstr "" +msgstr "Hangszórók" #: editor/editor_audio_buses.cpp msgid "Add Effect" -msgstr "" +msgstr "Effektus Hozzáadása" #: editor/editor_audio_buses.cpp msgid "Rename Audio Bus" -msgstr "" +msgstr "Hangbusz Ãtnevezése" #: editor/editor_audio_buses.cpp #, fuzzy @@ -859,297 +834,298 @@ msgstr "Tömb értékének megváltoztatása" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" -msgstr "" +msgstr "Hangbusz Szóló Ki-/Bekapcsolása" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Mute" -msgstr "" +msgstr "Hangbusz NémÃtásának Ki-/Bekapcsolása" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Bypass Effects" -msgstr "" +msgstr "Hangbusz KItérés Effektus Ki-/Bekapcsolása" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" -msgstr "" +msgstr "Hangbusz Küldésének Kiválasztása" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" -msgstr "" +msgstr "Hangbusz Effektus Hozzáadása" #: editor/editor_audio_buses.cpp msgid "Move Bus Effect" -msgstr "" +msgstr "Busz Effektus Ãthelyezése" #: editor/editor_audio_buses.cpp msgid "Delete Bus Effect" -msgstr "" +msgstr "Busz Effektus Törlése" #: editor/editor_audio_buses.cpp msgid "Audio Bus, Drag and Drop to rearrange." -msgstr "" +msgstr "Hangbusz, Húzd és Vidd az átrendezéshez." #: editor/editor_audio_buses.cpp msgid "Solo" -msgstr "" +msgstr "Szóló" #: editor/editor_audio_buses.cpp msgid "Mute" -msgstr "" +msgstr "Néma" #: editor/editor_audio_buses.cpp msgid "Bypass" -msgstr "" +msgstr "Kitérés" #: editor/editor_audio_buses.cpp msgid "Bus options" -msgstr "" +msgstr "Busz beállÃtások" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Duplicate" -msgstr "" +msgstr "MegkettÅ‘zés" #: editor/editor_audio_buses.cpp msgid "Reset Volume" -msgstr "" +msgstr "HangerÅ‘ VisszállÃtása" #: editor/editor_audio_buses.cpp msgid "Delete Effect" -msgstr "" +msgstr "Effektus Törlése" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Hang" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" -msgstr "" +msgstr "Hangbusz Hozzáadása" #: editor/editor_audio_buses.cpp msgid "Master bus can't be deleted!" -msgstr "" +msgstr "A fÅ‘buszt nem lehet kitörölni!" #: editor/editor_audio_buses.cpp msgid "Delete Audio Bus" -msgstr "" +msgstr "Hangbusz Törlése" #: editor/editor_audio_buses.cpp msgid "Duplicate Audio Bus" -msgstr "" +msgstr "Hangbusz MegkettÅ‘zése" #: editor/editor_audio_buses.cpp msgid "Reset Bus Volume" -msgstr "" +msgstr "Busz HangerÅ‘ VisszaállÃtása" #: editor/editor_audio_buses.cpp msgid "Move Audio Bus" -msgstr "" +msgstr "Hangbusz Ãthelyezése" #: editor/editor_audio_buses.cpp msgid "Save Audio Bus Layout As.." -msgstr "" +msgstr "Hangbusz Elrendezés Mentése Másként.." #: editor/editor_audio_buses.cpp msgid "Location for New Layout.." -msgstr "" +msgstr "Új Elrendezés Helye.." #: editor/editor_audio_buses.cpp msgid "Open Audio Bus Layout" -msgstr "" +msgstr "Hangbusz Elrendezés Megnyitása" #: editor/editor_audio_buses.cpp msgid "There is no 'res://default_bus_layout.tres' file." -msgstr "" +msgstr "Nincs 'res://default_bus_layout.tres' fájl." #: editor/editor_audio_buses.cpp msgid "Invalid file, not an audio bus layout." -msgstr "" +msgstr "Érvénytelen fájl, nem egy hangbusz elrendezés." #: editor/editor_audio_buses.cpp msgid "Add Bus" -msgstr "" +msgstr "Busz Hozzáadása" #: editor/editor_audio_buses.cpp msgid "Create a new Bus Layout." -msgstr "" +msgstr "Új Buszelrendezés létrehozása." #: editor/editor_audio_buses.cpp editor/property_editor.cpp #: editor/script_create_dialog.cpp msgid "Load" -msgstr "" +msgstr "Betöltés" #: editor/editor_audio_buses.cpp msgid "Load an existing Bus Layout." -msgstr "" +msgstr "MeglévÅ‘ Busz Elrendezés betöltése." #: editor/editor_audio_buses.cpp #: editor/plugins/animation_player_editor_plugin.cpp msgid "Save As" -msgstr "" +msgstr "Mentés Másként" #: editor/editor_audio_buses.cpp msgid "Save this Bus Layout to a file." -msgstr "" +msgstr "Jelenlegi Busz Elrendezés mentése fájlba." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" -msgstr "" +msgstr "Alapértelmezett Betöltése" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "" +msgstr "Betölti az alapértelmezett Busz Elrendezést." #: editor/editor_autoload_settings.cpp msgid "Invalid name." -msgstr "" +msgstr "Érvénytelen név." #: editor/editor_autoload_settings.cpp msgid "Valid characters:" -msgstr "" +msgstr "Érvényes karakterek:" #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing engine class name." -msgstr "" +msgstr "Érvénytelen név. Nem ütközhet egy már meglévÅ‘ motor osztálynévvel." #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." -msgstr "" +msgstr "Érvénytelen név. Nem ütközhet egy már meglévÅ‘ beépÃtett tÃpusnévvel." #: editor/editor_autoload_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" +"Érvénytelen név. Nem ütközhet egy már meglévÅ‘ globális konstans névvel." #: editor/editor_autoload_settings.cpp msgid "Invalid Path." -msgstr "" +msgstr "Érvénytelen Elérési Út." #: editor/editor_autoload_settings.cpp msgid "File does not exist." -msgstr "" +msgstr "A fájl nem létezik." #: editor/editor_autoload_settings.cpp msgid "Not in resource path." -msgstr "" +msgstr "Nincs az erÅ‘forrás elérési útban." #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "" +msgstr "AutoLoad Hozzáadása" #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "" +msgstr "Már létezik '%s' AutoLoad!" #: editor/editor_autoload_settings.cpp msgid "Rename Autoload" -msgstr "" +msgstr "AutoLoad Ãtnevezése" #: editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "" +msgstr "AutoLoad Globálisok Kapcsolása" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" -msgstr "" +msgstr "AutoLoad Ãthelyezése" #: editor/editor_autoload_settings.cpp msgid "Remove Autoload" -msgstr "" +msgstr "AutoLoad EltávolÃtása" #: editor/editor_autoload_settings.cpp msgid "Enable" -msgstr "" +msgstr "Engedélyezés" #: editor/editor_autoload_settings.cpp msgid "Rearrange Autoloads" -msgstr "" +msgstr "AutoLoad-ok Ãtrendezése" #: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp #: scene/gui/file_dialog.cpp msgid "Path:" -msgstr "" +msgstr "Útvonal:" #: editor/editor_autoload_settings.cpp msgid "Node Name:" -msgstr "" +msgstr "Node Neve:" #: editor/editor_autoload_settings.cpp editor/editor_profiler.cpp #: editor/project_manager.cpp editor/settings_config_dialog.cpp msgid "Name" -msgstr "" +msgstr "Név" #: editor/editor_autoload_settings.cpp msgid "Singleton" -msgstr "" +msgstr "Egyke" #: editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Jelenet FrissÃtése" #: editor/editor_data.cpp msgid "Storing local changes.." -msgstr "" +msgstr "Helyi módosÃtások eltárolása.." #: editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "Jelenet frissÃtése.." #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[üres]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[nincs mentve]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" -msgstr "" +msgstr "Válasszon egy alap könyvtárat elÅ‘ször" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" -msgstr "" +msgstr "Válasszon egy Könyvtárat" #: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp msgid "Create Folder" -msgstr "" +msgstr "Mappa Létrehozása" #: 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 #: scene/gui/file_dialog.cpp msgid "Name:" -msgstr "" +msgstr "Név:" #: 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 "Nem sikerült létrehozni a mappát." #: editor/editor_dir_dialog.cpp msgid "Choose" -msgstr "" +msgstr "Kiválaszt" #: editor/editor_export.cpp msgid "Storing File:" -msgstr "" +msgstr "Tároló Fájl:" #: editor/editor_export.cpp msgid "Packing" -msgstr "" +msgstr "Csomagolás" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "" +msgid "Template file not found:" +msgstr "Sablon fájl nem található:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" -msgstr "" +msgstr "Fájl Létezik, FelülÃrja?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Select Current Folder" -msgstr "" +msgstr "Aktuális Mappa Kiválasztása" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" @@ -1157,344 +1133,375 @@ msgstr "Útvonal másolása" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Show In File Manager" -msgstr "" +msgstr "Mutat FájlkezelÅ‘ben" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "New Folder.." -msgstr "" +msgstr "Új Mappa.." #: editor/editor_file_dialog.cpp msgid "Refresh" -msgstr "" +msgstr "FrissÃtés" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Recognized" -msgstr "" +msgstr "Minden Felismert" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "All Files (*)" -msgstr "" +msgstr "Minden Fájl (*)" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "" +msgstr "Fálj Megnyitása" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "" +msgstr "Fájl(ok) Megnyitása" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a Directory" -msgstr "" +msgstr "Könyvtár Megnyitása" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a File or Directory" -msgstr "" +msgstr "Fájl vagy Könyvtár Megnyitása" #: editor/editor_file_dialog.cpp editor/editor_node.cpp #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp msgid "Save" -msgstr "" +msgstr "Mentés" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Save a File" -msgstr "" +msgstr "Fájl Mentése" #: editor/editor_file_dialog.cpp msgid "Go Back" -msgstr "" +msgstr "Ugrás Vissza" #: editor/editor_file_dialog.cpp msgid "Go Forward" -msgstr "" +msgstr "Ugrás ElÅ‘re" #: editor/editor_file_dialog.cpp msgid "Go Up" -msgstr "" +msgstr "Ugrás Fel" #: editor/editor_file_dialog.cpp msgid "Toggle Hidden Files" -msgstr "" +msgstr "Rejtett Fájlok MegjelenÃtése" #: editor/editor_file_dialog.cpp msgid "Toggle Favorite" -msgstr "" +msgstr "Kedvenc Kapcsolása" #: editor/editor_file_dialog.cpp msgid "Toggle Mode" -msgstr "" +msgstr "Mód Váltása" #: editor/editor_file_dialog.cpp msgid "Focus Path" -msgstr "" +msgstr "Elérési Út Fókuszálása" #: editor/editor_file_dialog.cpp msgid "Move Favorite Up" -msgstr "" +msgstr "Kedvenc Felfelé Mozgatása" #: editor/editor_file_dialog.cpp msgid "Move Favorite Down" -msgstr "" +msgstr "Kedvenc Lefelé Mozgatása" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Go to parent folder" -msgstr "" +msgstr "Ugrás a szülÅ‘mappába" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Directories & Files:" -msgstr "" +msgstr "Könyvtárak és Fájlok:" #: editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "" +msgstr "ElÅ‘nézet:" #: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp #: scene/gui/file_dialog.cpp msgid "File:" -msgstr "" +msgstr "Fájl:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Must use a valid extension." -msgstr "" +msgstr "Használjon érvényes kiterjesztést." #: editor/editor_file_system.cpp msgid "ScanSources" -msgstr "" +msgstr "Források Vizsgálata" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" -msgstr "" +msgstr "Eszközök (Újra) Betöltése" #: editor/editor_help.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp msgid "Search Help" -msgstr "" +msgstr "Keresés Súgóban" #: editor/editor_help.cpp msgid "Class List:" -msgstr "" +msgstr "Osztálylista:" #: editor/editor_help.cpp msgid "Search Classes" -msgstr "" +msgstr "Osztályok Keresése" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" -msgstr "" +msgstr "Eleje" #: editor/editor_help.cpp editor/property_editor.cpp msgid "Class:" -msgstr "" +msgstr "Osztály:" #: editor/editor_help.cpp editor/scene_tree_editor.cpp msgid "Inherits:" -msgstr "" +msgstr "Örököl:" #: editor/editor_help.cpp msgid "Inherited by:" -msgstr "" +msgstr "Åt örökli:" #: editor/editor_help.cpp msgid "Brief Description:" -msgstr "" +msgstr "Rövid LeÃrás:" #: editor/editor_help.cpp msgid "Members" -msgstr "" +msgstr "Tagok" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Members:" -msgstr "" +msgstr "Tagok:" #: editor/editor_help.cpp msgid "Public Methods" -msgstr "" +msgstr "Publikus Metódusok" #: editor/editor_help.cpp msgid "Public Methods:" -msgstr "" +msgstr "Publikus Metódusok:" #: editor/editor_help.cpp msgid "GUI Theme Items" -msgstr "" +msgstr "GUI Téma Elemek" #: editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "" +msgstr "GUI Téma Elemek:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" -msgstr "" +msgstr "Jelzések:" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "" +msgstr "Felsorolások" #: editor/editor_help.cpp msgid "Enumerations:" -msgstr "" +msgstr "Felsorolások:" #: editor/editor_help.cpp msgid "enum " -msgstr "" +msgstr "enum " #: editor/editor_help.cpp msgid "Constants" -msgstr "" +msgstr "Konstansok" #: editor/editor_help.cpp msgid "Constants:" -msgstr "" +msgstr "Konstansok:" #: editor/editor_help.cpp msgid "Description" +msgstr "LeÃrás" + +#: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Online Dokumentáció" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Ennek a metódusnak jelenleg nincs leÃrása. SegÃtsen minket azzal, hogy " +"[color=$color][url=$url]hozzájárul eggyel[/url][/color]!" #: editor/editor_help.cpp msgid "Properties" -msgstr "" +msgstr "Tulajdonságok" #: editor/editor_help.cpp msgid "Property Description:" -msgstr "" +msgstr "Tulajdonság LeÃrása:" #: 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 "" +"Ennek a tulajdonságnak jelenleg nincs leÃrása. SegÃtsen minket azzal, hogy " +"[color=$color][url=$url]hozzájárul eggyel[/url][/color]!" #: editor/editor_help.cpp msgid "Methods" -msgstr "" +msgstr "Metódusok" #: editor/editor_help.cpp msgid "Method Description:" -msgstr "" +msgstr "Metódus LeÃrás:" #: 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 "" +"Ennek a metódusnak jelenleg nincs leÃrása. SegÃtsen minket azzal, hogy " +"[color=$color][url=$url]hozzájárul eggyel[/url][/color]!" #: editor/editor_help.cpp msgid "Search Text" -msgstr "" +msgstr "Keresés a Szövegben" + +#: editor/editor_help.cpp +msgid "Find" +msgstr "Keres" #: editor/editor_log.cpp msgid "Output:" -msgstr "" +msgstr "Kimenet:" #: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp #: editor/property_editor.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 "" +msgstr "Töröl" + +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Kimenet Törlése" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" -msgstr "" +msgstr "Hiba történt az erÅ‘forrás mentésekor!" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As.." -msgstr "" +msgstr "ErÅ‘forrás Mentése Másként.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." -msgstr "" +msgstr "Értem.." #: editor/editor_node.cpp msgid "Can't open file for writing:" -msgstr "" +msgstr "Nem lehet megnyitni a fájlt Ãrásra:" #: editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "" +msgstr "Kért fájl formátum ismeretlen:" #: editor/editor_node.cpp msgid "Error while saving." -msgstr "" +msgstr "Hiba történt mentés közben." #: editor/editor_node.cpp msgid "Can't open '%s'." -msgstr "" +msgstr "'%s' nem nyitható meg." #: editor/editor_node.cpp msgid "Error while parsing '%s'." -msgstr "" +msgstr "Hiba történt '%s' feldolgozása közben." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "" +msgstr "Váratlan fájlvége '%s'." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." -msgstr "" +msgstr "Nem található '%s' vagy annak függÅ‘ségei." #: editor/editor_node.cpp msgid "Error while loading '%s'." -msgstr "" +msgstr "Hiba történt '%s' betöltése közben." #: editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "Jelenet Mentése" #: editor/editor_node.cpp msgid "Analyzing" -msgstr "" +msgstr "Elemzés" #: editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "" +msgstr "Indexkép Létrehozása" #: editor/editor_node.cpp msgid "This operation can't be done without a tree root." -msgstr "" +msgstr "Ezt a műveletet nem lehet fagyökér nélkül végrehajtani." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" +"Nem sikerült a jelenet mentése. ValószÃnű, hogy a függÅ‘ségei (példányok vagy " +"öröklések) nem voltak kielégÃthetÅ‘k." #: editor/editor_node.cpp msgid "Failed to load resource." -msgstr "" +msgstr "Nem sikerült betölteni az erÅ‘forrást." #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "" +msgstr "Nem lehet betölteni a MeshLibrary-t összeolvasztásra!" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "" +msgstr "Hiba MeshLibrary mentésekor!" #: editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "" +msgstr "Nem lehet betölteni a TileSet-et összeolvasztásra!" #: editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "" +msgstr "Hiba TileSet mentésekor!" #: editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "" +msgstr "Hiba történt az elrendezés mentésekor!" #: editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "" +msgstr "Alapértelmezett szerkesztÅ‘ elrendezés felülÃrva." #: editor/editor_node.cpp msgid "Layout name not found!" -msgstr "" +msgstr "Elrendezés neve nem található!" #: editor/editor_node.cpp msgid "Restored default layout to base settings." msgstr "" +"Az alapértelmezett elrendezés vissza lett állÃtva az alap beállÃtásokra." #: editor/editor_node.cpp msgid "" @@ -1502,18 +1509,28 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" +"Ez az erÅ‘forrás egy olyan jelenethez tartozik, ami be lett importálva, Ãgy " +"nem szerkeszthetÅ‘.\n" +"Olvassa el a jelenetek importálásáról szóló megfelelÅ‘ dokumentációt, hogy " +"jobban megértse ezt a munkafolyamatot." #: editor/editor_node.cpp msgid "" "This resource belongs to a scene that was instanced or inherited.\n" "Changes to it will not be kept when saving the current scene." msgstr "" +"Ez az erÅ‘forrás egy olyan jelenethez tartozik, amit példányosÃtottak, vagy " +"amit örökölt a jelenet.\n" +"A rajta végzett módosÃtások nem lesznek megtartva a jelenlegi jelenet " +"elmentésekor." #: 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 "" +"Ez azt erÅ‘forrást importálta, Ãgy ez nem szerkeszthetÅ‘. MódosÃtsa a " +"beállÃtásait az import panelen, és importálja újból." #: editor/editor_node.cpp msgid "" @@ -1522,6 +1539,11 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" +"Ezt a jelenetet importálta, Ãgy a rajta végzett módosÃtások nem lesznek " +"megtartva.\n" +"Változtatásokat végezhet rajta, ha példányosÃtja, vagy leszármaztatja.\n" +"Olvassa el a jelenetek importálásáról szóló megfelelÅ‘ dokumentációt, hogy " +"jobban megértse ezt a munkafolyamatot." #: editor/editor_node.cpp msgid "" @@ -1529,14 +1551,18 @@ msgid "" "Please read the documentation relevant to debugging to better understand " "this workflow." msgstr "" +"Ez egy távoli objektum, Ãgy a rajta végzett módosÃtások nem lesznek " +"megtartva.\n" +"Olvassa el a hibakezelésrÅ‘l szóló megfelelÅ‘ dokumentációt, hogy jobban " +"megértse ezt a munkafolyamatot." #: editor/editor_node.cpp msgid "Expand all properties" -msgstr "" +msgstr "Összes tulajdonság kibontása" #: editor/editor_node.cpp msgid "Collapse all properties" -msgstr "" +msgstr "Összes tulajdonság összecsukása" #: editor/editor_node.cpp msgid "Copy Params" @@ -1544,11 +1570,11 @@ msgstr "Paraméterek másolása" #: editor/editor_node.cpp msgid "Paste Params" -msgstr "" +msgstr "Paraméterek Beillesztése" #: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "" +msgstr "ErÅ‘forrás Beillesztése" #: editor/editor_node.cpp msgid "Copy Resource" @@ -1556,19 +1582,19 @@ msgstr "Forrás másolása" #: editor/editor_node.cpp msgid "Make Built-In" -msgstr "" +msgstr "Integrálás" #: editor/editor_node.cpp msgid "Make Sub-Resources Unique" -msgstr "" +msgstr "Tegye Az Al-ErÅ‘forrásokat Egyedivé" #: editor/editor_node.cpp msgid "Open in Help" -msgstr "" +msgstr "Megnyitás Súgóban" #: editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "Nincs meghatározva jelenet a futtatáshoz." #: editor/editor_node.cpp msgid "" @@ -1576,6 +1602,9 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" +"Nincs meghatározva fÅ‘jelenet, kiválaszt most egyet?\n" +"Ezt megváltoztathatja késÅ‘bb a \"Projekt BeállÃtásokban\" az \"Alkalmazás\" " +"kategóriában." #: editor/editor_node.cpp msgid "" @@ -1583,6 +1612,10 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" +"A kiválasztott '%s' jelenet nem létezik, kiválaszt most egy érvényes " +"jelenetet?\n" +"Ezt megváltoztathatja késÅ‘bb a \"Projekt BeállÃtásokban\" az \"Alkalmazás\" " +"kategóriában." #: editor/editor_node.cpp msgid "" @@ -1590,343 +1623,369 @@ msgid "" "You can change it later in \"Project Settings\" under the 'application' " "category." msgstr "" +"A kiválasztott '%s' jelenet nem egy jelenetfájl, kiválaszt most egy érvényes " +"jelenetet?\n" +"Ezt megváltoztathatja késÅ‘bb a \"Projekt BeállÃtásokban\" az \"Alkalmazás\" " +"kategóriában." #: editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." msgstr "" +"A jelenlegi jelenet soha nem volt még mentve, mentse el a futtatás elÅ‘tt." #: editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "" +msgstr "Az alprocesszt nem lehetett elindÃtani!" #: editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "Jelenet Megnyitása" #: editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "Alap Jelenet Megnyitása" #: editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "" +msgstr "Jelenet Gyors Megnyitása.." #: editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "" +msgstr "Script Gyors Megnyitása.." #: editor/editor_node.cpp msgid "Save & Close" -msgstr "" +msgstr "Mentés és Bezárás" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "" +msgstr "Bezárás elÅ‘tt menti a '%s'-n végzett módosÃtásokat?" #: editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "Jelenet Mentése Másként.." #: editor/editor_node.cpp msgid "No" -msgstr "" +msgstr "Nem" #: editor/editor_node.cpp msgid "Yes" -msgstr "" +msgstr "Igen" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "" +msgstr "Ez a jelenet soha nem volt mentve. Menti futtatás elÅ‘tt?" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "" +msgstr "Ezt a műveletet nem lehet végrehajtani jelenet nélkül." #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "Mesh Könyvtár Exportálása" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "" +msgstr "Ezt a műveletet nem lehet végrehajtani gyökér node nélkül." #: editor/editor_node.cpp msgid "Export Tile Set" -msgstr "" +msgstr "Tile Set Exportálása" #: editor/editor_node.cpp msgid "This operation can't be done without a selected node." -msgstr "" +msgstr "Ezt a műveletet nem lehet végrehajtani egy kiválaszott node nélkül." #: editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "" +msgstr "Még nem mentette az aktuális jelenetet. Megnyitja mindenképp?" #: editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "" +msgstr "Nem lehet újratölteni egy olyan jelenetet, amit soha nem mentett el." #: editor/editor_node.cpp msgid "Revert" -msgstr "" +msgstr "VisszaállÃtás" #: editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" -msgstr "" +msgstr "Ez a művelet nem vonható vissza. VisszaállÃtja mindenképp?" #: editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "" +msgstr "Jelenet Gyors Futtatása.." #: editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "Kilépés" #: editor/editor_node.cpp msgid "Exit the editor?" -msgstr "" +msgstr "Kilépés a szerkesztÅ‘bÅ‘l?" #: editor/editor_node.cpp msgid "Open Project Manager?" -msgstr "" +msgstr "Megnyitja a ProjektkezelÅ‘t?" #: editor/editor_node.cpp msgid "Save & Quit" -msgstr "" +msgstr "Mentés és Kilépés" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" msgstr "" +"Elmenti a következÅ‘ jelenet(ek)en végzett változtatásokat kilépés elÅ‘tt?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" msgstr "" +"Elmenti a következÅ‘ jelenet(ek)en végzett változtatásokat a ProjektkezelÅ‘ " +"megnyitása elÅ‘tt?" #: editor/editor_node.cpp msgid "" "This option is deprecated. Situations where refresh must be forced are now " "considered a bug. Please report." msgstr "" +"Ez a lehetÅ‘ség elavult. Az olyan helyzeteket, ahol ki kell kényszerÃteni egy " +"frissÃtést, már hibának vesszük. Kérjük, jelentse a helyzetet." #: editor/editor_node.cpp msgid "Pick a Main Scene" -msgstr "" +msgstr "Válasszon egy FÅ‘ Jelenetet" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." msgstr "" +"Nem sikerült az addon plugin engedélyezése itt: '%s' a konfiguráció elemzése " +"megbukott." #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." msgstr "" +"Nem található script mezÅ‘ az addon pluginnak a következÅ‘ helyen: 'res://" +"addons/%s'." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "" +msgstr "Nem sikerült az addon script betöltése a következÅ‘ útvonalról: '%s'." #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." msgstr "" +"Nem sikerült az addon script betöltése a következÅ‘ útvonalról: '%s' Az " +"alaptÃpus nem EditorPlugin." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." msgstr "" +"Nem sikerült az addon script betöltése a következÅ‘ útvonalról: '%s' A script " +"nem eszközmódban van." #: 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 "" +"A(z) '%s' jelenet automatikusan be lett importálva, ezért nem módosÃtható.\n" +"Ahhoz, hogy változtatásokat végezhessen rajta, egy új, azt öröklÅ‘ jelenetet " +"hozhat létre." #: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Ugh" -msgstr "" +msgstr "Hoppá" #: 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 "" +"Hiba történt a jelenet betöltésekor, benne kell, hogy legyen a projekt " +"útvonalában. Használja az 'import' lehetÅ‘séget a jelenet megnyitására, majd " +"mentse el a projekt útvonalán belülre." #: editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "" +msgstr "A(z) '%s' jelenetnek tört függÅ‘ségei vannak:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" -msgstr "" +msgstr "Legutóbbi Jelenetek Törlése" #: editor/editor_node.cpp msgid "Save Layout" -msgstr "" +msgstr "Elrendezés Mentése" #: editor/editor_node.cpp msgid "Delete Layout" -msgstr "" +msgstr "Elrendezés Törlése" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp msgid "Default" -msgstr "" +msgstr "Alapértelmezett" #: editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "" +msgstr "Jelenet Fül Váltása" #: editor/editor_node.cpp msgid "%d more files or folders" -msgstr "" +msgstr "%d további fájl vagy mappa" #: editor/editor_node.cpp msgid "%d more folders" -msgstr "" +msgstr "%d további mappa" #: editor/editor_node.cpp msgid "%d more files" -msgstr "" +msgstr "%d további fájl" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "" +msgstr "Dokk PozÃció" #: editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "" +msgstr "Zavarmentes Mód" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." -msgstr "" +msgstr "Zavarmentes mód váltása." #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "" +msgstr "Hozzáad egy új jelenetet." #: editor/editor_node.cpp msgid "Scene" -msgstr "" +msgstr "Jelenet" #: editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "" +msgstr "Ugrás az elÅ‘zÅ‘leg megnyitott jelenetre." #: editor/editor_node.cpp msgid "Next tab" -msgstr "" +msgstr "KövetkezÅ‘ fül" #: editor/editor_node.cpp msgid "Previous tab" -msgstr "" +msgstr "ElÅ‘zÅ‘ fül" #: editor/editor_node.cpp msgid "Filter Files.." -msgstr "" +msgstr "Fájlok Szűrése.." #: editor/editor_node.cpp msgid "Operations with scene files." -msgstr "" +msgstr "Műveletek a jelenet fájlokkal." #: editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Új Jelenet" #: editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "" +msgstr "Új Örökölt Jelenet.." #: editor/editor_node.cpp msgid "Open Scene.." -msgstr "" +msgstr "Jelenet Megnyitása.." #: editor/editor_node.cpp msgid "Save Scene" -msgstr "" +msgstr "Jelenet Mentése" #: editor/editor_node.cpp msgid "Save all Scenes" -msgstr "" +msgstr "Minden Jelenet Mentése" #: editor/editor_node.cpp msgid "Close Scene" -msgstr "" +msgstr "Jelenet Bezárása" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Open Recent" -msgstr "" +msgstr "Legutóbbi Megnyitása" #: editor/editor_node.cpp msgid "Convert To.." -msgstr "" +msgstr "Ãtkonvertálás.." #: editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "" +msgstr "MeshLibrary-ra.." #: editor/editor_node.cpp msgid "TileSet.." -msgstr "" +msgstr "TileSet-re.." #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Undo" -msgstr "" +msgstr "Visszavonás" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp msgid "Redo" -msgstr "" +msgstr "Mégis" #: editor/editor_node.cpp msgid "Revert Scene" -msgstr "" +msgstr "Jelenet VisszaállÃtása" #: editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "" +msgstr "Egyéb projekt- vagy jelenet-szintű eszközök." #: editor/editor_node.cpp msgid "Project" -msgstr "" +msgstr "Projekt" #: editor/editor_node.cpp msgid "Project Settings" -msgstr "" +msgstr "Projekt BeállÃtások" #: editor/editor_node.cpp msgid "Run Script" -msgstr "" +msgstr "Script Futtatása" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export" -msgstr "" +msgstr "Exportálás" #: editor/editor_node.cpp msgid "Tools" -msgstr "" +msgstr "Eszközök" #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "" +msgstr "Kilépés a Projektlistába" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Debug" -msgstr "" +msgstr "Hibakeresés" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "" +msgstr "IndÃtás Távoli Teszteléssel" #: 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 "" +"Exportáláskor vagy telepÃtéskor az Ãgy kapott futtatható program megpróbál " +"ennek a számÃtógépnek az IP-jéhez csatlakozni távoli hibakeresés érdekében." #: editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "Kis TelepÃtés Hálózati FR-rel" #: editor/editor_node.cpp msgid "" @@ -1937,30 +1996,40 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" +"Ha ez az opció engedélyezve van, akkor az exportálás vagy a telepÃtés egy " +"minimális méretű futtatható programot hoz létre.\n" +"A fájlrendszert magát a projektbÅ‘l a szerkesztÅ‘ szolgáltatja majd a " +"hálózaton keresztül.\n" +"Androidon a telepÃtés gyorsabb teljesÃtmény érdekében kihasználja az USB " +"kábelt. Ez a lehetÅ‘ség felgyorsÃtja a nagy lábnyomú játékok tesztelését." #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "" +msgstr "Látható Ütközési Alakzatok" #: 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 "" +"Az ütközési alakzatok és a fénysugárkövetÅ‘ node-ok (mind 2D-hez és 3D-hez) " +"láthatóak lesznek a játék futásakor, ha ez az opció be van kapcsolva." #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "" +msgstr "Látható Navigáció" #: editor/editor_node.cpp msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" +"A navigációs hálók és sokszögek láthatóak lesznek a játék futásakor, ha ez " +"az opció be van kapcsolva." #: editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Jelenet Változtatások Szinkronizálása" #: editor/editor_node.cpp msgid "" @@ -1969,10 +2038,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Ha ez a beállÃtás be van kapcsolva, bármilyen változtatás a jeleneten a " +"szerkesztÅ‘ben le lesz másolva a futó játékba.\n" +"Ha egy távoli eszközön használja, sokkal hatékonyabb a hálózati " +"fájlrendszerrel együtt." #: editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "" +msgstr "Script Változtatások Szinkronizálása" #: editor/editor_node.cpp msgid "" @@ -1981,231 +2054,242 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Ha ez a beállÃtás be van kapcsolva, bármilyen script, amit elment, újra " +"betöltÅ‘dik a futó játékba.\n" +"Ha egy távoli eszközön használja, sokkal hatékonyabb a hálózati " +"fájlrendszerrel együtt." #: editor/editor_node.cpp msgid "Editor" -msgstr "" +msgstr "SzerkesztÅ‘" #: editor/editor_node.cpp editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "" +msgstr "SzerkesztÅ‘ BeállÃtások" #: editor/editor_node.cpp msgid "Editor Layout" -msgstr "" +msgstr "SzerkesztÅ‘ Elrendezés" #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "" +msgstr "Teljes KépernyÅ‘" #: editor/editor_node.cpp editor/project_export.cpp msgid "Manage Export Templates" -msgstr "" +msgstr "Export Sablonok Kezelése" #: editor/editor_node.cpp msgid "Help" -msgstr "" +msgstr "Súgó" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Classes" -msgstr "" +msgstr "Osztályok" + +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Keresés" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" -msgstr "" +msgstr "Online Dokumentáció" #: editor/editor_node.cpp msgid "Q&A" -msgstr "" +msgstr "Kérdések és Válaszok" #: editor/editor_node.cpp msgid "Issue Tracker" -msgstr "" +msgstr "ProblémakövetÅ‘" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Közösség" #: editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "Névjegy" #: editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "Projekt futtatása." #: editor/editor_node.cpp msgid "Play" -msgstr "" +msgstr "Játék" #: editor/editor_node.cpp msgid "Pause the scene" -msgstr "" +msgstr "Szünetelteti a jelenetet" #: editor/editor_node.cpp msgid "Pause Scene" -msgstr "" +msgstr "Jelenet Szüneteltetése" #: editor/editor_node.cpp msgid "Stop the scene." -msgstr "" +msgstr "LeállÃtja a jelenetet." #: editor/editor_node.cpp msgid "Stop" -msgstr "" +msgstr "LeállÃtás" #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "" +msgstr "Szerkesztett jelenet futtatása." #: editor/editor_node.cpp msgid "Play Scene" -msgstr "" +msgstr "Jelenet Futtatása" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "" +msgstr "TetszÅ‘leges jelenet futtatása" #: editor/editor_node.cpp msgid "Play Custom Scene" -msgstr "" +msgstr "TetszÅ‘leges Jelenet Futtatása" #: editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "" +msgstr "Fordul egyet, amikor a szerkesztÅ‘ablak újrarajzolódik!" #: editor/editor_node.cpp msgid "Update Always" -msgstr "" +msgstr "FrissÃtés Mindig" #: editor/editor_node.cpp msgid "Update Changes" -msgstr "" +msgstr "Változások FrissÃtése" #: editor/editor_node.cpp msgid "Disable Update Spinner" -msgstr "" +msgstr "FrissÃtési Forgó Kikapcsolása" #: editor/editor_node.cpp msgid "Inspector" -msgstr "" +msgstr "MegfigyelÅ‘" #: editor/editor_node.cpp msgid "Create a new resource in memory and edit it." -msgstr "" +msgstr "Új erÅ‘forrás létrehozása a memóriában, majd annak szerkesztése." #: editor/editor_node.cpp msgid "Load an existing resource from disk and edit it." -msgstr "" +msgstr "MeglévÅ‘ erÅ‘forrás betöltése a lemezrÅ‘l, majd annak szerkesztése." #: editor/editor_node.cpp msgid "Save the currently edited resource." -msgstr "" +msgstr "A jelenleg szerkesztett erÅ‘forrás elmentése." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "" +msgstr "Mentés Másként.." #: editor/editor_node.cpp msgid "Go to the previous edited object in history." -msgstr "" +msgstr "Ugrás az elÅ‘zÅ‘leg módosÃtott objektumra a történelemben." #: editor/editor_node.cpp msgid "Go to the next edited object in history." -msgstr "" +msgstr "Ugrás a következÅ‘ módosÃtott objektumra a történelemben." #: editor/editor_node.cpp msgid "History of recently edited objects." -msgstr "" +msgstr "A nemrég módosÃtott objektumok történelme." #: editor/editor_node.cpp msgid "Object properties." -msgstr "" +msgstr "Objektumtulajdonságok." #: editor/editor_node.cpp msgid "Changes may be lost!" -msgstr "" +msgstr "Néhány változtatás elveszhet!" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "Importálás" #: editor/editor_node.cpp msgid "Node" -msgstr "" +msgstr "Node" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "Fájlrendszer" #: editor/editor_node.cpp msgid "Output" -msgstr "" +msgstr "Kimenet" #: editor/editor_node.cpp msgid "Don't Save" -msgstr "" +msgstr "Nincs Mentés" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +msgstr "Sablonok Importálása ZIP Fájlból" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" -msgstr "" +msgstr "Projekt Exportálása" #: editor/editor_node.cpp msgid "Export Library" -msgstr "" +msgstr "Könyvtár Exportálása" #: editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "EgyesÃtés MeglévÅ‘vel" #: editor/editor_node.cpp msgid "Password:" -msgstr "" +msgstr "Jelszó:" #: editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "" +msgstr "Megnyit és Scriptet Futtat" #: editor/editor_node.cpp msgid "New Inherited" -msgstr "" +msgstr "Új Örökölt" #: editor/editor_node.cpp msgid "Load Errors" -msgstr "" +msgstr "Betöltési Hibák" #: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp msgid "Select" -msgstr "" +msgstr "Kiválaszt" #: editor/editor_node.cpp msgid "Open 2D Editor" -msgstr "" +msgstr "2D SzerkesztÅ‘ Megnyitása" #: editor/editor_node.cpp msgid "Open 3D Editor" -msgstr "" +msgstr "3D SzerkesztÅ‘ Megnyitása" #: editor/editor_node.cpp msgid "Open Script Editor" -msgstr "" +msgstr "Script SzerkesztÅ‘ Megnyitása" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" -msgstr "" +msgstr "Eszköz Könyvtár Megnyitása" #: editor/editor_node.cpp msgid "Open the next Editor" -msgstr "" +msgstr "KövetkezÅ‘ SzerkesztÅ‘ Megnyitása" #: editor/editor_node.cpp msgid "Open the previous Editor" -msgstr "" +msgstr "ElÅ‘zÅ‘ SzerkesztÅ‘ Megnyitása" #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" @@ -2389,7 +2473,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2544,9 +2628,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2554,21 +2636,23 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "Hiba betöltéskor:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Hiba betöltéskor:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "" +#, fuzzy +msgid "Unable to update dependencies:" +msgstr "A Scene-t nem sikerült betölteni a hiányzó függÅ‘ségek miatt:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -3206,6 +3290,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animáció másolása" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3371,6 +3460,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3671,19 +3761,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4054,7 +4147,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4443,14 +4536,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4527,6 +4622,10 @@ msgid "Copy Script Path" msgstr "Útvonal másolása" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4958,83 +5057,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5049,6 +5148,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5122,15 +5225,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5405,10 +5504,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5434,14 +5541,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5579,6 +5689,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5679,6 +5793,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Mégse" @@ -5786,9 +5924,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5800,6 +5936,14 @@ msgid "Imported Project" 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 "" @@ -5840,14 +5984,27 @@ 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 +#, fuzzy +msgid "Create & Edit" +msgstr "Létrehozás" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5864,10 +6021,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5913,6 +6066,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6039,11 +6196,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6421,10 +6573,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6509,8 +6657,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "Forrás másolása" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6800,7 +6949,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6809,6 +6958,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Póz másolása" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7155,10 +7309,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7504,23 +7698,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7535,6 +7733,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7603,7 +7808,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7662,6 +7867,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7707,8 +7919,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7773,8 +7985,8 @@ msgstr "(Más)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7806,5 +8018,27 @@ msgstr "Hiba a betűtÃpus betöltésekor." msgid "Invalid font size." msgstr "Érvénytelen betűtÃpus méret." +#~ msgid "Next" +#~ msgstr "KövetkezÅ‘" + +#~ msgid "Not found!" +#~ msgstr "Nincs Találat!" + +#, fuzzy +#~ msgid "Replace By" +#~ msgstr "Lecserél" + +#~ msgid "Case Sensitive" +#~ msgstr "Pontos Egyezés" + +#~ msgid "Backwards" +#~ msgstr "Visszafelé" + +#~ msgid "Prompt On Replace" +#~ msgstr "Figyelmeztetés Lecseréléskor" + +#~ msgid "Skip" +#~ msgstr "Ãtlapoz" + #~ msgid "Move Add Key" #~ msgstr "Hozzáadás kulcs mozgatása" diff --git a/editor/translations/id.po b/editor/translations/id.po index e739435ee9..ae7fd98ae2 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -207,8 +207,7 @@ msgstr "Buat track BARU %d dan masukkan tombol-tombol?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Buat" @@ -386,14 +385,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Diganti kejadian (kejadian-kejadian) %d." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Ganti" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Ganti Semua" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Kasus Kecocokan" @@ -402,49 +393,16 @@ msgid "Whole Words" msgstr "Semua Kata" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Hanya yang Dipilih" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Cari" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Cari" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Berikutnya" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Tidak ditemukan!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Ganti dengan" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Case Sensitive" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Ke belakang" +msgid "Replace" +msgstr "Ganti" #: editor/code_editor.cpp -#, fuzzy -msgid "Prompt On Replace" -msgstr "Cepat Pada Penggantian" +msgid "Replace All" +msgstr "Ganti Semua" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Lalui" +msgid "Selection Only" +msgstr "Hanya yang Dipilih" #: editor/code_editor.cpp msgid "Zoom In" @@ -565,6 +523,16 @@ msgstr "Sinyal-sinyal" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Ubah Tipe Nilai Array" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Ubah" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Buat Baru" @@ -679,7 +647,8 @@ msgstr "" "Hapus saja? (tidak bisa dibatalkan/undo)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Tidak bisa dibuang:\n" #: editor/dependency_editor.cpp @@ -763,8 +732,9 @@ msgstr "Penemu Proyek" msgid "Lead Developer" msgstr "Pengembang Utama" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Manajer Proyek" #: editor/editor_about.cpp @@ -856,7 +826,7 @@ msgid "Success!" msgstr "Sukses!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Pasang" @@ -1177,7 +1147,8 @@ msgid "Packing" msgstr "Mengemas" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "Template berkas tidak ditemukan:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1404,6 +1375,21 @@ msgstr "Deskripsi:" #: editor/editor_help.cpp #, fuzzy +msgid "Online Tutorials:" +msgstr "Online Dokumentasi" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Untuk saat ini tidak ada deskripsi metode ini. Tolong bantu kita dengan " +"[color=$color][url=$url]kontribusi[/url][/color]!" + +#: editor/editor_help.cpp +#, fuzzy msgid "Properties" msgstr "Properti Objek." @@ -1441,6 +1427,10 @@ msgstr "" msgid "Search Text" msgstr "Mencari Teks" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Cari" + #: editor/editor_log.cpp #, fuzzy msgid "Output:" @@ -1453,6 +1443,11 @@ msgstr " Keluaran:" msgid "Clear" msgstr "Bersihkan" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Luaran" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Error menyimpan resource!" @@ -1461,8 +1456,8 @@ msgstr "Error menyimpan resource!" msgid "Save Resource As.." msgstr "Simpan Resource Sebagai.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp #, fuzzy msgid "I see.." msgstr "Aku tahu.." @@ -1521,8 +1516,10 @@ msgid "This operation can't be done without a tree root." msgstr "Tindakan ini tidak dapat dibatalkan. Pulihkan saja?" #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "Tidak dapat menyimpan scene. Dependensi (instance) mungkin tidak terpenuhi." @@ -2150,6 +2147,13 @@ msgstr "Bantuan" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Cari" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Online Dokumentasi" @@ -2540,7 +2544,7 @@ msgstr "" #: editor/export_template_manager.cpp #, fuzzy -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "Gagal menyimpan atlas:" #: editor/export_template_manager.cpp @@ -2712,9 +2716,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2722,22 +2724,22 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "Error memuat:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Error saat memuat:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "Scene '%s' memiliki dependensi yang rusak:" #: editor/filesystem_dock.cpp @@ -3394,6 +3396,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animasi" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3566,6 +3573,7 @@ msgid "Bake Lightmaps" msgstr "Ganti Radius Lampu" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3873,19 +3881,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4264,7 +4275,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4658,15 +4669,19 @@ msgstr "" msgid "Paste" msgstr "Tempel" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Resource" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" +#, fuzzy +msgid "Close and save changes?" +msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4743,6 +4758,11 @@ msgid "Copy Script Path" msgstr "Salin Resource" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Tampilkan dalam Manajer Berkas" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5181,86 +5201,86 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Tampilan Bawah." +msgid "Keying is disabled (no key inserted)." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Bawah" +msgid "Animation Key Inserted." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Tampilan Atas." +msgid "Objects Drawn" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Tampilan Belakang." +#, fuzzy +msgid "Material Changes" +msgstr "Menyimpan perubahan-perubahan lokal.." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Belakang" +#, fuzzy +msgid "Shader Changes" +msgstr "Ubah" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Tampilan Depan." +msgid "Surface Changes" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Depan" +msgid "Draw Calls" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Tampilan Kiri." +msgid "Vertices" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Kiri" +msgid "FPS" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Tampilan Kanan." +msgid "Top View." +msgstr "Tampilan Atas." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Kanan" +msgid "Bottom View." +msgstr "Tampilan Bawah." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "" +msgid "Bottom" +msgstr "Bawah" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "" +msgid "Left View." +msgstr "Tampilan Kiri." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "" +msgid "Left" +msgstr "Kiri" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Material Changes" -msgstr "Menyimpan perubahan-perubahan lokal.." +msgid "Right View." +msgstr "Tampilan Kanan." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Ubah" +msgid "Right" +msgstr "Kanan" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "" +msgid "Front View." +msgstr "Tampilan Depan." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "" +msgid "Front" +msgstr "Depan" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "" +msgid "Rear View." +msgstr "Tampilan Belakang." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "" +msgid "Rear" +msgstr "Belakang" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5274,6 +5294,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5353,17 +5377,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "Pratinjau:" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "Metode Publik:" #: editor/plugins/spatial_editor_plugin.cpp @@ -5642,10 +5661,18 @@ msgstr "Salin Resource" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5671,14 +5698,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5818,6 +5848,11 @@ msgstr "" msgid "Color" msgstr "Warna" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Simpan Tema" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5921,6 +5956,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Simpan sumber yang sedang diatur." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Batal" @@ -6035,9 +6095,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -6049,6 +6107,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Tidak dapat membuat folder." + +#: 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 "" @@ -6091,14 +6158,29 @@ msgid "Import Existing Project" msgstr "Impor Projek yang Sudah Ada" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Impor" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Buat Projek Baru" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Buat" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Pasang" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nama Projek:" @@ -6116,10 +6198,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6172,6 +6250,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Manajer Proyek" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Daftar Projek" @@ -6300,11 +6382,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Ubah" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6700,10 +6777,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6789,7 +6862,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "Resource" #: editor/scene_tree_dock.cpp @@ -7098,7 +7171,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -7107,6 +7180,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Muat Galat" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7466,10 +7544,55 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Gagal memuat resource." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Gagal memuat resource." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Gagal memuat resource." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Buat Subskribsi" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Proyek" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7849,27 +7972,32 @@ msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "Tidak dapat membuat folder." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "Tidak dapat membuat folder." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Memuat Ekspor Template-template." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" +msgstr "Tidak dapat membuat folder." + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" msgstr "Tidak dapat membuat folder." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "Tidak dapat membuat folder." #: scene/2d/animated_sprite.cpp @@ -7889,6 +8017,13 @@ msgstr "" "scene-scene yang diacu). Yang diciptakan pertama akan bekerja, sedangkan " "sisanya akan diabaikan." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7980,7 +8115,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8042,6 +8177,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8101,8 +8243,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8180,8 +8322,8 @@ msgstr "" #: scene/main/scene_tree.cpp #, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"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" @@ -8216,12 +8358,35 @@ msgstr "Error memuat font." msgid "Invalid font size." msgstr "Ukuran font tidak sah." +#~ msgid "Next" +#~ msgstr "Berikutnya" + +#~ msgid "Not found!" +#~ msgstr "Tidak ditemukan!" + +#~ msgid "Replace By" +#~ msgstr "Ganti dengan" + +#~ msgid "Case Sensitive" +#~ msgstr "Case Sensitive" + +#~ msgid "Backwards" +#~ msgstr "Ke belakang" + +#, fuzzy +#~ msgid "Prompt On Replace" +#~ msgstr "Cepat Pada Penggantian" + +#~ msgid "Skip" +#~ msgstr "Lalui" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "Pratinjau:" + #~ msgid "Move Add Key" #~ msgstr "Pindahkan Kunci Tambah" -#~ msgid "Create Subscription" -#~ msgstr "Buat Subskribsi" - #~ msgid "List:" #~ msgstr "Daftar:" @@ -8344,9 +8509,6 @@ msgstr "Ukuran font tidak sah." #~ msgid "Ctrl+" #~ msgstr "Ctrl+" -#~ msgid "Close scene? (Unsaved changes will be lost)" -#~ msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)" - #~ msgid "" #~ "Open Project Manager? \n" #~ "(Unsaved changes will be lost)" diff --git a/editor/translations/is.po b/editor/translations/is.po index 33e2f9ad3f..3cccf15a6c 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -198,8 +198,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -376,14 +375,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -392,47 +383,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -550,6 +509,15 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp msgid "Create New %s" msgstr "" @@ -655,7 +623,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -738,8 +706,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -824,7 +792,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1131,7 +1099,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1343,6 +1311,17 @@ msgid "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 "Properties" msgstr "" @@ -1374,6 +1353,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1385,6 +1368,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1393,8 +1380,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1448,7 +1435,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2001,6 +1989,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2380,7 +2375,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2534,9 +2529,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2544,19 +2537,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +msgid "Error moving:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3194,6 +3187,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3359,6 +3356,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3659,19 +3657,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4042,7 +4043,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4431,14 +4432,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4514,6 +4517,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4945,83 +4952,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5036,6 +5043,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5109,15 +5120,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5392,10 +5399,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5421,14 +5436,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5566,6 +5584,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5666,6 +5688,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5773,9 +5819,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5787,6 +5831,14 @@ msgid "Imported Project" 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 "" @@ -5827,14 +5879,26 @@ 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 "" @@ -5851,10 +5915,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5900,6 +5960,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6026,11 +6090,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6408,10 +6467,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6496,7 +6551,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6787,7 +6842,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6796,6 +6851,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7141,10 +7200,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7490,23 +7589,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +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 "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7521,6 +7624,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7589,7 +7699,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7648,6 +7758,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7693,8 +7810,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7759,8 +7876,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/it.po b/editor/translations/it.po index 974e667dfb..86700a094b 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -208,8 +208,7 @@ msgstr "Creare %d NUOVE tracce e inserire key?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Crea" @@ -387,14 +386,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Rimpiazzate %d occorrenze." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Rimpiazza" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Rimpiazza Tutti" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Controlla Maiuscole" @@ -403,48 +394,16 @@ msgid "Whole Words" msgstr "Parole Intere" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Solo Selezione" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Cerca" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Trova" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Successivo" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Non trovato!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Rimpiazza con" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Case Sensitive" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "All'indietro" +msgid "Replace" +msgstr "Rimpiazza" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Richiedi Per Sostituire" +msgid "Replace All" +msgstr "Rimpiazza Tutti" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Salta" +msgid "Selection Only" +msgstr "Solo Selezione" #: editor/code_editor.cpp msgid "Zoom In" @@ -565,6 +524,16 @@ msgstr "Segnali" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Cambia Tipo" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Cambia" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Crea Nuovo" @@ -677,7 +646,8 @@ msgstr "" "Rimuoverli comunque? (no undo)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Impossibile rimouvere:\n" #: editor/dependency_editor.cpp @@ -760,8 +730,9 @@ msgstr "Fondatori Progetto" msgid "Lead Developer" msgstr "Lead Developer" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Gestione Progetti" #: editor/editor_about.cpp @@ -850,7 +821,7 @@ msgid "Success!" msgstr "Successo!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installa" @@ -1165,7 +1136,8 @@ msgid "Packing" msgstr "Impacchettando" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "File template non trovato:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1377,6 +1349,21 @@ msgid "Description" msgstr "Descrizione" #: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Tutorials" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Al momento una descrizione per questo metodo non esiste. Aiutaci [color=" +"$color][url=$url]aggiungendone una[/url][/color]!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Proprietà " @@ -1412,6 +1399,10 @@ msgstr "" msgid "Search Text" msgstr "Cerca Testo" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Trova" + #: editor/editor_log.cpp msgid "Output:" msgstr "Output:" @@ -1423,6 +1414,11 @@ msgstr "Output:" msgid "Clear" msgstr "Rimuovi" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Output" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Errore salvando la Risorsa!" @@ -1431,8 +1427,8 @@ msgstr "Errore salvando la Risorsa!" msgid "Save Resource As.." msgstr "Salva Risorsa Come.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Capisco.." @@ -1486,8 +1482,10 @@ msgstr "" "Questa operazione non può essere eseguita senza una radice dell'albero." #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "Impossibile salvare la scena. Probabili dipendenze (instanze) non sono state " "soddisfatte." @@ -2105,6 +2103,13 @@ msgstr "Aiuto" msgid "Classes" msgstr "Classi" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Cerca" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentazione Online" @@ -2492,7 +2497,8 @@ msgid "No version.txt found inside templates." msgstr "Non é stato trovato version.txt all'interno di templates." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "Errore di creazione del percorso per le template:\n" #: editor/export_template_manager.cpp @@ -2654,9 +2660,8 @@ msgid "View items as a list" msgstr "Visualizza elementi come una lista" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "Stato: Importazione file fallita. Si prega di sistemare il file e " @@ -2667,20 +2672,23 @@ msgid "Cannot move/rename resources root." msgstr "Impossibile spostare/rinominare risorse root." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +#, fuzzy +msgid "Cannot move a folder into itself." msgstr "Impossibile spostare una cartella in se stessa.\n" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +#, fuzzy +msgid "Error moving:" msgstr "Errore spostamento:\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Errore in caricamento:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +#, fuzzy +msgid "Unable to update dependencies:" msgstr "Impossibile aggiornare le dipendenze:\n" #: editor/filesystem_dock.cpp @@ -3332,6 +3340,11 @@ msgstr "Modifica Filtri Nodi" msgid "Filters.." msgstr "Filtri.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animazione" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Gratuito" @@ -3498,6 +3511,7 @@ msgid "Bake Lightmaps" msgstr "Trasferisci a Lightmap:" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Anteprima" @@ -3814,6 +3828,14 @@ msgstr "Aggiungi %s" msgid "Adding %s..." msgstr "Aggiungendo %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: 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" @@ -3825,11 +3847,6 @@ msgid "Error instancing scene from %s" msgstr "Errore istanziamento scena da %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Questa operazione richiede un solo nodo selezionato." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Cambia tipo di default" @@ -4216,7 +4233,7 @@ msgstr "Bake!" #: editor/plugins/navigation_mesh_editor_plugin.cpp #, fuzzy -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "Crea Mesh di Navigazione" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4618,15 +4635,18 @@ msgstr "Carica Risorsa" msgid "Paste" msgstr "Incolla" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Percorso Risosa" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Elimina File recenti" #: editor/plugins/script_editor_plugin.cpp #, fuzzy -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" "Chiudere e salvare i cambiamenti?\n" "\"" @@ -4707,6 +4727,11 @@ msgid "Copy Script Path" msgstr "Copia Percorso" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Mostra nel File System" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "Cronologia Succ." @@ -5151,84 +5176,84 @@ msgid "Rotating %s degrees." msgstr "Ruotando di %s gradi." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Vista dal Basso." +msgid "Keying is disabled (no key inserted)." +msgstr "Keying disabilitato (nessun key inserito)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Basso" +msgid "Animation Key Inserted." +msgstr "Key d'Animazione Inserito." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Vista dall'Alto." +msgid "Objects Drawn" +msgstr "Oggetti Disegnati" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Vista dal Retro." +msgid "Material Changes" +msgstr "Cambiamenti dei Materiali" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Retro" +msgid "Shader Changes" +msgstr "Cambiamenti delle Shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Vista Frontale." +msgid "Surface Changes" +msgstr "Cambiamenti delle Superfici" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Fronte" +msgid "Draw Calls" +msgstr "Draw Calls" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vista Sinistra." +msgid "Vertices" +msgstr "Vertici" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Sinistra" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Vista Destra." +msgid "Top View." +msgstr "Vista dall'Alto." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Destra" +msgid "Bottom View." +msgstr "Vista dal Basso." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Keying disabilitato (nessun key inserito)." +msgid "Bottom" +msgstr "Basso" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Key d'Animazione Inserito." +msgid "Left View." +msgstr "Vista Sinistra." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Oggetti Disegnati" +msgid "Left" +msgstr "Sinistra" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Cambiamenti dei Materiali" +msgid "Right View." +msgstr "Vista Destra." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Cambiamenti delle Shader" +msgid "Right" +msgstr "Destra" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Cambiamenti delle Superfici" +msgid "Front View." +msgstr "Vista Frontale." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Draw Calls" +msgid "Front" +msgstr "Fronte" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vertici" +msgid "Rear View." +msgstr "Vista dal Retro." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Retro" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5242,6 +5267,10 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Nessun genitore del quale istanziare un figlio." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Questa operazione richiede un solo nodo selezionato." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Mostra Normale" @@ -5318,17 +5347,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificatore Velocità Vista Libera" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "Anteprima" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Finestra di XForm" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "Modalità di Selezione" #: editor/plugins/spatial_editor_plugin.cpp @@ -5609,10 +5633,20 @@ msgstr "Rimuovi nodo(i)" msgid "Move (After)" msgstr "Sposta a Sinistra" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "Impila Frame" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Anteprima StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Stile" + #: editor/plugins/texture_region_editor_plugin.cpp #, fuzzy msgid "Set Region Rect" @@ -5639,14 +5673,17 @@ msgid "Auto Slice" msgstr "Auto Divisione" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Offset:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Step:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separazione:" @@ -5787,6 +5824,10 @@ msgstr "Font" msgid "Color" msgstr "Colore" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5892,6 +5933,32 @@ msgstr "Unisci da Scena" msgid "Error" msgstr "Errore" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +msgstr "Auto Divisione" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Salva la risorsa in modifica." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Annulla" @@ -6010,12 +6077,9 @@ msgid "Please choose a 'project.godot' file." msgstr "Si prega di esportare al di fuori della cartella del progetto!" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Il tuo progetto verrà creato in una cartella già esistente (forse vorresti " -"creare una nuova cartella?)." +#, fuzzy +msgid "Please choose an empty folder." +msgstr "Si prega di esportare al di fuori della cartella del progetto!" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6027,6 +6091,15 @@ msgid "Imported Project" msgstr "Progetto Importato" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Impossibile creare cartella." + +#: 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 "Sarebbe una buona idea dare un nome al tuo progetto." @@ -6071,14 +6144,29 @@ msgid "Import Existing Project" msgstr "Importa Progetto Esistente" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importa e Apri" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Crea Nuovo Progetto" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Crea Emitter" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Installa Progetto:" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Installa" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nome Progetto:" @@ -6096,10 +6184,6 @@ msgid "Browse" msgstr "Sfoglia" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "Questo è un BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Progetto Senza Nome" @@ -6157,6 +6241,10 @@ msgid "" msgstr "Stai per esaminare %s cartelle per progetti Godot esistenti. Confermi?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Gestione Progetti" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Lista Progetti" @@ -6288,11 +6376,6 @@ msgid "Button 9" msgstr "Pulsante 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Cambia" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Indice Asse Joypad:" @@ -6687,10 +6770,6 @@ msgid "Error loading scene from %s" msgstr "Errore caricamento scena da %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6779,7 +6858,8 @@ msgid "Error duplicating scene to save it." msgstr "Errore duplicando la scena per salvarla." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +#, fuzzy +msgid "Sub-Resources" msgstr "Sub-Risorse:" #: editor/scene_tree_dock.cpp @@ -7090,7 +7170,7 @@ msgstr "Funzione:" msgid "Pick one or more items from the list to display the graph." msgstr "Scegli uno o più oggetti dalla lista per mostrare il grafico." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Errori" @@ -7099,6 +7179,11 @@ msgid "Child Process Connected" msgstr "Processo Figlio Connesso" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Carica Errori" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Ispeziona Istanza Precedente" @@ -7474,11 +7559,59 @@ msgstr "Impostazioni Snap" msgid "Pick Distance:" msgstr "Istanza:" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "Creazione Octree Texture" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Impossiblile creare outline!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Caricamento della risorsa fallito." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "Fatto!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Caricamento della risorsa fallito." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Crea Outline" + #: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "Builds" msgstr "Costruzioni" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Progetto" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "Avvertimento" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7858,26 +7991,33 @@ msgid "Run exported HTML in the system's default browser." msgstr "Esegui HTML esportato all'interno del browser di sistema di default." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" msgstr "Impossibile scrivere file:\n" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +#, fuzzy +msgid "Could not open template for export:" msgstr "Impossibile aprire template per l'esportazione:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Installa Template di Esportazione" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" +msgstr "Impossibile leggere file:\n" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" msgstr "Impossibile leggere file:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "Impossibile leggere file:\n" #: scene/2d/animated_sprite.cpp @@ -7897,6 +8037,13 @@ msgstr "" "scene istanziate). Il primo creato funzionerà , mentre i restanti saranno " "ignorati." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7993,7 +8140,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp #, fuzzy msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8066,6 +8213,13 @@ msgstr "Finalizzazione del Plot" msgid "Lighting Meshes: " msgstr "Bliting Immagini" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8125,8 +8279,8 @@ msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass. #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "I cambiamenti di dimensione a RigidBody (nel personaggio o nelle modalità " @@ -8209,9 +8363,10 @@ msgid "(Other)" msgstr "(Altro)" #: scene/main/scene_tree.cpp +#, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Impossobile caricare Ambiente di Default come specificato nelle Impostazioni " "Progetto (Rendering -> Vista -> Ambiente di Default)." @@ -8244,6 +8399,41 @@ msgstr "Errore caricamento font." msgid "Invalid font size." msgstr "Dimensione font Invalida." +#~ msgid "Next" +#~ msgstr "Successivo" + +#~ msgid "Not found!" +#~ msgstr "Non trovato!" + +#~ msgid "Replace By" +#~ msgstr "Rimpiazza con" + +#~ msgid "Case Sensitive" +#~ msgstr "Case Sensitive" + +#~ msgid "Backwards" +#~ msgstr "All'indietro" + +#~ msgid "Prompt On Replace" +#~ msgstr "Richiedi Per Sostituire" + +#~ msgid "Skip" +#~ msgstr "Salta" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Il tuo progetto verrà creato in una cartella già esistente (forse " +#~ "vorresti creare una nuova cartella?)." + +#~ msgid "That's a BINGO!" +#~ msgstr "Questo è un BINGO!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "Anteprima" + #~ msgid "Move Add Key" #~ msgstr "Sposta Aggiunta Key" @@ -8336,9 +8526,6 @@ msgstr "Dimensione font Invalida." #~ msgid "' parsing of config failed." #~ msgstr "' fallita lettura della configurazione." -#~ msgid "Theme" -#~ msgstr "Tema" - #~ msgid "Method List For '%s':" #~ msgstr "Lista Metodi Per '%s':" @@ -8611,9 +8798,6 @@ msgstr "Dimensione font Invalida." #~ msgid "Import Anyway" #~ msgstr "Importa ComunqueImporta Comunque" -#~ msgid "Import & Open" -#~ msgstr "Importa e Apri" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "La scena modificata non è stata salvata, aprire la scena importata " @@ -8869,9 +9053,6 @@ msgstr "Dimensione font Invalida." #~ msgid "Stereo" #~ msgstr "Stereo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Pitch" @@ -9043,9 +9224,6 @@ msgstr "Dimensione font Invalida." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Avverti quando una risorsa esterna è stata modificata." -#~ msgid "Tutorials" -#~ msgstr "Tutorials" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Apri https://godotengine.org alla sezione tutorial." diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 66b9115692..061a3909e9 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-20 15:43+0000\n" +"PO-Revision-Date: 2018-01-06 13:19+0000\n" "Last-Translator: NoahDigital <taku_58@hotmail.com>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -217,8 +217,7 @@ msgstr "æ–°ã—ã„ %d トラックを作æˆã—ã€ã‚ーを挿入ã—ã¾ã™ã‹ï¼Ÿ" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "作æˆ" @@ -381,97 +380,40 @@ msgid "Change Array Value" msgstr "é…列ã®å€¤ã‚’変更" #: editor/code_editor.cpp -#, fuzzy msgid "Go to Line" msgstr "行ã«ç§»å‹•" #: editor/code_editor.cpp -#, fuzzy msgid "Line Number:" msgstr "行番å·:" #: editor/code_editor.cpp -#, fuzzy msgid "No Matches" msgstr "一致ãªã—" #: editor/code_editor.cpp -#, fuzzy msgid "Replaced %d occurrence(s)." msgstr "%d 箇所を置æ›ã—ã¾ã—ãŸã€‚" #: editor/code_editor.cpp -#, fuzzy -msgid "Replace" -msgstr "ç½®æ›" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Replace All" -msgstr "ã™ã¹ã¦ç½®æ›" - -#: editor/code_editor.cpp -#, fuzzy msgid "Match Case" msgstr "大文å—å°æ–‡å—を区別ã™ã‚‹" #: editor/code_editor.cpp -#, fuzzy msgid "Whole Words" msgstr "å˜èªžå…¨ä½“" #: editor/code_editor.cpp -#, fuzzy -msgid "Selection Only" -msgstr "é¸æŠžç¯„å›²ã®ã¿" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -#, fuzzy -msgid "Search" -msgstr "検索" - -#: editor/code_editor.cpp editor/editor_help.cpp -#, fuzzy -msgid "Find" -msgstr "検索" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Next" -msgstr "次" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Not found!" -msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "ã§ç½®æ›ã™ã‚‹" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Case Sensitive" -msgstr "大文å—å°æ–‡å—を区別" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Backwards" -msgstr "後方" +msgid "Replace" +msgstr "ç½®æ›" #: editor/code_editor.cpp -#, fuzzy -msgid "Prompt On Replace" -msgstr "ç½®æ›æ™‚ã«ç¢ºèª" +msgid "Replace All" +msgstr "ã™ã¹ã¦ç½®æ›" #: editor/code_editor.cpp -#, fuzzy -msgid "Skip" -msgstr "スã‚ップ" +msgid "Selection Only" +msgstr "é¸æŠžç¯„å›²ã®ã¿" #: editor/code_editor.cpp #, fuzzy @@ -611,8 +553,19 @@ msgstr "シグナル" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "åž‹(type)を変更" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change" +msgstr "変更" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" -msgstr "æ–°è¦ã«ç”Ÿæˆ" +msgstr "%s ã‚’æ–°è¦ä½œæˆ" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -649,7 +602,7 @@ msgstr "記述:" #: editor/dependency_editor.cpp #, fuzzy msgid "Search Replacement For:" -msgstr "検索ã—ã¦ç½®æ›" +msgstr "検索ã—ã¦ç½®æ›:" #: editor/dependency_editor.cpp #, fuzzy @@ -738,7 +691,7 @@ msgstr "" #: editor/dependency_editor.cpp #, fuzzy -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "解決ã§ãã¾ã›ã‚“." #: editor/dependency_editor.cpp @@ -806,12 +759,12 @@ msgstr "消去" #: editor/dictionary_property_edit.cpp #, fuzzy msgid "Change Dictionary Key" -msgstr "アニメーションã®åå‰ã‚’変更:" +msgstr "ディクショナリ ã‚ーã®å¤‰æ›´" #: editor/dictionary_property_edit.cpp #, fuzzy msgid "Change Dictionary Value" -msgstr "é…列ã®å€¤ã‚’変更" +msgstr "ディクショナリ 値ã®å¤‰æ›´" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" @@ -829,15 +782,16 @@ msgstr "Godotエンジンã«è²¢çŒ®ã—ãŸäººã€…" #: editor/editor_about.cpp #, fuzzy msgid "Project Founders" -msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼" +msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆå‰µæ¥è€…" #: editor/editor_about.cpp #, fuzzy msgid "Lead Developer" msgstr "開発者" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼" #: editor/editor_about.cpp @@ -937,7 +891,7 @@ msgid "Success!" msgstr "æˆåŠŸï¼" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Install" msgstr "インストール" @@ -960,9 +914,8 @@ msgid "Rename Audio Bus" msgstr "オーディオãƒã‚¹åを変更" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "オーディオãƒã‚¹ã‚’ソãƒã«åˆ‡ã‚Šæ›¿ãˆ" +msgstr "オーディオãƒã‚¹ã®ãƒœãƒªãƒ¥ãƒ¼ãƒ を変更" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -1029,12 +982,11 @@ msgstr "エフェクトを消去" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "オーディオ" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Add Audio Bus" -msgstr "ãƒã‚¹ã‚’è¿½åŠ ã™ã‚‹" +msgstr "オーディオãƒã‚¹ã‚’è¿½åŠ " #: editor/editor_audio_buses.cpp msgid "Master bus can't be deleted!" @@ -1282,7 +1234,7 @@ msgstr "パッã‚ングã™ã‚‹" #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "テンプレートファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1526,6 +1478,21 @@ msgstr "記述:" #: editor/editor_help.cpp #, fuzzy +msgid "Online Tutorials:" +msgstr "オンライン文書" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"ç¾åœ¨ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®èª¬æ˜Žã¯ã‚りã¾ã›ã‚“。[color=$color][url=$url]貢献[/url][/" +"color]ã—ã¦ç§ãŸã¡ã‚’助ã‘ã¦ãã ã•ã„!" + +#: editor/editor_help.cpp +#, fuzzy msgid "Properties" msgstr "プãƒãƒ‘ティ:" @@ -1565,6 +1532,11 @@ msgstr "" msgid "Search Text" msgstr "テã‚ストを探ã™" +#: editor/editor_help.cpp +#, fuzzy +msgid "Find" +msgstr "検索" + #: editor/editor_log.cpp #, fuzzy msgid "Output:" @@ -1577,6 +1549,11 @@ msgstr " 出力:" msgid "Clear" msgstr "削除" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "出力" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Error saving resource!" @@ -1587,8 +1564,8 @@ msgstr "リソースä¿å˜ã‚¨ãƒ©ãƒ¼!" msgid "Save Resource As.." msgstr "~ã¨ã„ã†åå‰ã§ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å˜ã™ã‚‹" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp #, fuzzy msgid "I see.." msgstr "ã‚ã‹ã£ãŸ.." @@ -1652,8 +1629,10 @@ msgid "This operation can't be done without a tree root." msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™." #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "シーンをä¿å˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãŠãらãä¾å˜é–¢ä¿‚ (インスタンス) を完備ã•れã¦ã„" "ãªã„ã¨æ€ã‚れã¾ã™." @@ -2353,6 +2332,14 @@ msgstr "ヘルプ" msgid "Classes" 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/project_settings_editor.cpp +#, fuzzy +msgid "Search" +msgstr "検索" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Online Docs" @@ -2771,7 +2758,8 @@ msgid "No version.txt found inside templates." msgstr "テンプレート内ã«version.txtãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "テンプレートã®ãƒ‘ス生æˆã‚¨ãƒ©ãƒ¼\n" #: editor/export_template_manager.cpp @@ -2938,9 +2926,8 @@ msgid "View items as a list" msgstr "リスト表示" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "状æ³: ファイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚ファイルを修æ£ã—ã¦æ‰‹å‹•ã§å†ã‚¤ãƒ³ãƒãƒ¼" @@ -2953,22 +2940,22 @@ msgstr "ソースã®ãƒ•ォントをèªã¿è¾¼ã¿/処ç†ã§ãã¾ã›ã‚“." #: editor/filesystem_dock.cpp #, fuzzy -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "åŒã˜ãƒ•ァイルã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "エラーをインãƒãƒ¼ãƒˆä¸:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "èªã¿è¾¼ã¿å¤±æ•—:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "シーン'%s' ã¯ä¾å˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:" #: editor/filesystem_dock.cpp @@ -3704,6 +3691,11 @@ msgstr "ノードフィルターã®ç·¨é›†" msgid "Filters.." msgstr "フィルター.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "アニメーション" + #: editor/plugins/asset_library_editor_plugin.cpp #, fuzzy msgid "Free" @@ -3886,6 +3878,7 @@ msgid "Bake Lightmaps" msgstr "ライトマップã¸ã®è»¢å†™:" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "プレビュー" @@ -4230,6 +4223,14 @@ msgstr "%sè¿½åŠ ã™ã‚‹" msgid "Adding %s..." msgstr "%sè¿½åŠ ä¸..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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 #, fuzzy @@ -4243,12 +4244,6 @@ msgid "Error instancing scene from %s" msgstr "%sシーンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–エラー" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -#, fuzzy -msgid "This operation requires a single selected node." -msgstr "一ã¤ãƒŽãƒ¼ãƒ‰ã‚’指定ã—ãªã„ã¨ã€ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“" - -#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Change default type" msgstr "é…列ã®å€¤ã®ç¨®é¡žã®å¤‰æ›´" @@ -4673,7 +4668,7 @@ msgstr "ベイク!" #: editor/plugins/navigation_mesh_editor_plugin.cpp #, fuzzy -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®ç”Ÿæˆ" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -5122,15 +5117,19 @@ msgstr "リソースをèªã¿è¾¼ã‚€" msgid "Paste" msgstr "貼り付ã‘" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "リソースã®ãƒ‘ス" + #: editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Clear Recent Files" msgstr "最近開ã„ãŸãƒ•ァイルã®è¨˜éŒ²ã‚’クリア" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +#, fuzzy +msgid "Close and save changes?" msgstr "" "変更をä¿å˜ã—ã¦é–‰ã˜ã¾ã™ã‹?\n" "\"" @@ -5214,6 +5213,11 @@ msgstr "パスをコピーã™ã‚‹" #: editor/plugins/script_editor_plugin.cpp #, fuzzy +msgid "Show In File System" +msgstr "ファイルシステム上ã§è¡¨ç¤º" + +#: editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid "History Prev" msgstr "ç›´å‰ã®å±¥æ´" @@ -5688,85 +5692,85 @@ msgid "Rotating %s degrees." msgstr "%s 度回転." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "下é¢å›³." +msgid "Keying is disabled (no key inserted)." +msgstr "ã‚ーã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ï¼ˆã‚ãƒ¼ã¯æŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "下é¢" +#, fuzzy +msgid "Animation Key Inserted." +msgstr "アニメーションã®ã‚ãƒ¼ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã™." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "上é¢å›³." +msgid "Objects Drawn" +msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "後é¢å›³." +msgid "Material Changes" +msgstr "ç´ æã®å¤‰æ›´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "後é¢" +msgid "Shader Changes" +msgstr "シェーダーã®å¤‰æ›´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "å‰é¢å›³." +msgid "Surface Changes" +msgstr "サーフェースã®å¤‰æ›´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "å‰é¢" +msgid "Draw Calls" +msgstr "ドãƒãƒ¼ã‚³ãƒ¼ãƒ«ï¼ˆDaw call)" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "å·¦å´é¢å›³." +msgid "Vertices" +msgstr "é ‚ç‚¹" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "å·¦å´é¢" +msgid "FPS" +msgstr "フレームレート" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "å³å´é¢å›³." +msgid "Top View." +msgstr "上é¢å›³." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "å³å´é¢" +msgid "Bottom View." +msgstr "下é¢å›³." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "ã‚ーã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ï¼ˆã‚ãƒ¼ã¯æŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“)." +msgid "Bottom" +msgstr "下é¢" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Animation Key Inserted." -msgstr "アニメーションã®ã‚ãƒ¼ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã™." +msgid "Left View." +msgstr "å·¦å´é¢å›³." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト" +msgid "Left" +msgstr "å·¦å´é¢" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "ç´ æã®å¤‰æ›´" +msgid "Right View." +msgstr "å³å´é¢å›³." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "シェーダーã®å¤‰æ›´" +msgid "Right" +msgstr "å³å´é¢" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "サーフェースã®å¤‰æ›´" +msgid "Front View." +msgstr "å‰é¢å›³." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "ドãƒãƒ¼ã‚³ãƒ¼ãƒ«ï¼ˆDaw call)" +msgid "Front" +msgstr "å‰é¢" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "é ‚ç‚¹" +msgid "Rear View." +msgstr "後é¢å›³." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "フレームレート" +msgid "Rear" +msgstr "後é¢" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5781,6 +5785,11 @@ msgstr "ãŠãƒ¼ã‘ー :(" msgid "No parent to instance a child at." msgstr "åインスタンスを生æˆã™ã‚‹ãŸã‚ã®è¦ªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#, fuzzy +msgid "This operation requires a single selected node." +msgstr "一ã¤ãƒŽãƒ¼ãƒ‰ã‚’指定ã—ãªã„ã¨ã€ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“" + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "通常表示" @@ -5863,17 +5872,12 @@ msgid "Freelook Speed Modifier" msgstr "フリールックã®é€Ÿåº¦ã‚’調整" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "プレビュー" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Xformダイアãƒã‚°" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰" #: editor/plugins/spatial_editor_plugin.cpp @@ -6170,10 +6174,20 @@ msgstr "ノードを除去" msgid "Move (After)" msgstr "å·¦ã«ç§»å‹•" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "スタックフレーム" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "スタイルボックス プレビュー:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "スタイル" + #: editor/plugins/texture_region_editor_plugin.cpp #, fuzzy msgid "Set Region Rect" @@ -6201,14 +6215,17 @@ msgid "Auto Slice" msgstr "自動スライス" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "オフセット:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "ステップ:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "分離:" @@ -6354,6 +6371,10 @@ msgstr "フォント" msgid "Color" msgstr "色" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "テーマ" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -6463,6 +6484,32 @@ msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸" msgid "Error" msgstr "エラー" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "ç¾åœ¨ç·¨é›†ä¸ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å˜ã™ã‚‹" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "ã‚ャンセル" @@ -6591,12 +6638,9 @@ msgid "Please choose a 'project.godot' file." msgstr "'project.godot' ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"空ã§ãªã„フォルダã«ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆãŒä½œæˆã•れã¾ã™(æ–°ã—ã„フォルダを作æˆã™ã‚‹ã“ã¨ãŒã§" -"ãã¾ã™)." +#, fuzzy +msgid "Please choose an empty folder." +msgstr "'project.godot' ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6607,6 +6651,15 @@ msgid "Imported Project" msgstr "インãƒãƒ¼ãƒˆã•れãŸãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆ" #: editor/project_manager.cpp +#, fuzzy +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 "プãƒã‚¸ã‚§ã‚¯ãƒˆã«åå‰ã‚’付ã‘ã¦ãã ã•ã„." @@ -6654,15 +6707,30 @@ msgid "Import Existing Project" msgstr "æ—¢å˜ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’インãƒãƒ¼ãƒˆ" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "æ–°ã—ã„プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’作る" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "発光物を生æˆ" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’インストール:" #: editor/project_manager.cpp #, fuzzy +msgid "Install & Edit" +msgstr "インストール" + +#: editor/project_manager.cpp +#, fuzzy msgid "Project Name:" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆå:" @@ -6680,10 +6748,6 @@ msgid "Browse" msgstr "ブラウズ" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "当ãŸã‚Š!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "åç„¡ã—ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆ" @@ -6739,6 +6803,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆãƒžãƒãƒ¼ã‚¸ãƒ£ãƒ¼" + +#: editor/project_manager.cpp msgid "Project List" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆã®ãƒªã‚¹ãƒˆ" @@ -6875,12 +6943,6 @@ msgid "Button 9" msgstr "ボタン9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Change" -msgstr "変更" - -#: editor/project_settings_editor.cpp #, fuzzy msgid "Joypad Axis Index:" msgstr "ジョイパッド軸ã®Index:" @@ -7298,10 +7360,6 @@ msgid "Error loading scene from %s" msgstr "シーンを%sã‹ã‚‰èªã¿è¾¼ã‚€éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç”Ÿã˜ã¾ã—ãŸ" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "オッケー" - -#: editor/scene_tree_dock.cpp #, fuzzy msgid "" "Cannot instance the scene '%s' because the current scene exists within one " @@ -7404,7 +7462,8 @@ msgid "Error duplicating scene to save it." msgstr "ä¿å˜ã®ãŸã‚シーンを複製ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +#, fuzzy +msgid "Sub-Resources" msgstr "サブリソース:" #: editor/scene_tree_dock.cpp @@ -7744,7 +7803,7 @@ msgstr "関数:" msgid "Pick one or more items from the list to display the graph." msgstr "グラフ表示ã™ã‚‹ã«ã¯ãƒªã‚¹ãƒˆã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸ã‚“ã§ãã ã•ã„." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "エラー" @@ -7754,6 +7813,11 @@ msgstr "åプãƒã‚»ã‚¹æŽ¥ç¶š" #: editor/script_editor_debugger.cpp #, fuzzy +msgid "Copy Error" +msgstr "èªã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼" + +#: editor/script_editor_debugger.cpp +#, fuzzy msgid "Inspect Previous Instance" msgstr "å‰ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®å†…容を確èª" @@ -8132,10 +8196,58 @@ msgstr "Snapã®è¨å®š" msgid "Pick Distance:" msgstr "インスタンス:" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "八分木テクスãƒãƒ£ã‚’生æˆ" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "アウトラインを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "リソースèªã¿è¾¼ã¿å¤±æ•—" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "完了!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "リソースèªã¿è¾¼ã¿å¤±æ•—" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "モノラル音声" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "アウトラインを生æˆ" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "ビルド" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆ" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "è¦å‘Š" + #: modules/visual_script/visual_script.cpp #, fuzzy msgid "" @@ -8561,27 +8673,33 @@ msgid "Run exported HTML in the system's default browser." msgstr "エクスãƒãƒ¼ãƒˆã—ãŸHTMLファイルを既定ã®ãƒ–ラウザã§å®Ÿè¡Œ." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“ã§ã—ãŸ:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "テンプレート エクスãƒãƒ¼ãƒˆã‚’管ç†" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "ファイルをèªã‚ã¾ã›ã‚“ã§ã—ãŸ:\n" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "ファイルをèªã‚ã¾ã›ã‚“ã§ã—ãŸ:\n" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "ファイルをèªã‚ã¾ã›ã‚“ã§ã—ãŸ:\n" #: scene/2d/animated_sprite.cpp @@ -8601,6 +8719,13 @@ msgstr "" "シーンã®ã‚»ãƒƒãƒˆ) ã”ã¨ã«è¨±å¯ã•れã¾ã™ã€‚最åˆã«ä½œæˆã•れ㟠1 ã¤ãŒå‹•作ã™ã‚‹ä¸€æ–¹ã€æ®‹ã‚Š" "ã®éƒ¨åˆ†ã¯ç„¡è¦–ã•れã¾ã™ã€‚" +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp #, fuzzy msgid "" @@ -8693,7 +8818,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8758,6 +8883,13 @@ msgstr "プãƒãƒƒãƒˆå®Œäº†" msgid "Lighting Meshes: " msgstr "イメージをé…ç½®(Blit)" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp #, fuzzy msgid "" @@ -8818,8 +8950,8 @@ msgstr "æç”»ãƒ‘スã®ãŸã‚ã®ãƒ¡ãƒƒã‚·ãƒ¥ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ã®ã§ #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8904,8 +9036,8 @@ msgstr "(ãã®ä»–)" #: scene/main/scene_tree.cpp #, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "プãƒã‚¸ã‚§ã‚¯ãƒˆã®è¨å®š (レンダリング-> ビューãƒãƒ¼ãƒˆ -> 既定ã®ç’°å¢ƒ) ã§æ—¢å®šã¨ã•れã¦" "ã„る環境(Environment)ã¯èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ." @@ -8938,6 +9070,44 @@ msgstr "フォントèªã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚" msgid "Invalid font size." msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" +#~ msgid "Next" +#~ msgstr "次" + +#~ msgid "Not found!" +#~ msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!" + +#~ msgid "Replace By" +#~ msgstr "ã§ç½®æ›ã™ã‚‹" + +#~ msgid "Case Sensitive" +#~ msgstr "大文å—å°æ–‡å—を区別" + +#, fuzzy +#~ msgid "Backwards" +#~ msgstr "後方" + +#, fuzzy +#~ msgid "Prompt On Replace" +#~ msgstr "ç½®æ›æ™‚ã«ç¢ºèª" + +#, fuzzy +#~ msgid "Skip" +#~ msgstr "スã‚ップ" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "空ã§ãªã„フォルダã«ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆãŒä½œæˆã•れã¾ã™(æ–°ã—ã„フォルダを作æˆã™ã‚‹ã“ã¨" +#~ "ãŒã§ãã¾ã™)." + +#~ msgid "That's a BINGO!" +#~ msgstr "当ãŸã‚Š!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "プレビュー" + #~ msgid "Move Add Key" #~ msgstr "è¿½åŠ ã—ãŸã‚ーを移動" @@ -9026,9 +9196,6 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" #~ msgid "Filter:" #~ msgstr "フィルター:" -#~ msgid "Theme" -#~ msgstr "テーマ" - #, fuzzy #~ msgid "Method List For '%s':" #~ msgstr "'%s' ã®ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§ï¼š" @@ -9358,10 +9525,6 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" #~ msgstr "ã¨ã‚Šã‚ãˆãšã‚¤ãƒ³ãƒãƒ¼ãƒˆ" #, fuzzy -#~ msgid "Import & Open" -#~ msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã" - -#, fuzzy #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "編集ã—ãŸã‚·ãƒ¼ãƒ³ã¯ä¿å˜ã•れã¦ã„ã¾ã›ã‚“ãŒã€ãれã§ã‚‚インãƒãƒ¼ãƒˆã—ãŸã‚·ãƒ¼ãƒ³ã‚’é–‹ãã¾" @@ -9677,9 +9840,6 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" #~ msgid "Stereo" #~ msgstr "ステレオ音声" -#~ msgid "Mono" -#~ msgstr "モノラル音声" - #~ msgid "Pitch" #~ msgstr "ピッãƒ" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 743f32a9e6..29518c9797 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -3,14 +3,16 @@ # Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. # -# 박한얼 (volzhs) <volzhs@gmail.com>, 2016-2017. +# 박한얼 (volzhs) <volzhs@gmail.com>, 2016-2018. # Ch <ccwpc@hanmail.net>, 2017. +# paijai 송 (fivejobi) <xotjq237@gmail.com>, 2018. +# TheRedPlanet <junmo.moon8@gmail.com>, 2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-12-11 00:48+0000\n" +"PO-Revision-Date: 2018-01-20 17:48+0000\n" "Last-Translator: 박한얼 <volzhs@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -19,7 +21,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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -27,65 +29,63 @@ msgstr "비활성화ë¨" #: editor/animation_editor.cpp msgid "All Selection" -msgstr "ëª¨ë“ ì„ íƒ" +msgstr "ëª¨ë‘ ì„ íƒ" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "ê°’ 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ í‚¤í”„ë ˆìž„ 시간 변경" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "ì „í™˜ 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 변화 변경" #: editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "ì†ì„± 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 변형 변경" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "ê°’ 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ í‚¤í”„ë ˆìž„ ê°’ 변경" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "호출 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 호출 변경" #: editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "트랙 추가" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 추가" #: editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "키 ë³µì œ" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 ë³µì œ" #: editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "트랙 위로 ì´ë™" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 위로 ì´ë™" #: editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "트랙 아래로 ì´ë™" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 아래로 ì´ë™" #: editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "트랙 ì‚ì œ" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 ì‚ì œ" #: editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "ì „í™˜ ì„¤ì •:" +msgstr "변화 ì„¤ì •:" #: editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "트랙 ì´ë¦„ 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 ì´ë¦„ 변경" #: editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "트랙 ë³´ê°„ 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 ë³´ê°„ 변경" #: editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "트랙 ê°’ 모드 변경" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 ê°’ 모드 변경" #: editor/animation_editor.cpp msgid "Anim Track Change Wrap Mode" @@ -93,20 +93,20 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 ëž© 모드 변경" #: editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "노드 커브 ìˆ˜ì •" +msgstr "노드 커브 편집" #: editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "ì„ íƒ ì»¤ë¸Œ ìˆ˜ì •" +msgstr "ì„ íƒ ì»¤ë¸Œ 편집" #: editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "키 ì‚ì œ" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 ì‚ì œ" #: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "ì„ íƒí‚¤ ë³µì œ" +msgstr "ì„ íƒ ë³µì œ" #: editor/animation_editor.cpp msgid "Duplicate Transposed" @@ -130,19 +130,19 @@ msgstr "트리거" #: editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "키 추가" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 추가" #: editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "키 ì´ë™" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 ì´ë™" #: editor/animation_editor.cpp msgid "Scale Selection" -msgstr "ì„ íƒí‚¤ ìŠ¤ì¼€ì¼ ì¡°ì ˆ" +msgstr "ì„ íƒ í¬ê¸° ì¡°ì ˆ" #: editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "커서 위치ì—서 ìŠ¤ì¼€ì¼ ì¡°ì ˆ" +msgstr "커서 위치ì—서 í¬ê¸° ì¡°ì ˆ" #: editor/animation_editor.cpp msgid "Goto Next Step" @@ -163,23 +163,23 @@ msgstr "ë¹„ì„ í˜•" #: editor/animation_editor.cpp msgid "In" -msgstr "In" +msgstr "안" #: editor/animation_editor.cpp msgid "Out" -msgstr "Out" +msgstr "ë°–" #: editor/animation_editor.cpp msgid "In-Out" -msgstr "In-Out" +msgstr "안-ë°–" #: editor/animation_editor.cpp msgid "Out-In" -msgstr "Out-In" +msgstr "ë°–-안" #: editor/animation_editor.cpp msgid "Transitions" -msgstr "ì „í™˜" +msgstr "변화" #: editor/animation_editor.cpp msgid "Optimize Animation" @@ -191,18 +191,17 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ì •ë¦¬" #: editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "%s (ì„)를 위해 새 íŠ¸ëž™ì„ ë§Œë“¤ê³ í‚¤ë¥¼ ì¶”ê°€í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "%s (ì„)를 위해 새 íŠ¸ëž™ì„ ë§Œë“¤ê³ í‚¤ë¥¼ ì‚½ìž…í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "%dê°œì˜ ìƒˆ íŠ¸ëž™ì„ ìƒì„±í•˜ê³ 키를 ì¶”ê°€í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "%dê°œì˜ ìƒˆ íŠ¸ëž™ì„ ìƒì„±í•˜ê³ 키를 ì‚½ìž…í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/animation_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "ìƒì„±" @@ -240,7 +239,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 í¬ê¸° ì¡°ì ˆ" #: editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 함수 트랙 추가" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 호출 트랙 추가" #: editor/animation_editor.cpp msgid "Animation zoom." @@ -292,7 +291,7 @@ msgstr "개별 키를 í´ë¦í•¨ìœ¼ë¡œì¨ 편집 활성화." #: editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "ì• ë‹ˆë©”ì´ì…˜ 최ì í™”" +msgstr "ì• ë‹ˆë©”ì´ì…˜. 최ì í™”" #: editor/animation_editor.cpp msgid "Max. Linear Error:" @@ -312,7 +311,8 @@ msgstr "최ì í™”" #: editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." -msgstr "ì• ë‹ˆë©”ì´ì…˜ íŽ¸ì§‘ì„ ìœ„í•´ì„œëŠ” 씬ì—서 AnimationPlayer를 ì„ íƒí•´ì•¼ 합니다." +msgstr "" +"ì• ë‹ˆë©”ì´ì…˜ íŽ¸ì§‘ì„ ìœ„í•´ì„œëŠ” 씬 트리ì—서 AnimationPlayer를 ì„ íƒí•´ì•¼ 합니다." #: editor/animation_editor.cpp msgid "Key" @@ -320,7 +320,7 @@ msgstr "키" #: editor/animation_editor.cpp msgid "Transition" -msgstr "ì „í™˜" +msgstr "변화" #: editor/animation_editor.cpp msgid "Scale Ratio:" @@ -379,14 +379,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d 회 êµì²´ë¨." #: editor/code_editor.cpp -msgid "Replace" -msgstr "바꾸기" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "ì „ì²´ 바꾸기" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„" @@ -395,48 +387,16 @@ msgid "Whole Words" msgstr "ì „ì²´ 단어" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "ì„ íƒì˜ì—ë§Œ" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "검색" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "찾기" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "다ìŒ" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "ì°¾ì„ ìˆ˜ 없습니다!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "으로 바꿈" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "뒤로" +msgid "Replace" +msgstr "바꾸기" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "변경 시 알림" +msgid "Replace All" +msgstr "ì „ì²´ 바꾸기" #: editor/code_editor.cpp -msgid "Skip" -msgstr "건너뛰기" +msgid "Selection Only" +msgstr "ì„ íƒ ì˜ì—ë§Œ" #: editor/code_editor.cpp msgid "Zoom In" @@ -460,14 +420,14 @@ 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 target " "Node." msgstr "" -"타겟 메소드를 ì°¾ì„ ìˆ˜ 없습니다! ìœ íš¨í•œ 메소드를 ì§€ì •í•˜ê±°ë‚˜, 타겟 ë…¸ë“œì— ìŠ¤í¬" +"ëŒ€ìƒ ë©”ì„œë“œë¥¼ ì°¾ì„ ìˆ˜ 없습니다! ìœ íš¨í•œ 메서드를 ì§€ì •í•˜ê±°ë‚˜, ëŒ€ìƒ ë…¸ë“œì— ìŠ¤í¬" "립트를 추가하세요." #: editor/connections_dialog.cpp @@ -538,9 +498,8 @@ msgid "Connecting Signal:" msgstr "ì‹œê·¸ë„ ì—°ê²°:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "'%s'를 '%s'ì— ì—°ê²°" +msgstr "'%s'와 '%s'ì˜ ì—°ê²° í•´ì œ" #: editor/connections_dialog.cpp msgid "Connect.." @@ -556,9 +515,17 @@ msgid "Signals" msgstr "시그ë„" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "%s로 타입 변경" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "변경" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "새로 만들기" +msgstr "새 %s ìƒì„±" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -601,7 +568,7 @@ msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" -"씬 '%s'ì´(ê°€) 현재 편집 중입니다.\n" +"씬 '%s'(ì´)ê°€ 현재 편집 중입니다.\n" "다시 로드 í• ë•Œ 변경 사í•ì´ ì ìš©ë©ë‹ˆë‹¤." #: editor/dependency_editor.cpp @@ -637,7 +604,7 @@ msgstr "깨진 종ì†ì„± ìˆ˜ì •" #: editor/dependency_editor.cpp msgid "Dependency Editor" -msgstr "ì¢…ì† ê´€ê³„ 편집기" +msgstr "ì¢…ì† ê´€ê³„ ì—디터" #: editor/dependency_editor.cpp msgid "Search Replacement Resource:" @@ -668,8 +635,8 @@ msgstr "" "ì •ë§ë¡œ ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ? (ë˜ëŒë¦¬ê¸° 불가)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "ì œê±°í• ìˆ˜ 없습니다:\n" +msgid "Cannot remove:" +msgstr "ì œê±°í• ìˆ˜ 없습니다:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -677,7 +644,7 @@ msgstr "로드 중 ì—러:" #: editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "없어진 ì¢…ì† ê´€ê³„ ë•Œë¬¸ì— ì”¬ì„ ë¡œë“œí• ìˆ˜ 없습니다:" +msgstr "ì¢…ì† ê´€ê³„ë¥¼ ì°¾ì„ ìˆ˜ 없어 씬를 ë¡œë“œí• ìˆ˜ 없습니다:" #: editor/dependency_editor.cpp editor/editor_node.cpp msgid "Open Anyway" @@ -751,9 +718,9 @@ msgstr "프로ì 트 창립ìž" msgid "Lead Developer" msgstr "리드 개발ìž" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "프로ì 트 ë§¤ë‹ˆì €" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "프로ì 트 ë§¤ë‹ˆì € " #: editor/editor_about.cpp msgid "Developers" @@ -824,11 +791,11 @@ 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" -msgstr "ì–´ì…‹ ì••ì¶•í•´ì œ" +msgstr "ì—ì…‹ ì••ì¶•í•´ì œ" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package Installed Successfully!" @@ -840,7 +807,7 @@ msgid "Success!" msgstr "성공!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "설치" @@ -861,9 +828,8 @@ msgid "Rename Audio Bus" msgstr "오디오 버스 ì´ë¦„ 변경" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "오디오 버스 솔로 í† ê¸€" +msgstr "오디오 버스 볼륨 바꾸기" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -895,7 +861,7 @@ msgstr "버스 ì´íŽ™íŠ¸ ì‚ì œ" #: editor/editor_audio_buses.cpp msgid "Audio Bus, Drag and Drop to rearrange." -msgstr "오디오 버스, 드래그 ë° ë“œë¡ìœ¼ë¡œ 재배치하세요." +msgstr "오디오 버스, 드래그 ë° ë“œëžìœ¼ë¡œ 재배치하세요." #: editor/editor_audio_buses.cpp msgid "Solo" @@ -928,7 +894,7 @@ msgstr "ì´íŽ™íŠ¸ ì‚ì œ" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "ìŒì„±" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1044,11 +1010,11 @@ msgstr "리소스 경로가 아닙니다." #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "ì˜¤í† ë¡œë“œ 추가" +msgstr "ì˜¤í† ë¡œë“œ 추가" #: editor/editor_autoload_settings.cpp msgid "Autoload '%s' already exists!" -msgstr "ìžë™ë¡œë“œì— '%s'ì´(ê°€) ì´ë¯¸ 존재합니다!" +msgstr "ì˜¤í† ë¡œë“œì— '%s'ì´(ê°€) ì´ë¯¸ 존재합니다!" #: editor/editor_autoload_settings.cpp msgid "Rename Autoload" @@ -1056,7 +1022,7 @@ msgstr "ì˜¤í† ë¡œë“œ ì´ë¦„ 변경" #: editor/editor_autoload_settings.cpp msgid "Toggle AutoLoad Globals" -msgstr "ìžë™ë¡œë“œ 글로벌 í† ê¸€" +msgstr "ì˜¤í† ë¡œë“œ 글로벌 í† ê¸€" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" @@ -1105,13 +1071,12 @@ msgid "Updating scene.." msgstr "씬 ì—…ë°ì´íЏ 중.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(비었ìŒ)" +msgstr "[비었ìŒ]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ì €ìž¥ë˜ì§€ 않ìŒ]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1148,11 +1113,11 @@ msgstr "íŒŒì¼ ì €ìž¥ 중:" #: editor/editor_export.cpp msgid "Packing" -msgstr "패킹중" +msgstr "패킹 중" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:\n" +msgid "Template file not found:" +msgstr "í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1192,7 +1157,7 @@ msgstr "íŒŒì¼ ì—´ê¸°" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "íŒŒì¼ ì—´ê¸°" +msgstr "여러 íŒŒì¼ ì—´ê¸°" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "Open a Directory" @@ -1275,7 +1240,7 @@ msgstr "소스 조사" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" -msgstr "ì–´ì…‹ (다시) ê°€ì ¸ì˜¤ê¸°" +msgstr "ì—ì…‹ (다시) ê°€ì ¸ì˜¤ê¸°" #: editor/editor_help.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp @@ -1320,11 +1285,11 @@ msgstr "멤버:" #: editor/editor_help.cpp msgid "Public Methods" -msgstr "공개 메소드" +msgstr "공개 메서드" #: editor/editor_help.cpp msgid "Public Methods:" -msgstr "공개 함수:" +msgstr "공개 메서드:" #: editor/editor_help.cpp msgid "GUI Theme Items" @@ -1340,15 +1305,15 @@ msgstr "시그ë„:" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "Enumerations" +msgstr "ì—´ê±°" #: editor/editor_help.cpp msgid "Enumerations:" -msgstr "Enumerations:" +msgstr "ì—´ê±°:" #: editor/editor_help.cpp msgid "enum " -msgstr "enum " +msgstr "ì´ë„˜(ì—´ê±°) " #: editor/editor_help.cpp msgid "Constants" @@ -1363,6 +1328,20 @@ msgid "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 "" +"현재 ì´ í´ëž˜ìŠ¤ì— ëŒ€í•œ íŠœí† ë¦¬ì–¼ì´ ì—†ìŠµë‹ˆë‹¤. [color=$color][url=$url]ë„ì›€ì„ ì£¼" +"시거나[/url][/color] [color=$color][url=$url2]ìš”ì² í•˜ì‹¤ 수[/url][/color] 있습" +"니다." + +#: editor/editor_help.cpp msgid "Properties" msgstr "ì†ì„±" @@ -1384,7 +1363,7 @@ msgstr "메서드" #: editor/editor_help.cpp msgid "Method Description:" -msgstr "함수 설명:" +msgstr "메서드 설명:" #: editor/editor_help.cpp msgid "" @@ -1398,6 +1377,10 @@ msgstr "" msgid "Search Text" msgstr "ë¬¸ìž ê²€ìƒ‰" +#: editor/editor_help.cpp +msgid "Find" +msgstr "찾기" + #: editor/editor_log.cpp msgid "Output:" msgstr "ì¶œë ¥:" @@ -1409,6 +1392,10 @@ msgstr "ì¶œë ¥:" msgid "Clear" msgstr "지우기" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "ì¶œë ¥ 지우기" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "리소스 ì €ìž¥ 중 ì—러!" @@ -1417,8 +1404,8 @@ msgstr "리소스 ì €ìž¥ 중 ì—러!" msgid "Save Resource As.." msgstr "리소스를 다른 ì´ë¦„으로 ì €ìž¥.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "ì•Œê² ìŠµë‹ˆë‹¤.." @@ -1472,9 +1459,11 @@ msgstr "ì´ ìž‘ì—…ì€ íŠ¸ë¦¬ 루트 ì—†ì´ëŠ” 불가합니다." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"ì”¬ì„ ì €ìž¥í• ìˆ˜ 없습니다. ì•„ë§ˆë„ ì¢…ì† ê´€ê³„ê°€ 만족스럽지 ì•Šì„ ìˆ˜ 있습니다." +"ì”¬ì„ ì €ìž¥í• ìˆ˜ 없습니다. ì•„ë§ˆë„ ì¢…ì† ê´€ê³„(ì¸ìŠ¤í„´ìŠ¤ ë˜ëŠ” ìƒì†)ê°€ 만족스럽지 않" +"ì„ ìˆ˜ 있습니다." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1482,11 +1471,11 @@ msgstr "리소스 로드 실패." #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "ë³‘í•©í• ë©”ì‰¬ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다!" +msgstr "ë³‘í•©í• ë©”ì‹œ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다!" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ ì €ìž¥ 중 ì—러!" +msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ ì €ìž¥ 중 ì—러!" #: editor/editor_node.cpp msgid "Can't load TileSet for merging!" @@ -1535,7 +1524,7 @@ 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 @@ -1607,7 +1596,7 @@ msgid "" "category." msgstr "" "ë©”ì¸ ì”¬ì´ ì§€ì •ë˜ì§€ 않았습니다. ì„ íƒí•˜ì‹œê² 습니까?\n" -"ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'Application' í•목ì—서 ë³€ê²½í• ìˆ˜ 있습니다." +"ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'application' í•목ì—서 ë³€ê²½í• ìˆ˜ 있습니다." #: editor/editor_node.cpp msgid "" @@ -1616,7 +1605,7 @@ msgid "" "category." msgstr "" "ì„ íƒí•œ '%s' ì”¬ì´ ì¡´ìž¬í•˜ì§€ 않습니다. 다시 ì„ íƒí•˜ì‹œê² 습니까?\n" -"ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'Application' í•목ì—서 ë³€ê²½í• ìˆ˜ 있습니다." +"ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'application' í•목ì—서 ë³€ê²½í• ìˆ˜ 있습니다." #: editor/editor_node.cpp msgid "" @@ -1625,7 +1614,7 @@ msgid "" "category." msgstr "" "ì„ íƒí•œ '%s' ì”¬ì´ ì”¬ 파ì¼ì´ 아닙니다. 다시 ì„ íƒí•˜ì‹œê² 습니까?\n" -"ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'Application' í•목ì—서 ë³€ê²½í• ìˆ˜ 있습니다." +"ë‚˜ì¤‘ì— \"프로ì 트 ì„¤ì •\"ì˜ 'application' í•목ì—서 ë³€ê²½í• ìˆ˜ 있습니다." #: editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." @@ -1681,7 +1670,7 @@ msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다." #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기" +msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -1767,14 +1756,14 @@ msgstr "확장기능 스í¬ë¦½íŠ¸ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다: '%s'." msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." msgstr "" -"해당 경로ì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다: '%s' 기본 íƒ€ìž…ì´ " +"해당 경로ì—서 확장기능 스í¬ë¦½íŠ¸ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다: '%s' 기본 íƒ€ìž…ì´ " "EditorPluginì´ ì•„ë‹™ë‹ˆë‹¤." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." msgstr "" -"해당 경로ì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다: '%s' 스í¬ë¦½íŠ¸ê°€ tool 모드" -"ê°€ 아닙니다." +"해당 경로ì—서 확장기능 스í¬ë¦½íŠ¸ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다: '%s' 스í¬ë¦½íŠ¸ê°€ tool 모" +"드가 아닙니다." #: editor/editor_node.cpp msgid "" @@ -1799,7 +1788,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "'%s' ì”¬ì˜ ì¢…ì† í•ëª©ì´ ê¹¨ì ¸ìžˆìŠµë‹ˆë‹¤.:" +msgstr "'%s' ì”¬ì˜ ì¢…ì† í•ëª©ì´ ê¹¨ì ¸ìžˆìŠµë‹ˆë‹¤:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" @@ -1816,7 +1805,7 @@ msgstr "ë ˆì´ì•„웃 ì‚ì œ" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp msgid "Default" -msgstr "Default" +msgstr "기본" #: editor/editor_node.cpp msgid "Switch Scene Tab" @@ -1836,11 +1825,11 @@ msgstr "%dê°œ 추가 파ì¼" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "Dock 위치" +msgstr "ë… ìœ„ì¹˜" #: editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "초집중 모드" +msgstr "집중 모드" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." @@ -1908,7 +1897,7 @@ msgstr "변환.." #: editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬.." +msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬.." #: editor/editor_node.cpp msgid "TileSet.." @@ -1985,8 +1974,8 @@ msgid "" "On Android, deploy will use the USB cable for faster performance. This " "option speeds up testing for games with a large footprint." msgstr "" -"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, 내보내기나 ë°°í¬ëŠ” ìµœì†Œí•œì˜ ì‹¤í–‰íŒŒì¼ì„ ìƒì„±í•©" -"니다.\n" +"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, 내보내기나 ë°°í¬ëŠ” ìµœì†Œí•œì˜ ì‹¤í–‰ 파ì¼ì„ ìƒì„±" +"합니다.\n" "íŒŒì¼ ì‹œìŠ¤í…œì€ ë„¤íŠ¸ì›Œí¬ë¥¼ 통해서 ì—디터 ìƒì˜ 프로ì 트가 ì œê³µí•©ë‹ˆë‹¤.\n" "안드로ì´ë“œì˜ 경우, USB ì¼€ì´ë¸”ì„ ì‚¬ìš©í•˜ì—¬ ë°°í¬í• 경우 ë” ë¹ ë¥¸ í¼í¬ë¨¼ìŠ¤ë¥¼ ì œê³µ" "합니다. ì´ ì˜µì…˜ì€ í° ì„¤ì¹˜ ìš©ëŸ‰ì„ ìš”êµ¬í•˜ëŠ” ê²Œìž„ì˜ í…ŒìŠ¤íŠ¸ë¥¼ ë¹ ë¥´ê²Œ í• ìˆ˜ 있습니" @@ -1994,7 +1983,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "Collision Shape ë³´ì´ê¸°" +msgstr "ì¶©ëŒ ëª¨ì–‘ ë³´ì´ê¸°" #: editor/editor_node.cpp msgid "" @@ -2006,14 +1995,14 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "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 @@ -2027,8 +2016,8 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ì—디터ìƒì˜ ì”¬ì˜ ë³€ê²½ì‚¬í•ì´ ì‹¤í–‰ì¤‘ì¸ ê²Œìž„ì— " -"ë°˜ì˜ë©ë‹ˆë‹¤.\n" +"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ì—디터 ìƒì˜ ì”¬ì˜ ë³€ê²½ì‚¬í•ì´ ì‹¤í–‰ ì¤‘ì¸ ê²Œìž„" +"ì— ë°˜ì˜ë©ë‹ˆë‹¤.\n" "ê¸°ê¸°ì— ì›ê²©ìœ¼ë¡œ 사용ë˜ëŠ” 경우, ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œê³¼ 함께하면 ë”ìš± 효과ì ìž…" "니다." @@ -2054,7 +2043,7 @@ msgstr "ì—디터" #: editor/editor_node.cpp editor/settings_config_dialog.cpp msgid "Editor Settings" -msgstr "편집기 ì„¤ì •" +msgstr "ì—디터 ì„¤ì •" #: editor/editor_node.cpp msgid "Editor Layout" @@ -2076,6 +2065,13 @@ msgstr "ë„움ë§" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "검색" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "온ë¼ì¸ 문서" @@ -2263,7 +2259,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" @@ -2275,7 +2271,7 @@ msgstr "ì´ì „ ì—디터 열기" #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" -msgstr "메쉬 미리보기 ìƒì„± 중" +msgstr "메시 미리보기 ìƒì„± 중" #: editor/editor_plugin.cpp msgid "Thumbnail.." @@ -2347,12 +2343,10 @@ msgid "Frame #:" msgstr "í”„ë ˆìž„ #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "시간:" +msgstr "시간" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" msgstr "호출" @@ -2370,7 +2364,7 @@ msgstr "" #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "로ì§ì„ _run() í•¨ìˆ˜ì•ˆì— ìž‘ì„±í•˜ì„¸ìš”." +msgstr "로ì§ì„ _run() ë©”ì„œë“œì•ˆì— ìž‘ì„±í•˜ì„¸ìš”." #: editor/editor_run_script.cpp msgid "There is an edited scene already." @@ -2390,7 +2384,7 @@ msgstr "스í¬ë¦½íŠ¸ë¥¼ ì‹¤í–‰í• ìˆ˜ 없습니다:" #: editor/editor_run_script.cpp msgid "Did you forget the '_run' method?" -msgstr "'_run' 함수를 잊으셨습니까?" +msgstr "'_run' 메서드를 잊으셨습니까?" #: editor/editor_settings.cpp msgid "Default (Same as Editor)" @@ -2461,8 +2455,8 @@ msgid "No version.txt found inside templates." msgstr "í…œí”Œë¦¿ì— version.txt를 ì°¾ì„ ìˆ˜ 없습니다." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "템플릿 경로 ìƒì„± ì—러:\n" +msgid "Error creating path for templates:" +msgstr "템플릿 경로 ìƒì„± ì—러:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2497,7 +2491,6 @@ msgstr "ì‘답 ì—†ìŒ." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "ìš”ì² ì‹¤íŒ¨." @@ -2545,7 +2538,6 @@ msgid "Connecting.." msgstr "연결중.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "ì—°ê²°í• ìˆ˜ ì—†ìŒ" @@ -2619,11 +2611,8 @@ msgid "View items as a list" msgstr "리스트로 보기" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "ìƒíƒœ: íŒŒì¼ ê°€ì ¸ì˜¤ê¸° 실패. 파ì¼ì„ ìˆ˜ì •í•˜ê³ \"다시 ê°€ì ¸ì˜¤ê¸°\"를 수행하세요." #: editor/filesystem_dock.cpp @@ -2631,21 +2620,20 @@ msgid "Cannot move/rename resources root." msgstr "리소스 루트를 옮기거나 ì´ë¦„ì„ ë³€ê²½í• ìˆ˜ 없습니다." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "í´ë”를 ìžì‹ ì˜ í•˜ìœ„ë¡œ ì´ë™í• 수 없습니다.\n" +msgid "Cannot move a folder into itself." +msgstr "í´ë”를 ìžì‹ ì˜ í•˜ìœ„ë¡œ ì´ë™í• 수 없습니다." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "ì´ë™ ì—러:\n" +msgid "Error moving:" +msgstr "ì´ë™ ì—러:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "로드 중 ì—러:" +msgid "Error duplicating:" +msgstr "ë³µì œ 중 ì—러:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "종ì†í•ëª©ì„ ì—…ë°ì´íЏ í• ìˆ˜ 없습니다:\n" +msgid "Unable to update dependencies:" +msgstr "종ì†í•ëª©ì„ ì—…ë°ì´íЏ í• ìˆ˜ 없습니다:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2676,14 +2664,12 @@ msgid "Renaming folder:" msgstr "í´ë”명 변경:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "ë³µì œ" +msgstr "íŒŒì¼ ë³µì œ 중:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "í´ë”명 변경:" +msgstr "ë³µì œ ì¤‘ì¸ í´ë”:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2702,9 +2688,8 @@ msgid "Move To.." msgstr "ì´ë™.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "씬 열기" +msgstr "씬(들) 열기" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2719,9 +2704,8 @@ msgid "View Owners.." msgstr "ì†Œìœ ìž ë³´ê¸°.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "ë³µì œ" +msgstr "ë³µì œ.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2818,14 +2802,12 @@ msgid "Importing Scene.." msgstr "씬 ê°€ì ¸ì˜¤ëŠ” 중.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "ë¼ì´íŠ¸ë§µìœ¼ë¡œ ì „ì†¡:" +msgstr "ë¼ì´íŠ¸ë§µ ìƒì„± 중" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "AABB ìƒì„± 중" +msgstr "메시를 위해 ìƒì„± 중: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -2939,7 +2921,7 @@ msgstr "새 ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "New Anim" +msgstr "새 ì• ë‹ˆë©”ì´ì…˜" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" @@ -2956,7 +2938,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ì œê±°" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "ì—러: ìœ ìš”í•˜ì§€ ì•Šì€ ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„!" +msgstr "ì—러: ìœ íš¨í•˜ì§€ ì•Šì€ ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" @@ -2974,11 +2956,11 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 추가하기" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "ë‹¤ìŒ ì—°ê²° 변경" +msgstr "ë¸”ë Œë“œ 다ìŒìœ¼ë¡œ 변경ë¨" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "ì—°ê²° 시간 변경" +msgstr "ë¸”ë Œë“œ 시간 변경" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" @@ -3014,7 +2996,7 @@ msgstr "ì„ íƒëœ ì• ë‹ˆë©”ì´ì…˜ì„ 현재 위치ì—서 거꾸로 재ìƒ. (A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "ì„ íƒëœ ì• ë‹ˆë©”ì´ì…˜ì„ ëì—서 거꾸로 재ìƒ. (Shift+A)" +msgstr "ì„ íƒëœ ì• ë‹ˆë©”ì´ì…˜ì„ ëì—서 거꾸로 재ìƒ. (시프트+A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" @@ -3022,7 +3004,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ìž¬ìƒ ì •ì§€. (S)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "ì„ íƒëœ ì• ë‹ˆë©”ì´ì…˜ì„ 처ìŒë¶€í„° 재ìƒ. (Shift+D)" +msgstr "ì„ íƒëœ ì• ë‹ˆë©”ì´ì…˜ì„ 처ìŒë¶€í„° 재ìƒ. (시프트+D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" @@ -3114,7 +3096,7 @@ msgstr "변경사í•ë§Œ" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "ê°•ì œ í°ìƒ‰ ì¡°ì ˆ" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" @@ -3191,7 +3173,7 @@ msgstr "재시작 (ì´ˆ):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Random Restart (s):" -msgstr "ëžœë¤ ìž¬ì‹œìž‘ (ì´ˆ):" +msgstr "ìž„ì˜ ìž¬ì‹œìž‘ (ì´ˆ):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Start!" @@ -3280,7 +3262,7 @@ msgstr "시간 íƒìƒ‰ 노드" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Transition Node" -msgstr "ì „í™˜ 노드" +msgstr "변화 노드" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." @@ -3294,6 +3276,10 @@ msgstr "노드 í•„í„° 편집" msgid "Filters.." msgstr "í•„í„°.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 트리" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "무료" @@ -3344,11 +3330,11 @@ msgstr "ë°›ìŒ:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Failed sha256 hash check" -msgstr "sha256 해시 ì²´í¬ ì‹¤íŒ¨" +msgstr "sha256 해시 í™•ì¸ ì‹¤íŒ¨" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "ì–´ì…‹ 다운로드 ì—러:" +msgstr "ì—ì…‹ 다운로드 ì—러:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Fetching:" @@ -3376,7 +3362,7 @@ msgstr "다운로드 ì—러" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" -msgstr "ì´ ì–´ì…‹ì˜ ë‹¤ìš´ë¡œë“œê°€ ì´ë¯¸ 진행중입니다!" +msgstr "ì´ ì—ì…‹ì˜ ë‹¤ìš´ë¡œë“œê°€ ì´ë¯¸ 진행중입니다!" #: editor/plugins/asset_library_editor_plugin.cpp msgid "first" @@ -3443,23 +3429,28 @@ 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 ì„¤ì •" +"ì—서 ì €ìž¥ 경로를 ì§€ì •í•˜ì„¸ìš”." #: 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 "" +msgstr "ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ ìƒì„±ì— 실패했습니다, 경로가 쓸 수 있는지 확ì¸í•˜ì„¸ìš”." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "ë¼ì´íŠ¸ë§µìœ¼ë¡œ ì „ì†¡:" +msgstr "ë¼ì´íŠ¸ë§µ 굽기" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "미리보기" @@ -3559,11 +3550,11 @@ msgstr "알트+드래그: ì´ë™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." -msgstr "'v'키는 피벗 ì´ë™, '쉬프트+v'키는 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)." +msgstr "'v'키로 피벗 변경, '시프트+v'키로 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" -msgstr "알트+ìš°í´ë¦: 겹친 오브ì 트 ì„ íƒ" +msgstr "알트+ìš°í´ë¦: 겹친 ëª©ë¡ ì„ íƒ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Mode" @@ -3670,7 +3661,7 @@ msgstr "Bones 만들기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" -msgstr "Bones ì—†ì• ê¸°" +msgstr "Bones 지우기" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -3682,7 +3673,7 @@ msgstr "IK ì²´ì¸ ë§Œë“¤ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "IK ì²´ì¸ ì—†ì• ê¸°" +msgstr "IK ì²´ì¸ ì§€ìš°ê¸°" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -3708,11 +3699,11 @@ 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 "Layout" @@ -3740,7 +3731,7 @@ msgstr "í¬ì¦ˆ ì •ë¦¬" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag pivot from mouse position" -msgstr "" +msgstr "마우스로 중심ì 드래그" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set pivot at mouse position" @@ -3762,6 +3753,14 @@ msgstr "%s 추가" msgid "Adding %s..." msgstr "%s 추가중..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3773,11 +3772,6 @@ msgid "Error instancing scene from %s" msgstr "'%s' 로부터 씬 ì¸ìŠ¤í„´ìŠ¤ 중 ì—러" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "ì´ ìž‘ì—…ì€ í•˜ë‚˜ì˜ ì„ íƒëœ 노드를 필요로 합니다." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "기본 타입 변경" @@ -3786,7 +3780,7 @@ msgid "" "Drag & drop + Shift : Add node as sibling\n" "Drag & drop + Alt : Change node type" msgstr "" -"드래그 & ë“œëž + 쉬프트 : í˜•ì œ 노드로 추가\n" +"드래그 & ë“œëž + 시프트 : í˜•ì œ 노드로 추가\n" "드래그 & ë“œëž + 알트 : 노드 타입 변경" #: editor/plugins/collision_polygon_editor_plugin.cpp @@ -3821,23 +3815,23 @@ msgstr "씬으로부터 ê°±ì‹ í•˜ê¸°" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat0" -msgstr "" +msgstr "플랫0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat1" -msgstr "" +msgstr "플랫1" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease in" -msgstr "Ease in" +msgstr "완화 in" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease out" -msgstr "Ease out" +msgstr "완화 out" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "" +msgstr "스무스스í…" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" @@ -3877,15 +3871,15 @@ 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 "쉬프트키를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ 탄ì 트를 개별ì 으로 편집 가능" +msgstr "시프트키를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ 탄ì 트를 개별ì 으로 편집 가능" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "GI Probe 굽기" +msgstr "GI 프로브 굽기" #: editor/plugins/gradient_editor_plugin.cpp msgid "Add/Remove Color Ramp Point" @@ -3906,7 +3900,7 @@ msgstr "í•목" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "í•목 ëª©ë¡ íŽ¸ì§‘ê¸°" +msgstr "í•목 ëª©ë¡ ì—디터" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "" @@ -3958,39 +3952,39 @@ msgstr "씬 루트ì—서는 í• ìˆ˜ 없습니다!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" -msgstr "Trimesh Shape 만들기" +msgstr "Trimesh 모양 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" -msgstr "Convex Shape 만들기" +msgstr "Convex 모양 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "네비게ì´ì…˜ 메쉬 만들기" +msgstr "네비게ì´ì…˜ 메시 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "í¬í•¨ëœ 메시는 ArrayMesh íƒ€ìž…ì— ì†í•˜ì§€ 않습니다." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "UV 펼치기를 실패했습니다, 메시가 다양하진 않나요?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "ë””ë²„ê·¸í• ë©”ì‹œê°€ 없습니다." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "모ë¸ì´ ì´ ë ˆì´ì–´ì— UV를 ì§€ë‹ˆê³ ìžˆì§€ 않습니다" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "MeshInstanceì— ë©”ì‰¬ê°€ 없습니다!" +msgstr "MeshInstanceì— ë©”ì‹œê°€ 없습니다!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "ë©”ì‰¬ì— ì•„ì›ƒë¼ì¸ì„ 만들기 위한 서피스가 없습니다!" +msgstr "ë©”ì‹œì— ì™¸ê³½ì„ ì„ ë§Œë“¤ê¸° 위한 서피스가 없습니다!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -4002,7 +3996,7 @@ msgstr "ì™¸ê³½ì„ ë§Œë“¤ê¸°" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "메쉬" +msgstr "메시" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" @@ -4014,33 +4008,31 @@ msgstr "Convex Static Body 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" -msgstr "Trimesh Collision Sibling 만들기" +msgstr "Trimesh ì¶©ëŒ í˜•ì œ 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Collision Sibling" -msgstr "Convex Collision Sibling 만들기" +msgstr "Convex ì¶©ëŒ í˜•ì œ 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "ì™¸ê³½ì„ ë©”ì‰¬ 만들기.." +msgstr "ì™¸ê³½ì„ ë©”ì‹œ 만들기.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "보기" +msgstr "UV1 보기" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "보기" +msgstr "UV2 보기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "ë¼ì´íŠ¸ë§µ/AO를 위한 UV2 언랩" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "ì™¸ê³½ì„ ë©”ì‰¬ 만들기" +msgstr "ì™¸ê³½ì„ ë©”ì‹œ 만들기" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" @@ -4048,23 +4040,23 @@ msgstr "ì™¸ê³½ì„ í¬ê¸°:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "소스 메쉬가 ì§€ì •ë˜ì§€ 않았습니다 (ê·¸ë¦¬ê³ ë…¸ë“œì— MultiMeshê°€ 없습니다)." +msgstr "소스 메시가 ì§€ì •ë˜ì§€ 않았습니다 (ê·¸ë¦¬ê³ ë…¸ë“œì— MultiMeshê°€ 없습니다)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "소스 메쉬가 ì§€ì •ë˜ì§€ 않았습니다 (ê·¸ë¦¬ê³ MultiMeshì— ë©”ì‰¬ê°€ 없습니다)." +msgstr "소스 메시가 ì§€ì •ë˜ì§€ 않았습니다 (ê·¸ë¦¬ê³ MultiMeshì— ë©”ì‹œê°€ 없습니다)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "소스 메쉬가 ìœ íš¨í•˜ì§€ 않습니다 (ìœ íš¨í•˜ì§€ ì•Šì€ ê²½ë¡œ)." +msgstr "소스 메시가 ìœ íš¨í•˜ì§€ 않습니다 (ìœ íš¨í•˜ì§€ ì•Šì€ ê²½ë¡œ)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "소스 메쉬가 ìœ íš¨í•˜ì§€ 않습니다 (MeshInstanceê°€ 아닙니다)." +msgstr "소스 메시가 ìœ íš¨í•˜ì§€ 않습니다 (MeshInstanceê°€ 아닙니다)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "소스 메쉬가 ìœ íš¨í•˜ì§€ 않습니다 (메쉬 리소스가 없습니다)." +msgstr "소스 메시가 ìœ íš¨í•˜ì§€ 않습니다 (메시 리소스가 없습니다)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -4076,7 +4068,7 @@ msgstr "서피스 소스가 ìœ íš¨í•˜ì§€ 않습니다 (ìœ íš¨í•˜ì§€ ì•Šì€ ê²½ë¡ #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." -msgstr "서피스 소스가 ìœ íš¨í•˜ì§€ 않습니다 (지오미트리 ì—†ìŒ)." +msgstr "서피스 소스가 ìœ íš¨í•˜ì§€ 않습니다 (지오메트리 ì—†ìŒ)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no faces)." @@ -4092,7 +4084,7 @@ msgstr "ì˜ì—ì„ ë§¤í•‘ í• ìˆ˜ 없습니다." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "소스 메쉬 ì„ íƒ:" +msgstr "소스 메시 ì„ íƒ:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" @@ -4112,7 +4104,7 @@ msgstr "ëŒ€ìƒ ì„œí”¼ìŠ¤:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "소스 메쉬:" +msgstr "소스 메시:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" @@ -4128,7 +4120,7 @@ msgstr "Zì¶•" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "ë©”ì‰¬ì˜ ìœ„ìª½ ì¶•:" +msgstr "ë©”ì‹œì˜ ìœ„ìª½ ì¶•:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -4151,12 +4143,12 @@ msgid "Bake!" msgstr "굽기!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "네비게ì´ì…˜ 메쉬 만들기.\n" +msgid "Bake the navigation mesh." +msgstr "네비게ì´ì…˜ 메시 만들기." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "네비게ì´ì…˜ 메쉬 지우기." +msgstr "네비게ì´ì…˜ 메시 지우기." #: editor/plugins/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -4164,7 +4156,7 @@ msgstr "구성 ì„¤ì • 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Calculating grid size..." -msgstr "그리드 사ì´ì¦ˆ 계산 중..." +msgstr "그리드 í¬ê¸° 계산 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating heightfield..." @@ -4176,7 +4168,7 @@ msgstr "걷기 가능한 트ë¼ì´ì•µê¸€ 표시 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Constructing compact heightfield..." -msgstr "" +msgstr "ì••ì¶•ëœ Heightfield를 구성 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Eroding walkable area..." @@ -4192,11 +4184,11 @@ msgstr "ìœ¤ê³½ì„ ìƒì„± 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "í´ë¦¬ 메쉬 ìƒì„± 중..." +msgstr "í´ë¦¬ 메시 ìƒì„± 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "네ì´í‹°ë¸Œ 네비게ì´ì…˜ 메쉬로 변환 중..." +msgstr "네ì´í‹°ë¸Œ 네비게ì´ì…˜ 메시로 변환 중..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" @@ -4204,7 +4196,7 @@ msgstr "네비게ì´ì…˜ 메시 ìƒì„±ê¸° ì„¤ì •:" #: editor/plugins/navigation_mesh_generator.cpp msgid "Parsing Geometry..." -msgstr "지오미트리 ë¶„ì„ ì¤‘..." +msgstr "지오메트리 ë¶„ì„ ì¤‘..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Done!" @@ -4221,7 +4213,7 @@ msgstr "AABB ìƒì„± 중" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" -msgstr "" +msgstr "ì˜¤ì§ ParticlesMaterial 프로세스 메테리얼 ì•ˆì˜ í¬ì¸íŠ¸ë§Œ ì„¤ì • 가능" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Error loading image:" @@ -4233,7 +4225,7 @@ msgstr "ì´ë¯¸ì§€ì— 투명ë„ê°€ 128보다 í° í”½ì…€ì´ ì—†ìŠµë‹ˆë‹¤.." #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" -msgstr "" +msgstr "Visibility Rect를 ìƒì„±" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Load Emission Mask" @@ -4295,7 +4287,7 @@ msgstr "AABB ìƒì„±" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "메쉬로부터 ì—미션 í¬ì¸íЏ 만들기" +msgstr "메시로부터 ì—미션 í¬ì¸íЏ 만들기" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" @@ -4311,11 +4303,11 @@ msgstr "ì—미션 í¬ì¸íЏ:" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" -msgstr "서페ì´ìФ í¬ì¸íЏ" +msgstr "서피스 í¬ì¸íЏ" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "" +msgstr "서피스 í¬ì¸íЏ+ë…¸ë§ (지시ëœ)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" @@ -4366,7 +4358,7 @@ msgstr "í¬ì¸íЏ ì„ íƒ" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Shift+Drag: Select Control Points" -msgstr "쉬푸트+드래그: 컨트롤 í¬ì¸íЏ ì„ íƒ" +msgstr "시프트+드래그: 컨트롤 í¬ì¸íЏ ì„ íƒ" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -4380,7 +4372,7 @@ msgstr "ìš°í´ë¦: í¬ì¸íЏ ì‚ì œ" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" -msgstr "컨트롤 í¬ì¸íЏ ì„ íƒ (쉬프트+드래그)" +msgstr "컨트롤 í¬ì¸íЏ ì„ íƒ (시프트+드래그)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -4444,7 +4436,7 @@ msgstr "UV ë§µ 변형" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" -msgstr "í´ë¦¬ê³¤ 2D UV 편집기" +msgstr "í´ë¦¬ê³¤ 2D UV ì—디터" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Point" @@ -4456,11 +4448,11 @@ msgstr "컨트롤: íšŒì „" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" -msgstr "쉬프트: ì „ì²´ ì´ë™" +msgstr "시프트: ì „ì²´ ì´ë™" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Ctrl: Scale" -msgstr "쉬프트+컨트롤: í¬ê¸° ì¡°ì ˆ" +msgstr "시프트+컨트롤: í¬ê¸° ì¡°ì ˆ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Polygon" @@ -4540,17 +4532,17 @@ msgstr "리소스 로드" msgid "Paste" msgstr "붙여넣기" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "리소스 프리로ë”" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "최근 íŒŒì¼ ì§€ìš°ê¸°" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"변경사í•ì„ ì €ìž¥í•˜ê³ ë‹«ê² ìŠµë‹ˆê¹Œ?\n" -"\"" +msgid "Close and save changes?" +msgstr "변경사í•ì„ ì €ìž¥í•˜ê³ ë‹«ê² ìŠµë‹ˆê¹Œ?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4621,9 +4613,12 @@ msgid "Soft Reload Script" msgstr "스í¬ë¦½íЏ 다시 로드" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "경로 복사" +msgstr "스í¬ë¦½íЏ 경로 복사" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "íŒŒì¼ ì‹œìŠ¤í…œì—서 보기" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4635,7 +4630,7 @@ msgstr "ë‹¤ìŒ ížˆìŠ¤í† ë¦¬" #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "테마 재로드" +msgstr "테마 다시 로드" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" @@ -4814,9 +4809,8 @@ msgid "Clone Down" msgstr "아래로 ë³µì œ" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "ë¼ì¸ 펼치기" +msgstr "ë¼ì¸ 펼치기/ì ‘ê¸°" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -4953,7 +4947,7 @@ msgstr "기본값 변경" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change XForm Uniform" -msgstr "변환 uniform 변경" +msgstr "XForm uniform 변경" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Texture Uniform" @@ -5053,91 +5047,91 @@ msgstr "í¬ê¸°: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "위치 ì´ë™: " +msgstr "ì´ë™ 중: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." msgstr "%së„로 íšŒì „." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "아랫면 보기." +msgid "Keying is disabled (no key inserted)." +msgstr "키가 비활성화 ë˜ì–´ 있습니다 (키가 삽입ë˜ì§€ 않았습니다)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "아랫면" +msgid "Animation Key Inserted." +msgstr "ì• ë‹ˆë©”ì´ì…˜ 키가 삽입ë˜ì—ˆìŠµë‹ˆë‹¤." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "윗면 보기." +msgid "Objects Drawn" +msgstr "ê·¸ë ¤ì§„ 오브ì 트" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "ë’·ë©´ 보기." +msgid "Material Changes" +msgstr "머터리얼 변경" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "ë’·ë©´" +msgid "Shader Changes" +msgstr "ì…°ì´ë” 변경" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "ì •ë©´ 보기." +msgid "Surface Changes" +msgstr "서피스 변경" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "ì •ë©´" +msgid "Draw Calls" +msgstr "드로우 콜" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "왼쪽면 보기." +msgid "Vertices" +msgstr "버틱스" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "왼쪽면" +msgid "FPS" +msgstr "초당 í”„ë ˆìž„" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "오른쪽면 보기." +msgid "Top View." +msgstr "윗면 보기." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "오른쪽면" +msgid "Bottom View." +msgstr "아랫면 보기." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "키가 비활성화 ë˜ì–´ 있습니다 (키가 삽입ë˜ì§€ 않았습니다)." +msgid "Bottom" +msgstr "아랫면" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "ì• ë‹ˆë©”ì´ì…˜ 키가 삽입ë˜ì—ˆìŠµë‹ˆë‹¤." +msgid "Left View." +msgstr "왼쪽면 보기." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "ê·¸ë ¤ì§„ 오브ì 트" +msgid "Left" +msgstr "왼쪽면" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "머터리얼 변경" +msgid "Right View." +msgstr "오른쪽면 보기." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "ì…°ì´ë” 변경" +msgid "Right" +msgstr "오른쪽면" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "서피스 변경" +msgid "Front View." +msgstr "ì •ë©´ 보기." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "드로우 콜" +msgid "Front" +msgstr "ì •ë©´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "버틱스" +msgid "Rear View." +msgstr "ë’·ë©´ 보기." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "초당 í”„ë ˆìž„" +msgid "Rear" +msgstr "ë’·ë©´" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5151,6 +5145,10 @@ msgstr "넹 :(" 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 "Display Normal" msgstr "Normal 표시" @@ -5224,16 +5222,12 @@ msgid "Freelook Speed Modifier" msgstr "ìžìœ 시ì ì†ë„ 변화" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "미리보기" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" -msgstr "변환 다ì´ì–¼ë¡œê·¸" +msgstr "XForm 다ì´ì–¼ë¡œê·¸" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "ì„ íƒ ëª¨ë“œ (Q)\n" +msgid "Select Mode (Q)" +msgstr "ì„ íƒ ëª¨ë“œ (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5243,7 +5237,7 @@ msgid "" msgstr "" "드래그: íšŒì „\n" "알트+드래그: ì´ë™\n" -"알트+ìš°í´ë¦: 겹친 오브ì 트 ì„ íƒ" +"알트+ìš°í´ë¦: 겹친 ëª©ë¡ ì„ íƒ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode (W)" @@ -5255,21 +5249,19 @@ msgstr "íšŒì „ 모드 (E)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode (R)" -msgstr "í¬ê¸°ì¡°ì ˆ 모드 (R)" +msgstr "í¬ê¸° ì¡°ì ˆ 모드 (R)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" msgstr "로컬 좌표" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "í¬ê¸°ì¡°ì ˆ 모드 (R)" +msgstr "로컬 스페ì´ìФ 모드 (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "스냅 모드:" +msgstr "스냅 모드 (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5305,7 +5297,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 키 삽입" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "ì›ì 보기" +msgstr "ì›ì í¬ì»¤ìФ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" @@ -5329,7 +5321,7 @@ msgstr "íšŒì „ 툴" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Scale" -msgstr "í¬ê¸°ì¡°ì ˆ 툴" +msgstr "í¬ê¸° ì¡°ì ˆ 툴" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" @@ -5337,7 +5329,7 @@ msgstr "ìžìœ 시ì í† ê¸€" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform" -msgstr "변환" +msgstr "변형" #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." @@ -5345,7 +5337,7 @@ msgstr "스냅 ì„¤ì •.." #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog.." -msgstr "변환 다ì´ì–¼ë¡œê·¸.." +msgstr "변형 다ì´ì–¼ë¡œê·¸.." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" @@ -5386,7 +5378,7 @@ msgstr "ì„¤ì •" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "ìŠ¤ì¼ˆë ˆí†¤ 기즈모 가시성" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5422,7 +5414,7 @@ msgstr "Z-ì›ê²½ 보기:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" -msgstr "변환 변경" +msgstr "변형 변경" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" @@ -5438,7 +5430,7 @@ msgstr "í¬ê¸° (비율):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Type" -msgstr "변환 타입" +msgstr "변형 타입" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pre" @@ -5512,13 +5504,21 @@ msgstr "ì´ë™ (ì´ì „)" msgid "Move (After)" msgstr "ì´ë™ (ì´í›„)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "스프ë¼ì´íЏ í”„ë ˆìž„" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox 미리보기:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "ìŠ¤íƒ€ì¼ ë°•ìŠ¤" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" -msgstr "êµ¬ì— ì„¤ì •" +msgstr "ì˜ì— ì„¤ì •" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" @@ -5541,14 +5541,17 @@ msgid "Auto Slice" msgstr "ìžë™ ìžë¥´ê¸°" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "오프셋:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "단계:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "간격:" @@ -5558,7 +5561,7 @@ msgstr "í…ìŠ¤ì³ ì˜ì—" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Texture Region Editor" -msgstr "í…ìŠ¤ì³ êµ¬ì— íŽ¸ì§‘ê¸°" +msgstr "í…ìŠ¤ì³ ì˜ì— ì—디터" #: editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -5566,7 +5569,7 @@ msgstr "테마를 파ì¼ë¡œ ì €ìž¥í• ìˆ˜ 없습니다:" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "ëª¨ë“ ì•„ì´í…œ 추가" +msgstr "ëª¨ë“ í•목 추가" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All" @@ -5579,7 +5582,7 @@ msgstr "ì•„ì´í…œ ì‚ì œ" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Items" -msgstr "ëª¨ë“ ì•„ì´í…œ ì‚ì œ" +msgstr "ëª¨ë“ í•목 ì‚ì œ" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All" @@ -5595,11 +5598,11 @@ msgstr "테마 편집 메뉴." #: editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" -msgstr "í´ëž˜ìФ ì•„ì´í…œ 추가" +msgstr "í´ëž˜ìФ í•목 추가" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" -msgstr "í´ëž˜ìФ ì•„ì´í…œ ì‚ì œ" +msgstr "í´ëž˜ìФ í•목 ì‚ì œ" #: editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" @@ -5615,31 +5618,31 @@ msgstr "현재 ì—디터 테마로부터 만들기" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" -msgstr "CheckBox Radio1" +msgstr "ì²´í¬ë°•스 ë¼ë””오1" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio2" -msgstr "CheckBox Radio2" +msgstr "ì²´í¬ë°•스 ë¼ë””오2" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "Item" +msgstr "í•목" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "Check Item" +msgstr "í•목 확ì¸" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "Checked Item" +msgstr "í•목 확ì¸ë¨" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "Has" +msgstr "가진다" #: editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "Many" +msgstr "ë§Žì€" #: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp msgid "Options" @@ -5647,19 +5650,19 @@ msgstr "옵션" #: editor/plugins/theme_editor_plugin.cpp msgid "Have,Many,Several,Options!" -msgstr "Have,Many,Several,Options!" +msgstr "가진다,ë§Žì€,여러,옵션들!" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "Tab 1" +msgstr "íƒ 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "Tab 2" +msgstr "íƒ 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "Tab 3" +msgstr "íƒ 3" #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp #: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp @@ -5686,6 +5689,10 @@ msgstr "í°íЏ" msgid "Color" msgstr "색깔" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "테마" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ì„ íƒ ì§€ìš°ê¸°" @@ -5712,7 +5719,7 @@ msgstr "타ì¼ë§µ 지우기" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase selection" -msgstr "ì„ íƒë¶€ë¶„ 지우기" +msgstr "ì„ íƒ ì§€ìš°ê¸°" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Find tile" @@ -5771,9 +5778,8 @@ msgid "Merge from scene?" msgstr "씬으로부터 ë³‘í•©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "íƒ€ì¼ ì…‹.." +msgstr "íƒ€ì¼ ì…‹" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5787,6 +5793,34 @@ msgstr "씬으로부터 병합하기" msgid "Error" msgstr "ì—러" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" +"ì‚¬ìš©í• ì„œë¸Œ 타ì¼ì„ ì•„ì´ì½˜ìœ¼ë¡œ ì„¤ì •í•˜ì„¸ìš”, íš¨ë ¥ì—†ëŠ” ìžë™íƒ€ì¼ ë°”ì¸ë”©ì—ë„ ì‚¬ìš©ë©" +"니다." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"좌í´ë¦: 비트 켜기를 ì„¤ì •í•©ë‹ˆë‹¤.\n" +"ìš°í´ë¦: 비트 ë„기를 ì„¤ì •í•©ë‹ˆë‹¤." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "현재 íŽ¸ì§‘ëœ ì„œë¸Œ íƒ€ì¼ ì„ íƒ." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "서브 타ì¼ì„ ì„ íƒí•´ ìš°ì„ ìˆœìœ„ë¥¼ 바꿉니다." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "취소" @@ -5894,11 +5928,8 @@ msgid "Please choose a 'project.godot' file." msgstr "'project.godot' 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"비어있지 ì•Šì€ í´ë”ì— í”„ë¡œì 트가 ìƒì„±ë©ë‹ˆë‹¤ (새 í´ë”를 만드는 ê²ƒì„ ê¶Œí•©ë‹ˆë‹¤)." +msgid "Please choose an empty folder." +msgstr "비어있는 í´ë”를 ì„ íƒí•˜ì„¸ìš”." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5909,6 +5940,14 @@ msgid "Imported Project" 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 "프로ì 트 ì´ë¦„ì„ ì •í•˜ëŠ” ê²ƒì„ ê¶Œí•©ë‹ˆë‹¤." @@ -5949,14 +5988,26 @@ 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 "프로ì 트 명:" @@ -5973,10 +6024,6 @@ msgid "Browse" msgstr "찾아보기" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "ë¹™ê³ !" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "ì´ë¦„없는 프로ì 트" @@ -5995,15 +6042,15 @@ msgid "" "the \"Application\" category." msgstr "" "프로ì 트를 ì‹¤í–‰í• ìˆ˜ 없습니다: ë©”ì¸ì”¬ì´ ì§€ì •ë˜ì§€ 않았습니다.\n" -"프로ì 트 ì„¤ì •ì„ ìˆ˜ì •í•˜ì—¬ \"Application\" ì¹´í…Œê³ ë¦¬ì— \"Project Settings\"ì—서 " -"ë©”ì¸ì”¬ì„ ì„¤ì •í•˜ì„¸ìš”." +"프로ì 트를 편집하여 \"Application\" ì¹´í…Œê³ ë¦¬ì— \"Project Settings\"ì—서 ë©”ì¸ " +"ì”¬ì„ ì„¤ì •í•˜ì„¸ìš”." #: 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 @@ -6030,6 +6077,10 @@ msgid "" msgstr "%s ì—서 기존 Godot 프로ì íŠ¸ë“¤ì„ ìŠ¤ìº”í•˜ë ¤ê³ í•©ë‹ˆë‹¤. ì§„í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "프로ì 트 ë§¤ë‹ˆì €" + +#: editor/project_manager.cpp msgid "Project List" msgstr "프로ì 트 목ë¡" @@ -6067,7 +6118,7 @@ msgid "" "Would you like to explore the official example projects in the Asset Library?" msgstr "" "프로ì 트가 현재 í•˜ë‚˜ë„ ì—†ìŠµë‹ˆë‹¤.\n" -"어쎗 ë¼ì´ë¸ŒëŸ¬ë¦¬ì—서 ê³µì‹ ì˜ˆì œ 프로ì 트를 ì°¾ì•„ë³´ì‹œê² ìŠµë‹ˆê¹Œ?" +"ì—ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ì—서 ê³µì‹ ì˜ˆì œ 프로ì 트를 ì°¾ì•„ë³´ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/project_settings_editor.cpp msgid "Key " @@ -6103,7 +6154,7 @@ msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ 추가" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "쉬프트+" +msgstr "시프트+" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Alt+" @@ -6158,11 +6209,6 @@ msgid "Button 9" msgstr "버튼 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "변경" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "ì¡°ì´íŒ¨ë“œ ì¶• ì¸ë±ìФ:" @@ -6175,9 +6221,8 @@ msgid "Joypad Button Index:" msgstr "ì¡°ì´íŒ¨ë“œ 버튼 ì¸ë±ìФ:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ ì‚ì œ" +msgstr "ìž…ë ¥ ì•¡ì…˜ 지우기" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6257,7 +6302,7 @@ msgstr "ì„¤ì • ì €ìž¥ 완료." #: editor/project_settings_editor.cpp msgid "Override for Feature" -msgstr "" +msgstr "기능 ìž¬ì •ì˜" #: editor/project_settings_editor.cpp msgid "Add Translation" @@ -6277,7 +6322,7 @@ msgstr "리소스 리맵핑 추가" #: editor/project_settings_editor.cpp msgid "Change Resource Remap Language" -msgstr "언어 리소스 리맵핑 변경" +msgstr "리소스 리맵핑 언어 변경" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap" @@ -6309,7 +6354,7 @@ msgstr "ì†ì„±:" #: editor/project_settings_editor.cpp msgid "Override For.." -msgstr "" +msgstr "ìž¬ì •ì˜.." #: editor/project_settings_editor.cpp msgid "Input Map" @@ -6349,11 +6394,11 @@ 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" @@ -6425,7 +6470,7 @@ msgstr "새 스í¬ë¦½íЏ" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "새 %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6445,7 +6490,7 @@ msgstr "íŒŒì¼ ë¡œë“œ ì—러: 리소스가 아닙니다!" #: editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "ì„ íƒëœ 노드는 Viewportê°€ 아닙니다!" +msgstr "ì„ íƒëœ 노드는 ë·°í¬íŠ¸ê°€ 아닙니다!" #: editor/property_editor.cpp msgid "Pick a Node" @@ -6460,9 +6505,8 @@ msgid "On" msgstr "사용" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "빈 í”„ë ˆìž„ 추가" +msgstr "[비어있ìŒ]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6478,11 +6522,11 @@ msgstr "ì†ì„± ì„ íƒ" #: editor/property_selector.cpp msgid "Select Virtual Method" -msgstr "ê°€ìƒ ë©”ì†Œë“œ ì„ íƒ" +msgstr "ê°€ìƒ ë©”ì„œë“œ ì„ íƒ" #: editor/property_selector.cpp msgid "Select Method" -msgstr "메소드 ì„ íƒ" +msgstr "메서드 ì„ íƒ" #: editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" @@ -6502,7 +6546,7 @@ msgstr "부모노드 ìž¬ì§€ì • 위치 (새 부모 노드를 ì„ íƒ):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" -msgstr "현재 모양새 ìœ ì§€" +msgstr "글로벌 변형 ìœ ì§€" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" @@ -6542,10 +6586,6 @@ msgid "Error loading scene from %s" msgstr "'%s' 로부터 씬 로딩 중 ì—러" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "확ì¸" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6577,7 +6617,7 @@ msgstr "노드를 ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." -msgstr "" +msgstr "ê·¸ 루트 노드로는 ìˆ˜í–‰í• ìˆ˜ 없습니다." #: editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." @@ -6631,12 +6671,12 @@ msgid "Error duplicating scene to save it." msgstr "ì €ìž¥í•˜ê¸° 위해 ì”¬ì„ ë³µì œí•˜ëŠ” ì¤‘ì— ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "서브-리소스:" +msgid "Sub-Resources" +msgstr "서브-리소스" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" -msgstr "ìƒì† ì—†ì• ê¸°" +msgstr "ìƒì† 지우기" #: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp msgid "Open in Editor" @@ -6715,11 +6755,11 @@ msgstr "로컬" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "ìƒì†ì„ ì—†ì• ì‹œê² ìŠµë‹ˆê¹Œ? (ë˜ëŒë¦¬ê¸° 불가!)" +msgstr "ìƒì†ì„ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ? (ë˜ëŒë¦¬ê¸° 불가!)" #: editor/scene_tree_dock.cpp msgid "Clear!" -msgstr "없앴습니다!" +msgstr "ì§€ì› ìŠµë‹ˆë‹¤!" #: editor/scene_tree_editor.cpp msgid "Toggle Spatial Visible" @@ -6731,25 +6771,31 @@ msgstr "CanvasItem ë³´ì´ê¸° í† ê¸€" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" -msgstr "" +msgstr "노드 ë°°ì—´ ê²½ê³ :" #: editor/scene_tree_editor.cpp msgid "" "Node has connection(s) and group(s)\n" "Click to show signals dock." msgstr "" +"노드가 커넥션과 ê·¸ë£¹ì„ ê°–ê³ ìžˆìŠµë‹ˆë‹¤.\n" +"í´ë¦í•´ì„œ ì‹œê·¸ë„ ë…ì„ ë³´ì‹ì‹œì˜¤." #: editor/scene_tree_editor.cpp msgid "" "Node has connections.\n" "Click to show signals dock." msgstr "" +"노드가 ì»¤ë„¥ì…˜ë“¤ì„ ê°–ê³ ìžˆìŠµë‹ˆë‹¤\n" +"í´ë¦í•´ì„œ ì‹œê·¸ë„ ë…ì„ ë³´ì‹ì‹œì˜¤." #: editor/scene_tree_editor.cpp msgid "" "Node is in group(s).\n" "Click to show groups dock." msgstr "" +"노드가 그룹 ì•ˆì— ìžˆìŠµë‹ˆë‹¤.\n" +"í´ë¦í•´ì„œ 그룹 ë…ì„ ë³´ì‹ì‹œì˜¤." #: editor/scene_tree_editor.cpp msgid "Instance:" @@ -6764,12 +6810,16 @@ msgid "" "Node is locked.\n" "Click to unlock" msgstr "" +"노드가 ìž ê²¨ìžˆìŠµë‹ˆë‹¤.\n" +"í´ë¦í•´ì„œ ìž ê¸ˆí•´ì œ 하ì‹ì‹œì˜¤" #: editor/scene_tree_editor.cpp msgid "" "Children are not selectable.\n" "Click to make selectable" msgstr "" +"ìžì‹ë“¤ì„ ì„ íƒ í• ìˆ˜ 없습니다.\n" +"í´ë¦í•´ì„œ ì„ íƒ í• ìˆ˜ 있게 하ì‹ì‹œì˜¤" #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" @@ -6789,7 +6839,7 @@ msgstr "씬 트리 (노드):" #: editor/scene_tree_editor.cpp msgid "Node Configuration Warning!" -msgstr "" +msgstr "노드 구성 ê²½ê³ !" #: editor/scene_tree_editor.cpp msgid "Select a Node" @@ -6821,11 +6871,11 @@ msgstr "경로가 ë¡œì»¬ì´ ì•„ë‹˜" #: editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "기본 경로가 ìœ ìš”í•˜ì§€ 않ìŒ" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ê¸°ë³¸ 경로" #: editor/script_create_dialog.cpp msgid "Directory of the same name exists" -msgstr "" +msgstr "ê°™ì€ ì´ë¦„ì˜ ë””ë ‰í† ë¦¬ê°€ 존재함" #: editor/script_create_dialog.cpp msgid "File exists, will be reused" @@ -6833,11 +6883,11 @@ msgstr "파ì¼ì´ 존재하여, 재사용합니다" #: editor/script_create_dialog.cpp msgid "Invalid extension" -msgstr "확장ìžê°€ ìœ ìš”í•˜ì§€ 않ìŒ" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ í™•ìž¥ìž" #: editor/script_create_dialog.cpp msgid "Wrong extension chosen" -msgstr "" +msgstr "ìž˜ëª»ëœ í™•ìž¥ìž ì„ íƒ" #: editor/script_create_dialog.cpp msgid "Invalid Path" @@ -6845,11 +6895,11 @@ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ê²½ë¡œ" #: editor/script_create_dialog.cpp msgid "Invalid class name" -msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í´ëž˜ìŠ¤ëª…" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ í´ëž˜ìŠ¤ëª…" #: editor/script_create_dialog.cpp msgid "Invalid inherited parent name or path" -msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ ìƒì†ëœ 부모 ì´ë¦„ ë˜ëŠ” 경로" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ìƒì†ëœ 부모 ì´ë¦„ ë˜ëŠ” 경로" #: editor/script_create_dialog.cpp msgid "Script valid" @@ -6857,11 +6907,11 @@ msgstr "ìœ íš¨í•œ 스í¬ë¦½íЏ" #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9 and _" -msgstr "" +msgstr "허용ë¨:a-z, A-z, 0-9 ê·¸ë¦¬ê³ _" #: editor/script_create_dialog.cpp msgid "Built-in script (into scene file)" -msgstr "" +msgstr "(씬 íŒŒì¼ ì•ˆì—) ë‚´ìž¥ëœ ìŠ¤í¬ë¦½íЏ" #: editor/script_create_dialog.cpp msgid "Create new script file" @@ -6921,9 +6971,9 @@ 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 +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "ì—러" @@ -6932,6 +6982,10 @@ msgid "Child Process Connected" msgstr "ìžì‹ 프로세스 ì—°ê²°ë¨" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "복사 ì—러" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "ì´ì „ ì¸ìŠ¤í„´ìŠ¤ 검사" @@ -6993,7 +7047,7 @@ msgstr "타입" #: editor/script_editor_debugger.cpp msgid "Format" -msgstr "í¬ë©§" +msgstr "형ì‹" #: editor/script_editor_debugger.cpp msgid "Usage" @@ -7025,7 +7079,7 @@ msgstr "단축키" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "ë°”ì¸ë”©" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7033,7 +7087,7 @@ msgstr "Light 반경 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "" +msgstr "AudioStreamPlayer3D ì—미션 ê°ë„ 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" @@ -7045,31 +7099,31 @@ msgstr "Camera í¬ê¸° 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Sphere Shape Radius" -msgstr "Sphere Shape 반경 변경" +msgstr "구체 모양 반경 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Box Shape Extents" -msgstr "Box Shape 범위 변경" +msgstr "박스 모양 범위 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "Capsule Shape 반경 변경" +msgstr "ìº¡ìŠ ëª¨ì–‘ 반경 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "Capsule Shape ë†’ì´ ë³€ê²½" +msgstr "ìº¡ìŠ ëª¨ì–‘ ë†’ì´ ë³€ê²½" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "Ray Shape ê¸¸ì´ ë³€ê²½" +msgstr "ê´‘ì„ ëª¨ì–‘ ê¸¸ì´ ë³€ê²½" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" -msgstr "Notifier 범위 변경" +msgstr "알림 범위 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "" +msgstr "íŒŒí‹°í´ AABB 변경" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" @@ -7077,43 +7131,39 @@ 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 -#, fuzzy msgid "Remove current entry" -msgstr "커프 í¬ì¸íЏ ì‚ì œ" +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:" -msgstr "" +msgstr "플랫í¼:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "플랫í¼ìœ¼ë¡œ 복사.." +msgstr "플랫í¼" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy 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 -#, fuzzy msgid "GDNativeLibrary" -msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬" +msgstr "GD네ì´í‹°ë¸Œ ë¼ì´ë¸ŒëŸ¬ë¦¬" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7125,11 +7175,11 @@ msgstr "ìƒíƒœ" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Libraries: " -msgstr "" +msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤: " #: modules/gdnative/register_types.cpp msgid "GDNative" -msgstr "" +msgstr "GD네ì´í‹°ë¸Œ" #: modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -7178,7 +7228,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 "GridMap Delete Selection" @@ -7190,7 +7240,7 @@ msgstr "그리드맵 ì„ íƒ ë³µì œ" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "" +msgstr "층:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" @@ -7206,7 +7256,7 @@ msgstr "ì´ì „ 층" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "" +msgstr "ë‹¤ìŒ ì¸µ" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Disabled" @@ -7214,23 +7264,23 @@ 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" -msgstr "" +msgstr "X ì¶• 편집" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Y Axis" -msgstr "" +msgstr "Y ì¶• 편집" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Z Axis" -msgstr "" +msgstr "Z ì¶• 편집" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate X" @@ -7246,23 +7296,23 @@ msgstr "커서 Z íšŒì „" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" -msgstr "" +msgstr "커서 X ì—íšŒì „" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Y" -msgstr "" +msgstr "커서 Y ì—íšŒì „" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Z" -msgstr "" +msgstr "커서 Z ì—íšŒì „" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Clear Rotation" -msgstr "" +msgstr "커서 íšŒì „ 지우기" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Create Area" -msgstr "Area 만들기" +msgstr "ì˜ì— 만들기" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Create Exterior Connector" @@ -7270,11 +7320,11 @@ msgstr "외부 커넥터 만들기" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Erase Area" -msgstr "Area 지우기" +msgstr "ì˜ì— 지우기" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" -msgstr "ì„ íƒ ì—†ì• ê¸°" +msgstr "ì„ íƒ ì§€ìš°ê¸°" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" @@ -7284,39 +7334,85 @@ msgstr "그리드맵 ì„¤ì •" msgid "Pick Distance:" msgstr "거리 ì„ íƒ:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "솔루션 ìƒì„± 중..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "C# 프로ì 트 ìƒì„± 중..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "솔루션 ìƒì„± 실패." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "솔루션 ì €ìž¥ 실패." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "완료" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "C# 프로ì 트 ìƒì„± 실패." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "모노" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "C# 솔루션 만들기" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" -msgstr "" +msgstr "빌드" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "프로ì 트 빌드" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +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 "" +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: " -msgstr "" +msgstr "ìŠ¤íƒ ê¹Šì´ë¡œ 오버플로우한 스íƒ: " #: modules/visual_script/visual_script_editor.cpp msgid "Change Signal Arguments" @@ -7324,11 +7420,11 @@ msgstr "ì‹œê·¸ë„ ì¸ìž 변경" #: modules/visual_script/visual_script_editor.cpp msgid "Change Argument Type" -msgstr "ì¸ìˆ˜ 타입 변경" +msgstr "ì¸ìž 타입 변경" #: modules/visual_script/visual_script_editor.cpp msgid "Change Argument name" -msgstr "ì¸ìˆ˜ ì´ë¦„ 변경" +msgstr "ì¸ìž ì´ë¦„ 변경" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Default Value" @@ -7348,11 +7444,11 @@ 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:" -msgstr "" +msgstr "ì´ë¯¸ 다른 함수/변수/시그ë„로 ì‚¬ìš©ëœ ì´ë¦„:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" @@ -7397,26 +7493,30 @@ msgstr "비주얼 스í¬ë¦½íЏ 노드 ë³µì œ" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." msgstr "" +"%s 를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ 게터를 드ëží•©ë‹ˆë‹¤. 시프트를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ì¼ë°˜ì ì¸ ì‹œê·¸ë‹ˆ" +"처를 드ëží•©ë‹ˆë‹¤." #: 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 "" +msgstr "%s 를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ë…¸ë“œì— ëŒ€í•œ 간단한 ì°¸ê³ ë¥¼ ì¤ë‹ˆë‹¤." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a simple reference to the node." -msgstr "" +msgstr "ì»¨íŠ¸ë¡¤ì„ ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ë…¸ë“œì— ëŒ€í•œ 간단한 ì°¸ê³ ë¥¼ ì¤ë‹ˆë‹¤." #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Variable Setter." -msgstr "" +msgstr "%s를 ëˆ„ë¥´ê³ ìžˆë¥´ë©´ 변수 세터를 드ëží•©ë‹ˆë‹¤." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." -msgstr "" +msgstr "ì»¨íŠ¸ë¡¤ì„ ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ 변수 세터를 드ëží•©ë‹ˆë‹¤." #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" @@ -7428,11 +7528,11 @@ msgstr "트리ì—서 노드 추가" #: 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" @@ -7456,7 +7556,7 @@ msgstr "ì¡°ê±´" #: modules/visual_script/visual_script_editor.cpp msgid "Sequence" -msgstr "" +msgstr "시퀀스" #: modules/visual_script/visual_script_editor.cpp msgid "Switch" @@ -7464,11 +7564,11 @@ msgstr "스위치" #: modules/visual_script/visual_script_editor.cpp msgid "Iterator" -msgstr "" +msgstr "반복ìž" #: modules/visual_script/visual_script_editor.cpp msgid "While" -msgstr "" +msgstr "ë™ì•ˆì—" #: modules/visual_script/visual_script_editor.cpp msgid "Return" @@ -7484,7 +7584,7 @@ msgstr "얻기" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" -msgstr "" +msgstr "스í¬ë¦½íŠ¸ê°€ ì´ë¯¸ '%s' 함수를 ê°–ê³ ìžˆìŒ" #: modules/visual_script/visual_script_editor.cpp msgid "Change Input Value" @@ -7540,7 +7640,7 @@ msgstr "가능한 노드:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "" +msgstr "그래프를 편집하기 위한 함수를 ì„ íƒí•˜ê±°ë‚˜ ìƒì„±" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" @@ -7572,23 +7672,23 @@ msgstr "노드 붙여넣기" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "ë°˜ë³µí• ìˆ˜ 없는 ìž…ë ¥ 타입: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "반복ìžê°€ ìœ íš¨í•˜ì§€ 않게 ë¨" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +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!" -msgstr "" +msgstr "기본 오브ì 트는 노드가 아닙니다!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" @@ -7596,7 +7696,7 @@ msgstr "노드를 ì§€ì¹í•˜ëŠ” 경로가 아닙니다!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "노드 %s ì•ˆì— ì¸ë±ìФ ì†ì„± ì´ë¦„ '%s' 는 ìœ íš¨í•˜ì§€ 않습니다." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -7604,25 +7704,28 @@ msgstr ": ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìž 타입: " #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid arguments: " -msgstr ": ìœ íš¨í•˜ì§€ ì¸ìž: " +msgstr ": ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìž: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "VariableGetì´ ìŠ¤í¬ë¦½íЏì—서 발견ë˜ì§€ 않ìŒ: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" +msgstr "VariableSetì´ ìŠ¤í¬ë¦½íЏì—서 발견ë˜ì§€ 않ìŒ: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." 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()ìœ¼ë¡œë¶€í„°ì˜ ìœ íš¨í•˜ì§€ ì•Šì€ ë°˜í™˜ 값으로, integer (seq out), í˜¹ì€ string " +"(error)ê°€ 아니면 안ë©ë‹ˆë‹¤." #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -7630,29 +7733,31 @@ msgstr "브ë¼ìš°ì €ì—서 실행" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." -msgstr "" +msgstr "내보내기 한 HTMLì„ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 브ë¼ìš°ì €ë¥¼ 사용하여 실행." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:\n" +msgid "Could not write file:" +msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 없습니다:\n" +msgid "Could not open template for export:" +msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 없습니다:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë‚´ë³´ë‚´ê¸° 템플릿:\n" +msgid "Invalid export template:" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë‚´ë³´ë‚´ê¸° 템플릿:" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not read custom HTML shell:\n" -msgstr "타ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:" +msgid "Could not read custom HTML shell:" +msgstr "커스텀 HTML shellì„ ì½ì„ 수 ì—†ìŒ:" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not read boot splash image file:\n" -msgstr "타ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:" +msgid "Could not read boot splash image file:" +msgstr "부트 스플래시 ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "기본 부트 스플래시 ì´ë¯¸ì§€ 사용." #: scene/2d/animated_sprite.cpp msgid "" @@ -7670,6 +7775,17 @@ msgstr "" "씬마다 ë³´ì´ëŠ” CanvasModulateê°€ 단 하나만 허용ë©ë‹ˆë‹¤. 첫번째로 ìƒì„±ëœ 것만 ë™" "ìž‘í•˜ê³ , 나머지는 무시ë©ë‹ˆë‹¤." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"ì´ ë…¸ë“œëŠ” ëª¨ì–‘ì„ ê°–ëŠ” ìžì‹ 노드가 없어서, 공간ìƒì—서 ìƒí˜¸ìž‘ìš©í• ìˆ˜ 없습니" +"다.\n" +"CollisionShape2D ë˜ëŠ” CollisionPolygon2Dì„ ìžì‹ 노드로 추가하여 ëª¨ì–‘ì„ ì •ì˜í•˜" +"세요." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7677,7 +7793,7 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionPolygon2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©" -"니다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 ì¶”" +"니다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì˜ ìžì‹ 노드로 ì¶”" "가하여 사용합니다." #: scene/2d/collision_polygon_2d.cpp @@ -7691,7 +7807,7 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionShape2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©ë‹ˆ" -"다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 추가" +"다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì˜ ìžì‹ 노드로 추가" "하여 사용합니다." #: scene/2d/collision_shape_2d.cpp @@ -7745,6 +7861,8 @@ msgid "" "A material to process the particles is not assigned, so no behavior is " "imprinted." msgstr "" +"파티í´ì„ ì²˜ë¦¬í• ë©”í…Œë¦¬ì–¼ì´ í• ë‹¹ë˜ì§€ 않았기ì—, 아무런 í–‰ë™ë„ ì¸ì‡„ë˜ì§€ 않았습니" +"다." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -7752,10 +7870,13 @@ msgstr "PathFollow2D는 Path2D ë…¸ë“œì˜ ìžì‹ë…¸ë“œë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘í•© #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" +"(ìºë¦í„°ë‚˜ 리지드 모드ì—서) RigidBody2Dì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì´ ìž‘ë™í•˜ëŠ” ë™" +"안 í° ë¶€ë‹´ì´ ë©ë‹ˆë‹¤.\n" +"ëŒ€ì‹ ìžì‹ ì¶©ëŒ í˜•íƒœì˜ í¬ê¸°ë¥¼ 변경해보세요." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -7771,50 +7892,58 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRCamera는 반드시 ARVROrigin 노드를 부모로 ê°€ì§€ê³ ìžˆì–´ì•¼ 함" #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRController는 반드시 ARVROrigin 노드를 부모로 ê°€ì§€ê³ ìžˆì–´ì•¼ 함" #: scene/3d/arvr_nodes.cpp msgid "" "The controller id must not be 0 or this controller will not be bound to an " "actual controller" -msgstr "" +msgstr "컨트롤러 idê°€ 0ì´ ë˜ë©´ 컨트롤러가 ì‹¤ì œ ì»¨íŠ¸ë¡¤ëŸ¬ì— ë°”ì¸ë”©í•˜ì§€ 않게 ë¨" #: scene/3d/arvr_nodes.cpp msgid "ARVRAnchor must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRAnchor는 반드시 ARVROrigin 노드를 부모로 ê°€ì§€ê³ ìžˆì–´ì•¼ 함" #: scene/3d/arvr_nodes.cpp msgid "" "The anchor id must not be 0 or this anchor will not be bound to an actual " "anchor" -msgstr "" +msgstr "앵커 idê°€ 0ì´ ë˜ë©´ 앵커가 ì‹¤ì œ ì•µì»¤ì— ë°”ì¸ë”©í•˜ì§€ 않게 ë¨" #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node" -msgstr "" +msgstr "ARVROriginì€ ARVRCamera ìžì‹ 노드를 요구 함" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "ì´ë¯¸ì§€ 병합 중" +msgstr "메시 구분 중: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "ì´ë¯¸ì§€ 병합 중" +msgstr "ë¼ì´íЏ 구분 중:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" -msgstr "" +msgstr "구분 ë남" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "ì´ë¯¸ì§€ 병합 중" +msgstr "ë©”ì‹œì— ë¼ì´íŒ… 중: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"ì´ ë…¸ë“œëŠ” ëª¨ì–‘ì„ ê°–ëŠ” ìžì‹ 노드가 없어서, 공간ìƒì—서 ìƒí˜¸ìž‘ìš©í• ìˆ˜ 없습니" +"다.\n" +"CollisionShape ë˜ëŠ” CollisionPolygonì„ ìžì‹ 노드로 추가하여 ëª¨ì–‘ì„ ì •ì˜í•˜ì„¸" +"ìš”." #: scene/3d/collision_polygon.cpp msgid "" @@ -7845,13 +7974,12 @@ msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it!" msgstr "" -"CollisionShapeì´ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스" +"CollisionShapeê°€ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스" "를 만드세요!" #: scene/3d/gi_probe.cpp -#, fuzzy msgid "Plotting Meshes" -msgstr "ì´ë¯¸ì§€ 병합 중" +msgstr "메시 구분중" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -7870,14 +7998,17 @@ msgstr "" #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." -msgstr "" +msgstr "ë©”ì‹œë“¤ì„ íŒ¨ìŠ¤ë¥¼ 그리ë„ë¡ í• ë‹¹í•˜ì§€ 않았으므로 ë³´ì´ì§€ 않습니다." #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" +"(ìºë¦í„°ë‚˜ 리지드 모드ì—서) RigidBodyì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì´ ìž‘ë™í•˜ëŠ” ë™ì•ˆ " +"í° ë¶€ë‹´ì´ ë©ë‹ˆë‹¤.\n" +"ëŒ€ì‹ ìžì‹ ì¶©ëŒ í˜•íƒœì˜ í¬ê¸°ë¥¼ 변경해보세요." #: scene/3d/remote_transform.cpp msgid "Path property must point to a valid Spatial node to work." @@ -7901,15 +8032,16 @@ msgid "" "VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " "it as a child of a VehicleBody." msgstr "" +"VehicleWheelì€ VehicleBody로 íœ ì‹œìŠ¤í…œì„ ì œê³µí•˜ëŠ” ê¸°ëŠ¥ì„ í•©ë‹ˆë‹¤. VehicleBody" +"ì˜ ìžì‹ìœ¼ë¡œ 사용해주세요." #: scene/gui/color_picker.cpp -#, fuzzy msgid "Raw Mode" -msgstr "팬 모드" +msgstr "Raw 모드" #: scene/gui/color_picker.cpp msgid "Add current color as a preset" -msgstr "" +msgstr "현재 색ìƒì„ 프리셋으로 추가" #: scene/gui/dialogs.cpp msgid "Alert!" @@ -7920,9 +8052,8 @@ msgid "Please Confirm..." msgstr "확ì¸í•´ì£¼ì„¸ìš”..." #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Select this Folder" -msgstr "메소드 ì„ íƒ" +msgstr "ì´ í´ë” ì„ íƒ" #: scene/gui/popup.cpp msgid "" @@ -7939,16 +8070,21 @@ msgid "" "Use a container as child (VBox,HBox,etc), or a Control and set the custom " "minimum size manually." msgstr "" +"ScrollContainer는 ë‹¨ì¼ ìžì‹ ì»¨íŠ¸ë¡¤ì„ ìž‘ì—…í•˜ê¸° 위한 것입니다.\n" +"컨테ì´ë„ˆë¥¼ ìžì‹(VBox,HBox,등)으로 사용하거나, Controlì„ ìˆ˜ë™ìœ¼ë¡œ ì§€ì •í•œ 최소 " +"수치로 ì„¤ì •í•´ì„œ 사용하세요." #: scene/gui/tree.cpp msgid "(Other)" -msgstr "" +msgstr "(기타)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" +"Project Setings(ë Œë”ë§ -> 환경 -> 기본 환경)ì— ì§€ì •ëœ ê¸°ë³¸ í™˜ê²½ì€ ë¡œë“œí• ìˆ˜ " +"없습니다." #: scene/main/viewport.cpp msgid "" @@ -7957,10 +8093,10 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"Viewportê°€ Render Target으로 ì„¤ì •ë˜ì§€ 않았습니다. Viewportì˜ ë‚´ìš©ì„ í™”ë©´ìƒì— " -"ì§ì ‘ í‘œì‹œí•˜ê³ ìž í• ê²½ìš°, 사ì´ì¦ˆë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야" -"합니다. ê·¸ë ‡ì§€ ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 Render target으로 ì„¤ì •í•˜" -"ê³ ë‚´ë¶€ì ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다." +"ë·°í¬íŠ¸ê°€ ë Œë” ëŒ€ìƒìœ¼ë¡œ ì„¤ì •ë˜ì§€ 않았습니다. ë·°í¬íŠ¸ì˜ ë‚´ìš©ì„ í™”ë©´ìƒì— ì§ì ‘ 표" +"ì‹œí•˜ê³ ìž í• ê²½ìš°, í¬ê¸°ë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야 합니다. " +"ê·¸ë ‡ì§€ ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 RenderTarget으로 ì„¤ì •í•˜ê³ ë‚´ë¶€ì " +"ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다." #: scene/resources/dynamic_font.cpp msgid "Error initializing FreeType." @@ -7968,7 +8104,7 @@ msgstr "FreeType 초기화 ì—러." #: scene/resources/dynamic_font.cpp msgid "Unknown font format." -msgstr "알 수 없는 í°íЏ í¬ë©§." +msgstr "알 수 없는 í°íЏ 형ì‹." #: scene/resources/dynamic_font.cpp msgid "Error loading font." @@ -7976,7 +8112,41 @@ msgstr "í°íЏ 로딩 ì—러." #: scene/resources/dynamic_font.cpp msgid "Invalid font size." -msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ í°íЏ í¬ê¸°." + +#~ msgid "Next" +#~ msgstr "다ìŒ" + +#~ msgid "Not found!" +#~ msgstr "ì°¾ì„ ìˆ˜ ì—†ìŒ!" + +#~ msgid "Replace By" +#~ msgstr "으로 바꿈" + +#~ msgid "Case Sensitive" +#~ msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„" + +#~ msgid "Backwards" +#~ msgstr "뒤로" + +#~ msgid "Prompt On Replace" +#~ msgstr "변경 시 알림" + +#~ msgid "Skip" +#~ msgstr "건너뛰기" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "비어있지 ì•Šì€ í´ë”ì— í”„ë¡œì 트가 ìƒì„±ë©ë‹ˆë‹¤ (새 í´ë”를 만드는 ê²ƒì„ ê¶Œí•©ë‹ˆ" +#~ "다)." + +#~ msgid "That's a BINGO!" +#~ msgstr "ë¹™ê³ !" + +#~ msgid "preview" +#~ msgstr "미리보기" #~ msgid "Move Add Key" #~ msgstr "키 ì´ë™" @@ -8059,9 +8229,6 @@ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ." #~ msgid "Filter:" #~ msgstr "í•„í„°:" -#~ msgid "Theme" -#~ msgstr "테마" - #~ msgid "Method List For '%s':" #~ msgstr "'%s' 함수 목ë¡:" @@ -8323,9 +8490,6 @@ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ." #~ msgid "Import Anyway" #~ msgstr "ë¬´ì‹œí•˜ê³ ê°€ì ¸ì˜¤ê¸°" -#~ msgid "Import & Open" -#~ msgstr "ê°€ì ¸ì˜¤ê¸° 후 열기" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "íŽ¸ì§‘ëœ ì”¬ì´ ì €ìž¥ë˜ì§€ 않았습니다. ë¬´ì‹œí•˜ê³ ê°€ì ¸ì˜¨ ì”¬ì„ ì—¬ì‹œê² ìŠµë‹ˆê¹Œ?" @@ -8579,9 +8743,6 @@ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ." #~ msgid "Stereo" #~ msgstr "ìŠ¤í…Œë ˆì˜¤" -#~ msgid "Mono" -#~ msgstr "모노" - #~ msgid "Pitch" #~ msgstr "피치" @@ -8736,9 +8897,6 @@ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ." #~ msgid "Alerts when an external resource has changed." #~ msgstr "외부 리소스가 변경ë˜ì—ˆì„ 때 알림." -#~ msgid "Tutorials" -#~ msgstr "íŠœí† ë¦¬ì–¼" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "https://godotengine.orgì˜ íŠœí† ë¦¬ì–¼ ë¶€ë¶„ì„ ì—½ë‹ˆë‹¤." diff --git a/editor/translations/lt.po b/editor/translations/lt.po index 49858d179f..5e5400d1e7 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -200,8 +200,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Sukurti" @@ -380,14 +379,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -396,47 +387,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -557,6 +516,15 @@ msgid "Signals" msgstr "Signalai" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp #, fuzzy msgid "Create New %s" msgstr "Sukurti NaujÄ…" @@ -663,7 +631,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -746,8 +714,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -832,7 +800,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1139,7 +1107,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1351,6 +1319,17 @@ msgid "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 "Properties" msgstr "" @@ -1382,6 +1361,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1393,6 +1376,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1401,8 +1388,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1456,7 +1443,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2009,6 +1997,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2389,7 +2384,8 @@ msgid "No version.txt found inside templates." msgstr "Å ablonuose nerasta version.txt failo." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "Klaida kuriant keliÄ… Å¡ablonams:\n" #: editor/export_template_manager.cpp @@ -2543,9 +2539,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2553,19 +2547,21 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "Ä®vyko klaida kraunant Å¡riftÄ…." #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" -msgstr "" +#, fuzzy +msgid "Error duplicating:" +msgstr "Duplikuoti" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3208,6 +3204,11 @@ msgstr "Redaguoti Nodų Filtrus" msgid "Filters.." msgstr "Filtrai.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animacija" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Nemokama" @@ -3373,6 +3374,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3673,19 +3675,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4056,7 +4061,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4445,14 +4450,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4528,6 +4535,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4959,83 +4970,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5050,6 +5061,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5123,16 +5138,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "Pasirinkite Nodus, kuriuos norite importuoti" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5406,10 +5418,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5435,14 +5455,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5580,6 +5603,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5680,6 +5707,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "AtÅ¡aukti" @@ -5787,9 +5838,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5801,6 +5850,14 @@ msgid "Imported Project" 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 "" @@ -5841,14 +5898,29 @@ msgid "Import Existing Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importuoti iÅ¡ Nodo:" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Sukurti" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "(Ä®diegta)" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5865,10 +5937,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5914,6 +5982,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6040,11 +6112,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6422,10 +6489,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6510,7 +6573,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6801,7 +6864,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6810,6 +6873,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7155,10 +7222,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7504,23 +7611,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +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 "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7535,6 +7646,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7603,7 +7721,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7662,6 +7780,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7709,8 +7834,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7775,8 +7900,8 @@ msgstr "(Kita)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/nb.po b/editor/translations/nb.po index 5843a0797c..623898fcb5 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -7,22 +7,22 @@ # Anonymous <GentleSaucepan@protonmail.com>, 2017. # flesk <eivindkn@gmail.com>, 2017. # Jørgen Aarmo Lund <jorgen.aarmo@gmail.com>, 2016. -# NicolaiF <nico-fre@hotmail.com>, 2017. +# NicolaiF <nico-fre@hotmail.com>, 2017-2018. # Norwegian Disaster <stian.furu.overbye@gmail.com>, 2017. # passeride <lukas@passeride.com>, 2017. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-05 23:48+0000\n" -"Last-Translator: flesk <eivindkn@gmail.com>\n" +"PO-Revision-Date: 2018-01-20 08:55+0000\n" +"Last-Translator: NicolaiF <nico-fre@hotmail.com>\n" "Language-Team: Norwegian BokmÃ¥l <https://hosted.weblate.org/projects/godot-" "engine/godot/nb/>\n" "Language: nb\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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -205,8 +205,7 @@ msgstr "Lag %d NYE spor og sett inn nøkler?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Lag" @@ -383,14 +382,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Erstattet %d forekomst(er)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Erstatt" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Erstatt Alle" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Match Tilfelle" @@ -399,48 +390,16 @@ msgid "Whole Words" msgstr "Hele Ord" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Kun Valgte" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Søk" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Finn" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Neste" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ikke funnet!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Erstatt Med" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Forskjell pÃ¥ smÃ¥ og store bokstaver" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Baklengs" +msgid "Replace" +msgstr "Erstatt" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Spør Ved Erstatning" +msgid "Replace All" +msgstr "Erstatt Alle" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Hopp Over" +msgid "Selection Only" +msgstr "Kun Valgte" #: editor/code_editor.cpp msgid "Zoom In" @@ -561,6 +520,16 @@ msgstr "Signaler" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Endre standard type" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Forandre" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Lag Ny" @@ -673,7 +642,8 @@ msgstr "" "Fjern dem likevel? (kan ikke angres)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Kan ikke fjerne:\n" #: editor/dependency_editor.cpp @@ -758,8 +728,9 @@ msgstr "Prosjektgrunnleggere" msgid "Lead Developer" msgstr "Utviklingsleder" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Prosjektleder" #: editor/editor_about.cpp @@ -848,7 +819,7 @@ msgid "Success!" msgstr "Suksess!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installer" @@ -937,7 +908,7 @@ msgstr "Fjern Effekt" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Lyd" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1116,11 +1087,11 @@ msgstr "Oppdaterer scene.." #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[tom]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ulagret]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1160,7 +1131,8 @@ msgid "Packing" msgstr "Pakking" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "Malfil ble ikke funnet:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1284,7 +1256,7 @@ msgstr "" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" -msgstr "" +msgstr "(Re)Importerer Assets" #: editor/editor_help.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp @@ -1372,6 +1344,21 @@ msgid "Description" msgstr "Beskrivelse" #: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Online Dokumentasjon" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Det finnes i øyeblikket ingen beskrivelse av denne metoden. Hjelp til ved Ã¥ " +"[colour=$color][url=$url]bidra med en[/url][/color]!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "Egenskaper" @@ -1407,6 +1394,10 @@ msgstr "" msgid "Search Text" msgstr "Søk Tekst" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Finn" + #: editor/editor_log.cpp msgid "Output:" msgstr "Output:" @@ -1418,6 +1409,11 @@ msgstr "Output:" msgid "Clear" msgstr "Tøm" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Output" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Feil ved lagring av ressurs!" @@ -1426,8 +1422,8 @@ msgstr "Feil ved lagring av ressurs!" msgid "Save Resource As.." msgstr "Lagre Ressurs Som.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp #, fuzzy msgid "I see.." msgstr "Jeg ser.." @@ -1482,8 +1478,10 @@ msgid "This operation can't be done without a tree root." msgstr "Denne operasjonen kan ikke gjennomføres uten en trerot." #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "Kunne ikke lagre scene. Sannsynligvis avhengigheter (instanser) ikke kunne " "oppfylles." @@ -1784,6 +1782,7 @@ msgstr "Kan ikke laste addon-skript fra bane: '%s'." msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." msgstr "" +"Kan ikke laste addon skript fra bane: Basistype '%s' er ikke en EditorPlugin." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." @@ -2092,13 +2091,20 @@ msgstr "Hjelp" msgid "Classes" msgstr "Klasser" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Søk" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Online Dokumentasjon" #: editor/editor_node.cpp msgid "Q&A" -msgstr "" +msgstr "SpørsmÃ¥l og Svar" #: editor/editor_node.cpp msgid "Issue Tracker" @@ -2482,7 +2488,8 @@ msgid "No version.txt found inside templates." msgstr "Ingen version.txt funnet i mal." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "Feil ved laging av sti for mal:\n" #: editor/export_template_manager.cpp @@ -2646,9 +2653,8 @@ msgid "View items as a list" msgstr "Vis elementer som liste" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "Status: Import av fil feilet. Vennligst reparer filen eller reimporter " @@ -2660,20 +2666,23 @@ msgid "Cannot move/rename resources root." msgstr "Kan ikke flytte/endre navn ressursrot" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +#, fuzzy +msgid "Cannot move a folder into itself." msgstr "Kan ikke flytte mappe inn i seg selv.\n" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +#, fuzzy +msgid "Error moving:" msgstr "Error ved flytting:\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Feil ved innlasting:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +#, fuzzy +msgid "Unable to update dependencies:" msgstr "Kan ikke oppdatere av avhengigheter:\n" #: editor/filesystem_dock.cpp @@ -3249,7 +3258,7 @@ msgstr "Blend 0:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend 1:" -msgstr "" +msgstr "Blend 1:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" @@ -3336,6 +3345,11 @@ msgstr "Rediger Node-Filtre" msgid "Filters.." msgstr "Filtre.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animasjon" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Frigjør" @@ -3505,6 +3519,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "ForhÃ¥ndsvis" @@ -3812,6 +3827,14 @@ msgstr "Legg til %s" msgid "Adding %s..." msgstr "Legger til %s.." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3823,11 +3846,6 @@ msgid "Error instancing scene from %s" msgstr "Error ved instansiering av scene fra %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Denne operasjonen krever én valgt node." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Endre standard type" @@ -4202,7 +4220,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4595,14 +4613,18 @@ msgstr "" msgid "Paste" msgstr "Lim inn" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Ressurs" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Fjern Nylige Filer" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +#, fuzzy +msgid "Close and save changes?" msgstr "" "Lukk og lagre endringer?\n" "\"" @@ -4681,6 +4703,11 @@ msgid "Copy Script Path" msgstr "Kopier Sti" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Vis I Filutforsker" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5114,84 +5141,84 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "Forandre" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Forandre" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5206,6 +5233,10 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Ingen foreldre Ã¥ instansere et barn pÃ¥." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Denne operasjonen krever én valgt node." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "" @@ -5279,16 +5310,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "Velg Modus" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5565,10 +5593,18 @@ msgstr "Kopier Noder" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5594,14 +5630,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5740,6 +5779,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5842,6 +5885,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Velg Gjeldende Mappe" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5949,9 +6017,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5963,6 +6029,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Kunne ikke opprette mappe." + +#: 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 "" @@ -6003,14 +6078,29 @@ msgid "Import Existing Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importer" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Opprett skript" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Installer" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -6027,10 +6117,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6076,6 +6162,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Prosjektleder" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6202,11 +6292,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Forandre" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6589,10 +6674,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6677,8 +6758,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "Ressurs" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6973,7 +7055,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6982,6 +7064,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Last Errors" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7332,10 +7419,57 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "Lager konturer..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Kunne ikke lage omriss!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Kunne ikke laste ressurs." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "Ferdig!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Kunne ikke laste ressurs." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Lag Omriss" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Prosjekt" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7699,23 +7833,31 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "" +#, fuzzy +msgid "Could not write file:" +msgstr "Kunne ikke opprette mappe." #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +#, fuzzy +msgid "Could not open template for export:" +msgstr "Kunne ikke opprette mappe." #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "" +#, fuzzy +msgid "Invalid export template:" +msgstr "HÃ¥ndter Eksportmaler" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +#, fuzzy +msgid "Could not read boot splash image file:" +msgstr "Kunne ikke opprette mappe." + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7730,6 +7872,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7798,7 +7947,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7857,6 +8006,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7902,8 +8058,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7969,8 +8125,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7997,6 +8153,27 @@ msgstr "" msgid "Invalid font size." msgstr "Ugyldig fontstørrelse." +#~ msgid "Next" +#~ msgstr "Neste" + +#~ msgid "Not found!" +#~ msgstr "Ikke funnet!" + +#~ msgid "Replace By" +#~ msgstr "Erstatt Med" + +#~ msgid "Case Sensitive" +#~ msgstr "Forskjell pÃ¥ smÃ¥ og store bokstaver" + +#~ msgid "Backwards" +#~ msgstr "Baklengs" + +#~ msgid "Prompt On Replace" +#~ msgstr "Spør Ved Erstatning" + +#~ msgid "Skip" +#~ msgstr "Hopp Over" + #~ msgid "Move Add Key" #~ msgstr "Flytt Legg-Til-Nøkkel" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 7d84e04306..c44ef3ebc8 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -10,26 +10,27 @@ # Cornee Traas <corneetraas@hotmail.com>, 2017. # Daeran Wereld <daeran@gmail.com>, 2017. # Dzejkop <jakubtrad@gmail.com>, 2017. +# Ferdinand de Coninck <ferdinand.deconinck@gmail.com>, 2018. # Maikel <maikel_martens_1@hotmail.com>, 2017. -# Pieter-Jan Briers <pieterjan.briers@gmail.com>, 2017. +# Pieter-Jan Briers <pieterjan.briers@gmail.com>, 2017-2018. # Robin Arys <robinarys@hotmail.com>, 2017. # Senno Kaasjager <senno.kaasjager@gmail.com>, 2017. -# Uxilo <jmolendijk93@gmail.com>, 2017. +# Uxilo <jmolendijk93@gmail.com>, 2017-2018. # Wout Standaert <wout@blobkat.com>, 2017. # Zatherz <zatherz@linux.pl>, 2017. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-20 15:43+0000\n" -"Last-Translator: Christophe Swolfs <swolfschristophe@gmail.com>\n" +"PO-Revision-Date: 2018-01-22 08:07+0000\n" +"Last-Translator: Pieter-Jan Briers <pieterjan.briers@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" "Language: nl\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 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -40,9 +41,8 @@ msgid "All Selection" msgstr "Alle Selectie" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Anim Wijzig Waarde" +msgstr "Anim Wijzig Keyframe Waarde" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -53,9 +53,8 @@ msgid "Anim Change Transform" msgstr "Anim Wijzig Transform" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Anim Wijzig Waarde" +msgstr "Anim Wijzig Keyframe Waarde" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -211,8 +210,7 @@ msgstr "Maak %d NIEUWE tracks aan en keys invoeren?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Maken" @@ -390,14 +388,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d voorgekomen waarde(s) vervangen." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Vervangen" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Alle Vervangen" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Hoofdlettergevoelig" @@ -406,48 +396,16 @@ msgid "Whole Words" msgstr "Hele Woorden" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Alleen Selectie" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Zoeken" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Zoeken" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Volgende" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Niet gevonden!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Vervangen Door" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Hoofdlettergevoelig" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Achterwaarts" +msgid "Replace" +msgstr "Vervangen" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Vragen Bij Vervangen" +msgid "Replace All" +msgstr "Alle Vervangen" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Overslaan" +msgid "Selection Only" +msgstr "Alleen Selectie" #: editor/code_editor.cpp msgid "Zoom In" @@ -549,9 +507,8 @@ msgid "Connecting Signal:" msgstr "Signaal aan het Verbinden:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Verbind '%s' met '%s'" +msgstr "Ontkoppel '%s' van '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -567,9 +524,17 @@ msgid "Signals" msgstr "Signalen" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Wijzig %s Type" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Wijzig" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Nieuwe Maken" +msgstr "Maake Nieuwe %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -682,8 +647,8 @@ msgstr "" "Toch verwijderen? (Kan niet ongedaan worden.)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Niet wisbaar:\n" +msgid "Cannot remove:" +msgstr "Niet te verwijderen:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -765,9 +730,9 @@ msgstr "Projectoprichters" msgid "Lead Developer" msgstr "Hoofdontwikkelaar" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Project Manager " #: editor/editor_about.cpp msgid "Developers" @@ -855,7 +820,7 @@ msgid "Success!" msgstr "Succes!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installeer" @@ -876,9 +841,8 @@ msgid "Rename Audio Bus" msgstr "Hernoem audiobus" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Verander audiobus solo" +msgstr "Verander Audio Bus Volume" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -893,9 +857,8 @@ msgid "Toggle Audio Bus Bypass Effects" msgstr "Verander audiobusomleiding" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Select Audio Bus Send" -msgstr "Selecteer audiobus verzend" +msgstr "Selecteer Audiobus Verzend" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus Effect" @@ -944,7 +907,7 @@ msgstr "Effect Verwijderen" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Audio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1123,11 +1086,11 @@ msgstr "Scene aan het updaten.." #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[leeg]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[niet opgeslagen]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1167,8 +1130,8 @@ msgid "Packing" msgstr "Inpakken" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Template bestand niet gevonden:\n" +msgid "Template file not found:" +msgstr "Template bestand niet gevonden:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1379,6 +1342,20 @@ msgid "Description" msgstr "Beschrijving" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Online Documentatie:" + +#: 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 "" +"Er is momenteel geen handleiding voor deze methode. Help ons alsjeblieft " +"door [color=$color][url=$url]een toe te voegen[/url][/color] of [color=" +"$color][url=$url2]een aan te vragen[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Eigenschappen" @@ -1414,6 +1391,10 @@ msgstr "" msgid "Search Text" msgstr "Zoek Tekst" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Zoeken" + #: editor/editor_log.cpp msgid "Output:" msgstr "Uitvoer:" @@ -1425,6 +1406,10 @@ msgstr "Uitvoer:" msgid "Clear" msgstr "Leegmaken" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Maak Uitvoer Leeg" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Error bij het opslaan van resource!" @@ -1433,8 +1418,8 @@ msgstr "Error bij het opslaan van resource!" msgid "Save Resource As.." msgstr "Resource Opslaan Als.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Ik snap het.." @@ -1488,10 +1473,11 @@ msgstr "Deze operatie kan niet gedaan worden zonder boomwortel." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Kon scene niet opslaan. Waarschijnlijk konden afhankelijkheden (instanties) " -"niet voldaan worden." +"Kon de scene niet opslaan. Waarschijnlijk konden afhankelijkheden " +"(instanties of erfelijkheden) niet voldaan worden." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1581,14 +1567,12 @@ msgstr "" "begrijpen." #: editor/editor_node.cpp -#, fuzzy msgid "Expand all properties" -msgstr "Klap alles uit" +msgstr "Klap alle eigenschappen uit" #: editor/editor_node.cpp -#, fuzzy msgid "Collapse all properties" -msgstr "Klap alles in" +msgstr "Klap alle eigenschappen in" #: editor/editor_node.cpp msgid "Copy Params" @@ -1709,6 +1693,7 @@ msgid "Export Mesh Library" msgstr "Exporteer Mesh Library" #: editor/editor_node.cpp +#, fuzzy msgid "This operation can't be done without a root node." msgstr "Deze bewerking is niet mogelijk zonder een hoofdknoop." @@ -2108,6 +2093,13 @@ msgstr "Help" msgid "Classes" msgstr "Klassen" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Zoeken" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Online Documentatie" @@ -2282,25 +2274,22 @@ msgid "Select" msgstr "Selecteer" #: editor/editor_node.cpp -#, fuzzy msgid "Open 2D Editor" -msgstr "Open 2D Editor" +msgstr "Open 2D Bewerker" #: editor/editor_node.cpp msgid "Open 3D Editor" msgstr "Open 3D Editor" #: editor/editor_node.cpp -#, fuzzy msgid "Open Script Editor" -msgstr "Open Script Editor" +msgstr "Open Script Bewerker" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" msgstr "Open Asset Bibliotheek" #: editor/editor_node.cpp -#, fuzzy msgid "Open the next Editor" msgstr "Open de volgende Editor" @@ -2383,14 +2372,12 @@ msgid "Frame #:" msgstr "Frame #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Tijd:" +msgstr "Tijd" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Aanroep" +msgstr "Aanroepen" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2497,8 +2484,8 @@ msgid "No version.txt found inside templates." msgstr "Geen version.txt gevonden in sjablonen." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Fout bij het maken van een pad voor sjablonen:\n" +msgid "Error creating path for templates:" +msgstr "Fout bij het maken van een pad voor sjablonen:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2533,9 +2520,8 @@ msgstr "Geen antwoord." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "Aanv. Mislukt." +msgstr "Aanvraag Mislukt." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2581,7 +2567,6 @@ msgid "Connecting.." msgstr "Verbinden.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "Kan niet verbinden" @@ -2659,34 +2644,30 @@ msgid "View items as a list" msgstr "Bekijk objecten als een lijst" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Status: Importeren van bestand mislukt. Repareer het bestand en importeer " -"handmatig opnieuw." +"opnieuw handmatig." #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." msgstr "Kan de hoofdmap voor resources niet verplaatsen of hernoemen." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Het is niet mogelijk om een map in zichzelf te stoppen.\n" +msgid "Cannot move a folder into itself." +msgstr "Het is niet mogelijk om een map in zichzelf te verplaatsen." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Fout bij het verplaatsen:\n" +msgid "Error moving:" +msgstr "Fout bij het verplaatsen:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Error bij het laden van:" +msgid "Error duplicating:" +msgstr "Fout bij het dupliceren:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Kon afhankelijkheden niet verversen:\n" +msgid "Unable to update dependencies:" +msgstr "Kon afhankelijkheden niet updaten:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2717,22 +2698,18 @@ msgid "Renaming folder:" msgstr "Hernoemen folder:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Dupliceren" +msgstr "Bestand dupliceren:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Hernoemen folder:" +msgstr "Folder dupliceren:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Expand all" msgstr "Klap alles uit" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Collapse all" msgstr "Klap alles in" @@ -2745,9 +2722,8 @@ msgid "Move To.." msgstr "Verplaats Naar.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Scene Openen" +msgstr "Scene(s) Openen" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2762,9 +2738,8 @@ msgid "View Owners.." msgstr "Bekijk eigenaren.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Dupliceren" +msgstr "Dupliceren.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2864,11 +2839,11 @@ msgstr "Scene Importeren.." #: editor/import/resource_importer_scene.cpp msgid "Generating Lightmaps" -msgstr "" +msgstr "Bouw Lightmappen" #: editor/import/resource_importer_scene.cpp msgid "Generating for Mesh: " -msgstr "" +msgstr "Bouw voor Mesh: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3097,7 +3072,6 @@ msgid "Save the current animation" msgstr "Sla de huidige animatie op" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Display list of animations in player." msgstr "Geef lijst van animaties weer in speler." @@ -3107,7 +3081,7 @@ msgstr "Automatisch afspelen bij laden" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Target Blend Times" -msgstr "" +msgstr "Bewerk Doel Mengtijden" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" @@ -3119,7 +3093,7 @@ msgstr "Kopieer Animatie" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning" -msgstr "" +msgstr "Ui Schillen" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" @@ -3161,7 +3135,7 @@ msgstr "Alleen verschillen" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" -msgstr "" +msgstr "Forceer Witte Modulatie" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" @@ -3233,14 +3207,12 @@ msgid "Auto Restart:" msgstr "Automatische herstart:" #: editor/plugins/animation_tree_editor_plugin.cpp -#, fuzzy msgid "Restart (s):" -msgstr "Herstart (en):" +msgstr "Herstarten (s):" #: editor/plugins/animation_tree_editor_plugin.cpp -#, fuzzy msgid "Random Restart (s):" -msgstr "Willekeurige herstart (en):" +msgstr "Willekeurige Herstart (s):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Start!" @@ -3257,15 +3229,15 @@ msgstr "Mengen" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend 0:" -msgstr "" +msgstr "Meng 0:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend 1:" -msgstr "" +msgstr "Meng 1:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "" +msgstr "X-Fade Tijd (en):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Current:" @@ -3277,11 +3249,11 @@ msgstr "Voeg invoer toe" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "" +msgstr "Verwijder Automatische Voortgang." #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "" +msgstr "Automatische voortgang instellen" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" @@ -3301,35 +3273,35 @@ msgstr "Animatie Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "OneShot Node" -msgstr "" +msgstr "OneShot Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix Node" -msgstr "" +msgstr "Mix Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend2 Node" -msgstr "" +msgstr "Blend2 Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend3 Node" -msgstr "" +msgstr "Blend3 Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend4 Node" -msgstr "" +msgstr "Blend4 Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeScale Node" -msgstr "" +msgstr "TimeScale Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "" +msgstr "TimeSeek Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Transition Node" -msgstr "" +msgstr "Transition Node" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." @@ -3341,7 +3313,11 @@ msgstr "Wijzig Node Filters" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Filters.." -msgstr "" +msgstr "Filters..." + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimatieBoom" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" @@ -3413,7 +3389,7 @@ msgstr "Fout bij opvragen" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" -msgstr "" +msgstr "Inactief" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Retry" @@ -3451,7 +3427,7 @@ msgstr "Alle" #: editor/plugins/asset_library_editor_plugin.cpp #: editor/project_settings_editor.cpp msgid "Plugins" -msgstr "" +msgstr "Plugins" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Sort:" @@ -3493,58 +3469,66 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Kan geen opslag pad voor de lichtmappen bepalen.\n" +"Sla jouw scène op (om lichtmappen op te slaan in dezelfde map) of kies een " +"opslag pad vanaf de BakedLightmap eigenschappen." #: 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 "" +"Geen meshes om te bakken. Zorg ervoor dat ze een UV2 kanaal bevatten en dat " +"'Bake Light' vlag aan staat." #: 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." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "" +msgstr "Bak Lichtmappen" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Voorbeeld" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "" +msgstr "Configureer Snap" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Offset:" -msgstr "" +msgstr "Raster Verplaatsing:" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Step:" -msgstr "" +msgstr "Raster Stap:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "" +msgstr "Rotatie Verplaatsing:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" -msgstr "" +msgstr "Rotatie Stap:" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Pivot" -msgstr "" +msgstr "Verplaats Draaipunt" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Action" -msgstr "" +msgstr "Verplaats Actie" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move vertical guide" -msgstr "" +msgstr "Verplaats vertical gids" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Create new vertical guide" @@ -3572,7 +3556,7 @@ msgstr "Maak nieuwe horizontale en verticale gidsen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit IK Chain" -msgstr "" +msgstr "Bewerk IK Ketting" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit CanvasItem" @@ -3592,7 +3576,7 @@ msgstr "Wijzig Ankers" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" -msgstr "" +msgstr "Plak Houding" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Select Mode" @@ -3600,7 +3584,7 @@ msgstr "Selecteer Modus" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" -msgstr "" +msgstr "Sleep: Roteer" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+Drag: Move" @@ -3609,6 +3593,8 @@ msgstr "Alt + Slepen : Verplaatsen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" +"Druk 'v' om het draaipunt aan te passen, 'Shift+v' om het draaipunt te " +"slepen (tijdens het bewegen)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" @@ -3633,11 +3619,11 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "" +msgstr "Klik om het draaipunt van het object aan te passen." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" -msgstr "" +msgstr "Verschuif Modus" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -3646,11 +3632,11 @@ msgstr "Breekpunt Aan- of Uitschakelen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Snap" -msgstr "" +msgstr "Gebruik Uitlijnen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snapping options" -msgstr "" +msgstr "Uitlijnen opties" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to grid" @@ -3662,35 +3648,38 @@ msgstr "Gebruik Rotatie Snap" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap..." -msgstr "" +msgstr "Configureer Uitlijnen..." #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap Relative" -msgstr "" +msgstr "Uitlijn Relatief" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "" +msgstr "Gebruik Pixel Uitlijnen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Smart snapping" msgstr "Slim Uitlijnen" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap to parent" -msgstr "" +msgstr "Uitlijnen naar ouder" #: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Snap to node anchor" -msgstr "" +msgstr "Uitlijnen naar node anker" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to node sides" -msgstr "" +msgstr "Uitlijnen naar node zijden" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to other nodes" -msgstr "" +msgstr "Uitlijnen naar andere nodes" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to guides" @@ -3710,30 +3699,33 @@ msgstr "Ontgrendel het geselecteerde object (kan verplaatst worden)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." msgstr "" +"Zorgt ervoor dat de kinderen van dit object niet geselecteerd kunnen worden." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Restores the object's children's ability to be selected." msgstr "" +"Herstelt de mogelijkheid van selecteerbaarheid bij de kinderen van het " +"object." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" -msgstr "" +msgstr "Maak Botten" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" -msgstr "" +msgstr "Maak Botten Leeg" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" -msgstr "" +msgstr "Laat Botten Zien" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" -msgstr "" +msgstr "Maak IK Ketting" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear IK Chain" -msgstr "" +msgstr "Maak IK Ketting Leeg" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -3759,39 +3751,39 @@ msgstr "Toon hulplijnen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" -msgstr "" +msgstr "Centreer Selectie" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" -msgstr "" +msgstr "Raam Selectie" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Layout" -msgstr "" +msgstr "Indeling" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Keys" -msgstr "" +msgstr "Voer Sleutels In" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "" +msgstr "Voer Sleutel in" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "" +msgstr "Voeg Sleutel in (Bestaande Banen)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" -msgstr "" +msgstr "Kopieer Houding" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Pose" -msgstr "" +msgstr "Maak Houding Leeg" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag pivot from mouse position" -msgstr "" +msgstr "Versleep draaipunt vanaf muispositie" #: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy @@ -3800,19 +3792,27 @@ msgstr "Verwijder Signaal" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" -msgstr "" +msgstr "Vermenigvuldig rasterstap met 2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Divide grid step by 2" -msgstr "" +msgstr "Deel rasterstap door 2" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Add %s" -msgstr "" +msgstr "Voeg %s Toe" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Adding %s..." -msgstr "" +msgstr "%s aan het toevoegen..." + +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Oké" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "Kan niet meerdere knooppunten instantiëren zonder een wortel." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -3822,12 +3822,7 @@ msgstr "Creëer Node" #: 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 -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "" +msgstr "Er is iets misgegaan bij het instantiëren van scene vanaf %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" @@ -3838,6 +3833,8 @@ 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" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" @@ -3845,7 +3842,7 @@ msgstr "Maak Poly3D" #: editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" -msgstr "" +msgstr "Stel Handgreep In" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" @@ -3863,19 +3860,19 @@ msgstr "Verwijder Geselecteerde Item" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import from Scene" -msgstr "" +msgstr "Importeer vanaf de Scene" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "Werk bij vanaf de Scene" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat0" -msgstr "" +msgstr "Plat0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat1" -msgstr "" +msgstr "Plat1" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy @@ -3884,23 +3881,23 @@ msgstr "Schaal Selectie" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease out" -msgstr "" +msgstr "Neem af naar buiten" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "" +msgstr "Gelijke stap" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" -msgstr "" +msgstr "Wijzig Curve Punt" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Tangent" -msgstr "" +msgstr "Wijzig Curve Raaklijn" #: editor/plugins/curve_editor_plugin.cpp msgid "Load Curve Preset" -msgstr "" +msgstr "Laad Curve Preset" #: editor/plugins/curve_editor_plugin.cpp msgid "Add point" @@ -3917,11 +3914,11 @@ msgstr "Lineair" #: editor/plugins/curve_editor_plugin.cpp msgid "Right linear" -msgstr "" +msgstr "Rechtslijnig" #: editor/plugins/curve_editor_plugin.cpp msgid "Load preset" -msgstr "" +msgstr "Laad voorinstelling" #: editor/plugins/curve_editor_plugin.cpp #, fuzzy @@ -3930,98 +3927,108 @@ msgstr "Verwijder Signaal" #: editor/plugins/curve_editor_plugin.cpp msgid "Toggle Curve Linear Tangent" -msgstr "" +msgstr "Schakel Curve Lineaire Raaklijn" #: editor/plugins/curve_editor_plugin.cpp msgid "Hold Shift to edit tangents individually" -msgstr "" +msgstr "Houd Shift ingedrukt om de raaklijnen individueel te bewerken" #: editor/plugins/gi_probe_editor_plugin.cpp +#, fuzzy msgid "Bake GI Probe" -msgstr "" +msgstr "Bak GI Probe" #: editor/plugins/gradient_editor_plugin.cpp +#, fuzzy msgid "Add/Remove Color Ramp Point" -msgstr "" +msgstr "Verwijder/Voeg Kleuren Hellings Punt Toe" #: editor/plugins/gradient_editor_plugin.cpp #: editor/plugins/shader_graph_editor_plugin.cpp +#, fuzzy msgid "Modify Color Ramp" -msgstr "" +msgstr "Wijzig Kleuren Helling" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" -msgstr "" +msgstr "Item %d" #: editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "" +msgstr "Items" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "" +msgstr "Item Lijst Editor" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "" "No OccluderPolygon2D resource on this node.\n" "Create and assign one?" msgstr "" +"Geen OccluderPolygon2D resource op deze node.\n" +"Creëer en wijs een toe?" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" -msgstr "" +msgstr "Creëer Occluder Polygon" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "" +msgstr "Creëer een compleet nieuwe polygon." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Edit existing polygon:" -msgstr "" +msgstr "Wijzig bestaande polygon:" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "LMB: Move Point." -msgstr "" +msgstr "LMB: Verplaats Punt." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "" +msgstr "Ctrl+LMB: Splits Segment." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "RMB: Erase Point." -msgstr "" +msgstr "RMB: Verwijder Punt." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "Mesh is leeg!" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Static Trimesh Body" -msgstr "" +msgstr "Creëer Statisch Trimesh Lichaam" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Static Convex Body" -msgstr "" +msgstr "Creëer Statisch Convex Lichaam" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" -msgstr "" +msgstr "Dit werkt niet op scene root!" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Trimesh Shape" -msgstr "" +msgstr "Creëer Trimesh Vorm" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Convex Shape" -msgstr "" +msgstr "Creëer Convexe Vorm" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "" +msgstr "Creëer Navigatie Mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Bevatte Mesh is niet van type ArrayMesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" @@ -4032,110 +4039,117 @@ msgid "No mesh to debug." msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Model has no UV in this layer" -msgstr "" +msgstr "Model heeft geen UV in deze laag" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "MeshInstance ontbreekt een Mesh!" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Mesh has not surface to create outlines from!" -msgstr "" +msgstr "Mesh heeft geen oppervlakte om omlijning van te maken!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" -msgstr "" +msgstr "Kon omlijning niet maken!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" -msgstr "" +msgstr "Creëer Omlijning" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "" +msgstr "Mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "" +msgstr "Creëer Trimesh Statisch Lichaam" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "" +msgstr "Creëer Convex Statisch Lichaam" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Trimesh Collision Sibling" -msgstr "" +msgstr "Creëer Trimesh Botsings Broer" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Convex Collision Sibling" -msgstr "" +msgstr "Creëer Convex Botsings Broer" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Outline Mesh.." -msgstr "" +msgstr "Creëer Omlijning Mesh.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Weergeven" +msgstr "Geef UV1 Weer" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Weergeven" +msgstr "Geef UV2 Weer" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Outline Mesh" -msgstr "" +msgstr "Creëer Omlijning Mesh" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Outline Size:" -msgstr "" +msgstr "Omlijning Grootte:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "" +msgstr "Geen mesh bron gespecificeerd (en geen MultiMesh ingesteld in node)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "" +msgstr "Geen mesh bron gespecificeerd (en MultiMesh bevat geen Mesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "" +msgstr "Mesh bron is ongeldig (ongeldig pad)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "" +msgstr "Mesh bron is ongeldig (niet een MeshInstance)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "" +msgstr "Mesh bron is ongeldig (bevat geen Mesh resource)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." -msgstr "" +msgstr "Geen oppervlakte bron gespecificeerd." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "" +msgstr "Oppervlakte bron is ongeldig (ongeldig pad)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." -msgstr "" +msgstr "Oppervlakte bron is ongeldig (geen geometrie)." #: editor/plugins/multimesh_editor_plugin.cpp +#, fuzzy msgid "Surface source is invalid (no faces)." -msgstr "" +msgstr "Oppervlakte bron is ongeldig (geen vlakken)." #: editor/plugins/multimesh_editor_plugin.cpp +#, fuzzy msgid "Parent has no solid faces to populate." -msgstr "" +msgstr "Ouder heeft geen vaste vlakken om te bevolken." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Couldn't map area." @@ -4143,11 +4157,11 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "" +msgstr "Selecteer een Bron Mesh:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "" +msgstr "Selecteer een Doel Oppervlakte:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" @@ -4159,67 +4173,67 @@ msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" -msgstr "" +msgstr "Doel Oppervlakte:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "" +msgstr "Bron Mesh:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "" +msgstr "X-As" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "" +msgstr "Y-As" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" -msgstr "" +msgstr "Z-As" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "" +msgstr "Mesh Boven As:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "" +msgstr "Willekeurige Rotatie:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" -msgstr "" +msgstr "Willekeurige Tilt:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" -msgstr "" +msgstr "Willekeurige Schaal:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate" -msgstr "" +msgstr "Bevolken" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Bake!" -msgstr "" +msgstr "Bakken!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "" +msgid "Bake the navigation mesh." +msgstr "Bak de navigatie mesh." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "" +msgstr "Leeg de navigatie mesh." #: editor/plugins/navigation_mesh_generator.cpp msgid "Setting up Configuration..." -msgstr "" +msgstr "Configuratie aan het instellen..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Calculating grid size..." -msgstr "" +msgstr "Raster groote uitrekenen..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating heightfield..." -msgstr "" +msgstr "Hoogteveld aan het creëeren..." #: editor/plugins/navigation_mesh_generator.cpp #, fuzzy @@ -4227,8 +4241,9 @@ msgid "Marking walkable triangles..." msgstr "Lokale wijziging aan het opslaan.." #: editor/plugins/navigation_mesh_generator.cpp +#, fuzzy msgid "Constructing compact heightfield..." -msgstr "" +msgstr "Compact hoogteveld aan het bouwen..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Eroding walkable area..." @@ -4236,15 +4251,15 @@ msgstr "" #: editor/plugins/navigation_mesh_generator.cpp msgid "Partitioning..." -msgstr "" +msgstr "Partitioneren..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating contours..." -msgstr "" +msgstr "Contouren aan het creëeren..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "" +msgstr "Polymesh aan het creëeren..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." @@ -4260,16 +4275,16 @@ msgstr "" #: editor/plugins/navigation_mesh_generator.cpp msgid "Done!" -msgstr "" +msgstr "Klaar!" #: editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Navigation Polygon" -msgstr "" +msgstr "Creëer Navigatie Polygoon" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "" +msgstr "AABB Genereren" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -4596,14 +4611,17 @@ msgstr "" msgid "Paste" msgstr "Plakken" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Resource" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4681,6 +4699,11 @@ msgid "Copy Script Path" msgstr "Kopieer Pad" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Weergeven in Bestandsbeheer" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5119,85 +5142,85 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "" +#, fuzzy +msgid "Material Changes" +msgstr "Lokale wijziging aan het opslaan.." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "Wijzig" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Material Changes" -msgstr "Lokale wijziging aan het opslaan.." +msgid "Right View." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Wijzig" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5212,6 +5235,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5291,17 +5318,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "Preview:" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "Selecteer Modus" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5579,10 +5602,18 @@ msgstr "Kopiëer Nodes" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5608,14 +5639,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5755,6 +5789,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5858,6 +5896,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "De bewerkte bron opslaan." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Annuleren" @@ -5971,9 +6034,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5985,6 +6046,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "Map kon niet gemaakt worden." + +#: 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 "" @@ -6026,14 +6096,29 @@ msgid "Import Existing Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Importeren" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Creëer Node" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "Installeer" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -6051,10 +6136,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6101,6 +6182,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Project Manager" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6229,11 +6314,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Wijzig" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6619,10 +6699,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6708,7 +6784,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "Resource" #: editor/scene_tree_dock.cpp @@ -7013,7 +7089,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -7022,6 +7098,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Laadfouten" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7375,10 +7456,55 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Mislukt om resource te laden." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Mislukt om resource te laden." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Mislukt om resource te laden." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Subscriptie Maken" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Project" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7758,27 +7884,32 @@ msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "Map kon niet gemaakt worden." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "Map kon niet gemaakt worden." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Ongeldige index eigenschap naam." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "Map kon niet gemaakt worden." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "Map kon niet gemaakt worden." + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "Map kon niet gemaakt worden." #: scene/2d/animated_sprite.cpp @@ -7798,6 +7929,13 @@ msgstr "" "geïnstantieerde scenes). De eerst gemaakte zal werken, terwijl de rest " "genegeerd wordt." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7888,7 +8026,7 @@ msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is." #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7950,6 +8088,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8007,8 +8152,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8081,9 +8226,10 @@ msgid "(Other)" msgstr "(Andere)" #: scene/main/scene_tree.cpp +#, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"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." @@ -8116,12 +8262,33 @@ msgstr "Fout bij het laden van lettertype." msgid "Invalid font size." msgstr "Ongeldige lettertype grootte." -#~ msgid "Move Add Key" -#~ msgstr "Verplaats Key Toevoegen" +#~ msgid "Next" +#~ msgstr "Volgende" + +#~ msgid "Not found!" +#~ msgstr "Niet gevonden!" + +#~ msgid "Replace By" +#~ msgstr "Vervangen Door" + +#~ msgid "Case Sensitive" +#~ msgstr "Hoofdlettergevoelig" + +#~ msgid "Backwards" +#~ msgstr "Achterwaarts" + +#~ msgid "Prompt On Replace" +#~ msgstr "Vragen Bij Vervangen" + +#~ msgid "Skip" +#~ msgstr "Overslaan" #, fuzzy -#~ msgid "Create Subscription" -#~ msgstr "Subscriptie Maken" +#~ msgid "preview" +#~ msgstr "Preview:" + +#~ msgid "Move Add Key" +#~ msgstr "Verplaats Key Toevoegen" #~ msgid "List:" #~ msgstr "Lijst:" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index cc543c97bb..f5b08d11c1 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -7,14 +7,15 @@ # Adam Wolanski <adam.wolanski94@gmail.com>, 2017. # Adrian WÄ™cÅ‚awski <weclawskiadrian@gmail.com>, 2016. # aelspire <aelspire@gmail.com>, 2017. -# Daniel Lewan <vision360.daniel@gmail.com>, 2016-2017. +# Daniel Lewan <vision360.daniel@gmail.com>, 2016-2018. # heya10 <igor.gielzak@gmail.com>, 2017. # holistyczny interlokutor <jakubowesmieci@gmail.com>, 2017. # Kajetan KuszczyÅ„ski <kajetanek99@gmail.com>, 2016. # Kamil Lewan <lewan.kamil@gmail.com>, 2016. # Karol Walasek <coreconviction@gmail.com>, 2016. -# Maksymilian Åšwiąć <maksymilian.swiac@gmail.com>, 2017. +# Maksymilian Åšwiąć <maksymilian.swiac@gmail.com>, 2017-2018. # Mietek SzczeÅ›niak <ravaging@go2.pl>, 2016. +# NeverK <neverkoxu@gmail.com>, 2018. # Rafal Brozio <rafal.brozio@gmail.com>, 2016. # RafaÅ‚ Ziemniak <synaptykq@gmail.com>, 2017. # Sebastian Krzyszkowiak <dos@dosowisko.net>, 2017. @@ -25,8 +26,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-20 15:43+0000\n" -"Last-Translator: RafaÅ‚ Ziemniak <synaptykq@gmail.com>\n" +"PO-Revision-Date: 2018-01-22 08:08+0000\n" +"Last-Translator: Maksymilian Åšwiąć <maksymilian.swiac@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -34,7 +35,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -45,9 +46,8 @@ msgid "All Selection" msgstr "Wszystkie zaznaczenia" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "ZmieÅ„ wartość" +msgstr "ZmieÅ„ czas klatki kluczowej" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -58,9 +58,8 @@ msgid "Anim Change Transform" msgstr "Animacja transformacji" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "ZmieÅ„ wartość" +msgstr "ZmieÅ„ wartość klatki kluczowej" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -103,6 +102,7 @@ msgid "Anim Track Change Value Mode" msgstr "ZmieÅ„ tryb wartoÅ›ci animacji" #: editor/animation_editor.cpp +#, fuzzy msgid "Anim Track Change Wrap Mode" msgstr "Åšcieżka Animacji - ZmieÅ„ Tryb Zawijania" @@ -216,8 +216,7 @@ msgstr "Utworzyć NOWÄ„ Å›cieżkÄ™ i dodać klatkÄ™ kluczowÄ…?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Utwórz" @@ -391,15 +390,7 @@ msgstr "Nie znaleziono" #: editor/code_editor.cpp msgid "Replaced %d occurrence(s)." -msgstr "Zamieniono %d wystÄ…pieÅ„." - -#: editor/code_editor.cpp -msgid "Replace" -msgstr "ZastÄ…p" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "ZastÄ…p wszystkie" +msgstr "ZastÄ…piono %d wystÄ…pieÅ„." #: editor/code_editor.cpp msgid "Match Case" @@ -410,48 +401,16 @@ msgid "Whole Words" msgstr "CaÅ‚e sÅ‚owa" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Tylko zaznaczenie" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Szukaj" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Szukaj" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "NastÄ™pny" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Nie znaleziono!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "ZastÄ…p przez" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Z uwzglÄ™dnieniem wielkoÅ›ci liter" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Wstecz" +msgid "Replace" +msgstr "ZastÄ…p" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Zaptytaj przy zastÄ…pieniu" +msgid "Replace All" +msgstr "ZastÄ…p wszystkie" #: editor/code_editor.cpp -msgid "Skip" -msgstr "PomiÅ„" +msgid "Selection Only" +msgstr "Tylko zaznaczenie" #: editor/code_editor.cpp msgid "Zoom In" @@ -553,9 +512,8 @@ msgid "Connecting Signal:" msgstr "Połączony sygnaÅ‚:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Połącz '%s' z '%s'" +msgstr "Rozłącz '%s' z '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -571,9 +529,17 @@ msgid "Signals" msgstr "SygnaÅ‚y" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "ZmieÅ„ typ %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "ZmieÅ„" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Utwórz nowy" +msgstr "Utwórz nowy %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -683,8 +649,8 @@ msgstr "" "Usunąć mimo to? (Nie można tego cofnąć)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Nie można usunąć:\n" +msgid "Cannot remove:" +msgstr "Nie można usunąć:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -739,14 +705,12 @@ msgid "Delete" msgstr "UsuÅ„" #: editor/dictionary_property_edit.cpp -#, fuzzy msgid "Change Dictionary Key" -msgstr "ZmieÅ„ Klawisz Tablicy" +msgstr "ZmieÅ„ klucz tablicy" #: editor/dictionary_property_edit.cpp -#, fuzzy msgid "Change Dictionary Value" -msgstr "ZmieÅ„ Wartość Tablicy" +msgstr "ZmieÅ„ wartość sÅ‚ownika" #: editor/editor_about.cpp msgid "Thanks from the Godot community!" @@ -768,9 +732,9 @@ msgstr "ZaÅ‚ożyciele projektu" msgid "Lead Developer" msgstr "Deweloper naczelny" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Menedżer projektów" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Menedżer projektu " #: editor/editor_about.cpp msgid "Developers" @@ -858,7 +822,7 @@ msgid "Success!" msgstr "Sukces!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Zainstaluj" @@ -879,9 +843,8 @@ msgid "Rename Audio Bus" msgstr "ZmieÅ„ nazwÄ™ magistrali audio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Przełącz tryb solo magistrali audio" +msgstr "ZmieÅ„ gÅ‚oÅ›ność magistrali audio" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -892,9 +855,8 @@ msgid "Toggle Audio Bus Mute" msgstr "Przełącz wyciszenie magistrali audio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Toggle Audio Bus Bypass Effects" -msgstr "Przełącz pominiÄ™cie efektu magistrali audio" +msgstr "Przełącz ominiÄ™cie efektów w magistrali audio" #: editor/editor_audio_buses.cpp msgid "Select Audio Bus Send" @@ -947,7 +909,7 @@ msgstr "UsuÅ„ efekt" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "DźwiÄ™k" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1073,9 +1035,8 @@ msgid "Rename Autoload" msgstr "ZmieÅ„ nazwÄ™ Autoload" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Toggle AutoLoad Globals" -msgstr "Przełącz zmienne globalne w AutoLoad" +msgstr "Przełącz automatycznie Å‚adowane zmienne globalne" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" @@ -1124,13 +1085,12 @@ msgid "Updating scene.." msgstr "Aktualizacja sceny .." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(pusty)" +msgstr "[pusty]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[niezapisany]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1170,17 +1130,16 @@ msgid "Packing" msgstr "Pakowanie" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Nie znaleziono pliku szablonu:\n" +msgid "Template file not found:" +msgstr "Nie znaleziono pliku szablonu:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" msgstr "Plik istnieje, nadpisać?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select Current Folder" -msgstr "Utwórz katalog" +msgstr "Wybierz bieżący katalog" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" @@ -1304,7 +1263,7 @@ msgstr "Wyszukaj w Pomocy" #: editor/editor_help.cpp msgid "Class List:" -msgstr "List klas:" +msgstr "Lista klas:" #: editor/editor_help.cpp msgid "Search Classes" @@ -1348,7 +1307,7 @@ msgstr "Metody publiczne:" #: editor/editor_help.cpp msgid "GUI Theme Items" -msgstr "Elementy motywu interfejsu:" +msgstr "Elementy motywu interfejsu" #: editor/editor_help.cpp msgid "GUI Theme Items:" @@ -1383,6 +1342,21 @@ msgid "Description" msgstr "Opis" #: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Poradniki" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Obecnie nie ma opisu dla tej metody. Pomóż nam, [color=$color][url=" +"$url]wysyÅ‚ajÄ…c jÄ…[/url][/color]!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "WÅ‚aÅ›ciwoÅ›ci" @@ -1418,6 +1392,10 @@ msgstr "" msgid "Search Text" msgstr "Wyszukaj w tekÅ›cie" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Szukaj" + #: editor/editor_log.cpp msgid "Output:" msgstr "WyjÅ›cie:" @@ -1429,6 +1407,10 @@ msgstr "WyjÅ›cie:" msgid "Clear" msgstr "Wyczyść" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Wyczyść dane wyjÅ›ciowe" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Błąd podczas zapisu zasobu!" @@ -1437,8 +1419,8 @@ msgstr "Błąd podczas zapisu zasobu!" msgid "Save Resource As.." msgstr "Zapisz zasób jako..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "WidzÄ™.." @@ -1476,7 +1458,7 @@ msgstr "Błąd Å‚adowania '%s'." #: editor/editor_node.cpp msgid "Saving Scene" -msgstr "Zapisywanie Sceny" +msgstr "Zapisywanie sceny" #: editor/editor_node.cpp msgid "Analyzing" @@ -1484,7 +1466,7 @@ msgstr "Analizowanie" #: editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "Tworzenie Miniatury" +msgstr "Tworzenie miniatury" #: editor/editor_node.cpp msgid "This operation can't be done without a tree root." @@ -1492,10 +1474,11 @@ msgstr "Ta operacja nie może zostać wykonana bez sceny." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Nie udaÅ‚o siÄ™ zapisać sceny. Najprawdopodobniej pewne zależnoÅ›ci nie sÄ… " -"speÅ‚nione." +"Nie udaÅ‚o siÄ™ zapisać sceny. Najprawdopodobniej pewne zależnoÅ›ci " +"(instancjonowanie lub dziedziczenie) nie sÄ… speÅ‚nione." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1584,14 +1567,12 @@ msgstr "" "pracy." #: editor/editor_node.cpp -#, fuzzy msgid "Expand all properties" -msgstr "RozwiÅ„ foldery" +msgstr "RozwiÅ„ wszystkie wÅ‚aÅ›ciwoÅ›ci" #: editor/editor_node.cpp -#, fuzzy msgid "Collapse all properties" -msgstr "ZwiÅ„ foldery" +msgstr "ZwiÅ„ wszystkie wÅ‚aÅ›ciwoÅ›ci" #: editor/editor_node.cpp msgid "Copy Params" @@ -1610,7 +1591,6 @@ msgid "Copy Resource" msgstr "Kopiuj zasób" #: editor/editor_node.cpp -#, fuzzy msgid "Make Built-In" msgstr "Skrypt wbudowany" @@ -1794,7 +1774,6 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Nie można zaÅ‚adować skryptu dodatku z Å›cieżki: '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." msgstr "" @@ -1900,9 +1879,8 @@ msgid "Previous tab" msgstr "Poprzednia zakÅ‚adka" #: editor/editor_node.cpp -#, fuzzy msgid "Filter Files.." -msgstr "Szybkie filtry plików.." +msgstr "Filtrowanie plików..." #: editor/editor_node.cpp msgid "Operations with scene files." @@ -1963,9 +1941,8 @@ msgid "Revert Scene" msgstr "Resetuj scenÄ™" #: editor/editor_node.cpp -#, fuzzy msgid "Miscellaneous project or scene-wide tools." -msgstr "Różne projekty lub narzÄ™dzia dla scen." +msgstr "Różne narzÄ™dzia dla scen lub projektu." #: editor/editor_node.cpp msgid "Project" @@ -2107,6 +2084,13 @@ msgstr "Pomoc" msgid "Classes" msgstr "Klasy" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Szukaj" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Dokumentacja online" @@ -2145,7 +2129,7 @@ msgstr "Zapauzuj scenÄ™" #: editor/editor_node.cpp msgid "Stop the scene." -msgstr "Zatrzymaj scene." +msgstr "Zatrzymaj scenÄ™." #: editor/editor_node.cpp msgid "Stop" @@ -2157,7 +2141,7 @@ msgstr "Uruchom aktualnie edytowanÄ… scenÄ™." #: editor/editor_node.cpp msgid "Play Scene" -msgstr "Odtwórz Scene" +msgstr "Odtwórz scenÄ™" #: editor/editor_node.cpp msgid "Play custom scene" @@ -2355,12 +2339,11 @@ msgstr "Åšredni Czas (sek)" #: editor/editor_profiler.cpp msgid "Frame %" -msgstr "% Ramek" +msgstr "Klatka %" #: editor/editor_profiler.cpp -#, fuzzy msgid "Physics Frame %" -msgstr "% Ramek Fixed" +msgstr "Klatki Fizyki %" #: editor/editor_profiler.cpp editor/script_editor_debugger.cpp msgid "Time:" @@ -2379,27 +2362,25 @@ msgid "Frame #:" msgstr "Klatka #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Czas:" +msgstr "Czas" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "WywoÅ‚anie" +msgstr "WywoÅ‚ania" #: editor/editor_run_native.cpp msgid "Select device from the list" msgstr "Wybierz urzÄ…dzenie z listy" #: editor/editor_run_native.cpp -#, fuzzy msgid "" "No runnable export preset found for this platform.\n" "Please add a runnable preset in the export menu." msgstr "" -"Nie znaleziono uruchamianej konfiguracji eksportu dla tej platformy.\n" -"Dodaj konfiguracjÄ™ z menu eksportu." +"Nie znaleziono możliwej do uruchomienia konfiguracji eksportu dla tej " +"platformy.\n" +"Dodaj poprawnÄ… konfiguracjÄ™ z menu eksportu." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -2494,8 +2475,8 @@ msgid "No version.txt found inside templates." msgstr "Nie znaleziono pliku version.txt w szablonach." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Błąd tworzenia Å›cieżki dla szablonów:\n" +msgid "Error creating path for templates:" +msgstr "Błąd tworzenia Å›cieżki dla szablonów:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2530,7 +2511,6 @@ msgstr "Brak odpowiedzi." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Żądanie nie powiodÅ‚o siÄ™." @@ -2565,7 +2545,6 @@ msgid "Disconnected" msgstr "Rozłączono" #: editor/export_template_manager.cpp -#, fuzzy msgid "Resolving" msgstr "RozwiÄ…zywanie" @@ -2579,7 +2558,6 @@ msgid "Connecting.." msgstr "ÅÄ…czenie.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "Nie można połączyć" @@ -2655,11 +2633,8 @@ msgid "View items as a list" msgstr "WyÅ›wietlanie elementów jako listÄ™" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Status: Importowanie pliku nie powiodÅ‚o siÄ™. ProszÄ™ naprawić plik i ponownie " "zaimportować rÄ™cznie." @@ -2668,21 +2643,20 @@ msgid "Cannot move/rename resources root." msgstr "Nie można przenieść/zmienić nazwy źródÅ‚owego zasobu." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Nie można przenieść katalogu do siebie samego.\n" +msgid "Cannot move a folder into itself." +msgstr "Nie można przenieść katalogu do siebie samego." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Błąd przenoszenia:\n" +msgid "Error moving:" +msgstr "Błąd przenoszenia:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Błąd Å‚adowania:" +msgid "Error duplicating:" +msgstr "Błąd duplikacji:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Nie można zaktualizować zależnoÅ›ci:\n" +msgid "Unable to update dependencies:" +msgstr "Nie można zaktualizować zależnoÅ›ci:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2713,14 +2687,12 @@ msgid "Renaming folder:" msgstr "Zmiana nazwy folderu:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Duplikuj" +msgstr "Duplikowanie pliku:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Zmiana nazwy folderu:" +msgstr "Duplikowanie Folderu:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2739,9 +2711,8 @@ msgid "Move To.." msgstr "PrzenieÅ› Do..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Otwórz scenÄ™" +msgstr "Otwórz ScenÄ™/y" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2756,9 +2727,8 @@ msgid "View Owners.." msgstr "Pokaż wÅ‚aÅ›cicieli.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Duplikuj" +msgstr "Duplikuj.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2826,9 +2796,8 @@ msgid "Import with Separate Objects+Materials" msgstr "Zaimportuj osobno Obiekty+MateriaÅ‚y" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Import with Separate Objects+Animations" -msgstr "Import z oddzielnymi obiektami i animacjami" +msgstr "Importuj oddzielnie obiekty i animacje" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" @@ -2856,14 +2825,12 @@ msgid "Importing Scene.." msgstr "Importowanie Sceny.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Generowanie AABB" +msgstr "Generowanie Lightmapy" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Generowanie AABB" +msgstr "Generowanie dla siatki: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3129,18 +3096,16 @@ msgid "Directions" msgstr "Kategorie:" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Past" -msgstr "Wklej" +msgstr "Poprzednie" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Future" -msgstr "Funkcje" +msgstr "NastÄ™pne" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" -msgstr "Głębokość" +msgstr "Głębia" #: editor/plugins/animation_player_editor_plugin.cpp msgid "1 step" @@ -3164,7 +3129,6 @@ msgid "Force White Modulate" msgstr "WymuÅ› BiaÅ‚e Cieniowanie" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Include Gizmos (3D)" msgstr "Dołącz Gizmo (3D)" @@ -3205,9 +3169,8 @@ msgid "New name:" msgstr "Nowa nazwa:" #: editor/plugins/animation_tree_editor_plugin.cpp -#, fuzzy msgid "Edit Filters" -msgstr "Edytuj filtry wÄ™złów" +msgstr "Edytuj filtry" #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/multimesh_editor_plugin.cpp @@ -3228,7 +3191,7 @@ msgstr "Mieszanie" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix" -msgstr "Mix" +msgstr "Miks" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Auto Restart:" @@ -3345,6 +3308,10 @@ msgstr "Edytuj filtry wÄ™złów" msgid "Filters.." msgstr "Filtry.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "Drzewo animacji" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Darmowy" @@ -3358,7 +3325,6 @@ msgid "View Files" msgstr "Pokaż pliki" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Can't resolve hostname:" msgstr "Nie udaÅ‚o się odnaleźć hosta:" @@ -3396,7 +3362,6 @@ msgid "Got:" msgstr "Otrzymano:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Failed sha256 hash check" msgstr "Nie udaÅ‚o się przeprowadzić testu integralnoÅ›ci sha256" @@ -3409,7 +3374,6 @@ msgid "Fetching:" msgstr "Pobieranie:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Resolving.." msgstr "RozwiÄ…zywanie..." @@ -3499,23 +3463,31 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Nie można okreÅ›lić Å›cieżki zapisu dla lightmapy obrazu.\n" +"Zapisz scenÄ™ (obrazy bÄ™dÄ… zapisane w tym samym katalogu), lub przepisz " +"Å›cieżkÄ™ zapisu z wÅ‚aÅ›ciwoÅ›ci 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 "" +"Brak siatek do cieniowania. Upewnij siÄ™, że zawierajÄ… kanaÅ‚ UV2 i że flaga " +"'Bake Light' jest ustawiona." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Błąd przy tworzeniu ligtmapy, upewnij siÄ™ że Å›cieżka nie jest ustawiona " +"jedynie do odczytu." #: editor/plugins/baked_lightmap_editor_plugin.cpp #, fuzzy msgid "Bake Lightmaps" -msgstr "ZmieÅ„ promień światÅ‚a" +msgstr "Wypal Lightmaps" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "PodglÄ…d" @@ -3682,7 +3654,6 @@ msgid "Use Pixel Snap" msgstr "Użyj krokowania na poziomie pikseli" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Smart snapping" msgstr "Inteligentne przyciÄ…ganie" @@ -3692,11 +3663,11 @@ msgstr "PrzyciÄ…gaj do rodzica" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to node anchor" -msgstr "" +msgstr "PrzyciÄ…gaj do kotwicy wÄ™zÅ‚a" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to node sides" -msgstr "" +msgstr "PrzyciÄ…gaj do boków wÄ™zÅ‚a" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to other nodes" @@ -3800,7 +3771,7 @@ msgstr "Wyczyść PozÄ™" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag pivot from mouse position" -msgstr "" +msgstr "PrzeciÄ…gnij oÅ› z pozycji myszy" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set pivot at mouse position" @@ -3822,6 +3793,14 @@ msgstr "Dodaj %s" msgid "Adding %s..." msgstr "Dodawanie %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: 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" @@ -3833,11 +3812,6 @@ msgid "Error instancing scene from %s" msgstr "Błąd instancjacji sceny z %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Ta operacja wymaga pojedynczego wybranego wÄ™zÅ‚a." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Zmienić domyÅ›lny typ" @@ -3855,7 +3829,7 @@ msgstr "Stwórz Poly3D" #: editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" -msgstr "" +msgstr "Ustaw Uchwyt" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" @@ -3896,7 +3870,6 @@ msgid "Ease out" msgstr "Ease out" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Smoothstep" msgstr "PÅ‚ynny Krok" @@ -3977,6 +3950,8 @@ msgid "" "No OccluderPolygon2D resource on this node.\n" "Create and assign one?" msgstr "" +"Brak zasobu OccluderPolygon2D w tym węźle.\n" +"Stworzyć i przypisać nowy?" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" @@ -4024,43 +3999,45 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" -msgstr "" +msgstr "Utwórz ksztaÅ‚t wypukÅ‚y" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "" +msgstr "Utwórz siatkÄ™ nawigacyjnÄ… (Navigation Mesh)" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Zawarta siatka nie jest typu ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "Błąd mapowania UV, siatka modelu może nie być poprawnie wykonana?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Brak siatki do debugowania." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Model nie posiada UV w tej warstwie" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "MeshInstance nie posiada siatki!" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Mesh has not surface to create outlines from!" -msgstr "" +msgstr "Siatka nie posiada powierzchni z której można utworzyć zarys!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" msgstr "Nie udaÅ‚o siÄ™ utworzyć zarysu!" #: editor/plugins/mesh_instance_editor_plugin.cpp +#, fuzzy msgid "Create Outline" -msgstr "" +msgstr "Utwórz zarys" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" @@ -4072,7 +4049,7 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "" +msgstr "Utwórz statyczne ciaÅ‚o wypukÅ‚e" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" @@ -4084,29 +4061,27 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "" +msgstr "Utwórz siatkÄ™ zarysu.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Widok" +msgstr "Widok UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Widok" +msgstr "Widok UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "RozwiÅ„ siatkÄ™ UV2 dla Lightmapy/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "" +msgstr "Utwórz siatkÄ™ zarysu" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "" +msgstr "Rozmiar zarysu:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." @@ -4117,9 +4092,8 @@ msgid "No mesh source specified (and MultiMesh contains no Mesh)." msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Mesh source is invalid (invalid path)." -msgstr "ŹródÅ‚o siatki jest niepoprawne(nieprawidÅ‚owa Å›cieżka)" +msgstr "ŹródÅ‚o siatki jest niepoprawne (nieprawidÅ‚owa Å›cieżka)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." @@ -4130,9 +4104,8 @@ msgid "Mesh source is invalid (contains no Mesh resource)." msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "No surface source specified." -msgstr "Nie ustawiono źródÅ‚a pÅ‚aszczyzny" +msgstr "Nie ustawiono źródÅ‚a pÅ‚aszczyzny." #: editor/plugins/multimesh_editor_plugin.cpp #, fuzzy @@ -4146,16 +4119,15 @@ msgstr "PÅ‚aszczyzna jest niepoprawna (brak geometrii)" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no faces)." -msgstr "" +msgstr "PÅ‚aszczyzna jest niepoprawna (brak Å›cian)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Parent has no solid faces to populate." msgstr "" #: editor/plugins/multimesh_editor_plugin.cpp -#, fuzzy msgid "Couldn't map area." -msgstr "Nie można zmapować powierzchni" +msgstr "Nie można zmapować obszaru." #: editor/plugins/multimesh_editor_plugin.cpp #, fuzzy @@ -4168,12 +4140,13 @@ msgid "Select a Target Surface:" msgstr "Wybierz docelowÄ… przestrzeÅ„" #: editor/plugins/multimesh_editor_plugin.cpp +#, fuzzy msgid "Populate Surface" -msgstr "" +msgstr "ZapeÅ‚nij powierzchniÄ™" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "" +msgstr "ZapeÅ‚nij MultiMesh" #: editor/plugins/multimesh_editor_plugin.cpp #, fuzzy @@ -4197,8 +4170,9 @@ msgid "Z-Axis" msgstr "OÅ›-Z" #: editor/plugins/multimesh_editor_plugin.cpp +#, fuzzy msgid "Mesh Up Axis:" -msgstr "" +msgstr "OÅ› \"do góry\" siatki:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -4213,27 +4187,29 @@ msgid "Random Scale:" msgstr "Losowa skala:" #: editor/plugins/multimesh_editor_plugin.cpp +#, fuzzy msgid "Populate" -msgstr "" +msgstr "ZapeÅ‚nij" #: editor/plugins/navigation_mesh_editor_plugin.cpp +#, fuzzy msgid "Bake!" -msgstr "" +msgstr "NanieÅ›!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "" +#, fuzzy +msgid "Bake the navigation mesh." +msgstr "NanieÅ› siatkÄ™ nawigacji.\n" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "" +msgstr "Wyczyść siatkÄ™ nawigacji." #: editor/plugins/navigation_mesh_generator.cpp msgid "Setting up Configuration..." -msgstr "" +msgstr "Ustawianie konfiguracji..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Calculating grid size..." msgstr "Obliczanie wielkoÅ›ci siatki..." @@ -4242,7 +4218,6 @@ msgid "Creating heightfield..." msgstr "" #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Marking walkable triangles..." msgstr "Zaznaczanie możliwych do przejÅ›cia trójkÄ…tów ..." @@ -4255,9 +4230,8 @@ msgid "Eroding walkable area..." msgstr "" #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Partitioning..." -msgstr "Rozdzielenie" +msgstr "Rozdzielanie..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating contours..." @@ -4269,11 +4243,11 @@ msgstr "Tworzenie polymesh'a..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "" +msgstr "Konwertowanie do natywnej siatki nawigacyjnej..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "" +msgstr "Ustawienia generatora siatek nawigacyjnych:" #: editor/plugins/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -4285,7 +4259,7 @@ msgstr "SkoÅ„czone!" #: editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Navigation Polygon" -msgstr "" +msgstr "Utwórz wielokÄ…t nawigacyjny" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -4301,7 +4275,6 @@ msgid "Error loading image:" msgstr "Błąd wczytywania obrazu:" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "No pixels with transparency > 128 in image.." msgstr "Brak pikseli z przeźroczystoÅ›ciÄ… > 128 w obrazie.." @@ -4353,8 +4326,9 @@ msgid "Node does not contain geometry (faces)." msgstr "WÄ™zeÅ‚ nie zawiera geometrii (Å›ciany)." #: editor/plugins/particles_editor_plugin.cpp +#, fuzzy msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "" +msgstr "MateriaÅ‚ przetwarzajÄ…cy typu 'ParticlesMaterial' jest wymagany." #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" @@ -4389,8 +4363,9 @@ msgid "Surface Points" msgstr "Punkty powierzchni" #: editor/plugins/particles_editor_plugin.cpp +#, fuzzy msgid "Surface Points+Normal (Directed)" -msgstr "" +msgstr "Punkty powierzchni+Normalne (Skierowane)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" @@ -4621,17 +4596,18 @@ msgstr "Wczytaj Zasób" msgid "Paste" msgstr "Wklej" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Åšcieżka zasobu" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Wyczyść ostatnie pliki" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Zamknąć i zapisać zmiany?\n" -"\"" +msgid "Close and save changes?" +msgstr "Zamknąć i zapisać zmiany?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4658,8 +4634,9 @@ msgid "Save Theme As.." msgstr "Zapisz motyw jako.." #: editor/plugins/script_editor_plugin.cpp +#, fuzzy msgid " Class Reference" -msgstr "" +msgstr " Referencja klas" #: editor/plugins/script_editor_plugin.cpp #, fuzzy @@ -4703,9 +4680,12 @@ msgid "Soft Reload Script" msgstr "MiÄ™kkie przeÅ‚adowania skryptu" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Skopiuj ÅšcieżkÄ™" +msgstr "Skopiuj Å›cieżkÄ™ skryptu" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Pokaż w systemie plików" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4758,17 +4738,14 @@ msgid "Find Next" msgstr "Znajdź nastÄ™pny" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Step Over" msgstr "Przekrocz" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Step Into" msgstr "Krok w" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Break" msgstr "Przerwa" @@ -4782,14 +4759,12 @@ msgid "Keep Debugger Open" msgstr "Pozostaw Debugger otwarty" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with external editor" -msgstr "Otwórz w edytorze" +msgstr "Debugowanie z zewnÄ™trznego edytora" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Open Godot online documentation" -msgstr "Poszukaj w dokumentacji referencyjnej." +msgstr "Otwórz dokumentacjÄ™ online" #: editor/plugins/script_editor_plugin.cpp msgid "Search the class hierarchy." @@ -4808,9 +4783,8 @@ msgid "Go to next edited document." msgstr "Przejdź do nastÄ™pnego edytowanego dokumentu." #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Discard" -msgstr "Dyskretne" +msgstr "Odrzucić" #: editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4844,18 +4818,16 @@ msgstr "" "należą" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Only resources from filesystem can be dropped." -msgstr "Jedynie zasoby z systemu plików mogÄ… tu zostać opuszczone." +msgstr "Jedynie zasoby z systemu plików mogÄ… zostać tu upuszczone." #: editor/plugins/script_text_editor.cpp msgid "Pick Color" msgstr "Wybierz Kolor" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Case" -msgstr "Konwersja obrazków" +msgstr "Zmień wielkość liter" #: editor/plugins/script_text_editor.cpp msgid "Uppercase" @@ -4867,7 +4839,7 @@ msgstr "MaÅ‚e Litery" #: editor/plugins/script_text_editor.cpp msgid "Capitalize" -msgstr "" +msgstr "Wielkie litery na poczÄ…tku słów" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp @@ -4886,9 +4858,8 @@ msgid "Select All" msgstr "Zaznacz wszystko" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Delete Line" -msgstr "UsuÅ„ Punkt" +msgstr "UsuÅ„ wiersz" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" @@ -4907,17 +4878,16 @@ msgid "Clone Down" msgstr "Duplikuj liniÄ™" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Idź do lini" +msgstr "ZwiÅ„/rozwiÅ„ wiersz" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" -msgstr "" +msgstr "ZwiÅ„ wszystkie linie" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "" +msgstr "RozwiÅ„ wszystkie linie" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" @@ -4928,14 +4898,12 @@ msgid "Trim Trailing Whitespace" msgstr "Przytnij koÅ„cowe spacje" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent To Spaces" -msgstr "ZamieÅ„ akapity na spacjÄ™" +msgstr "ZamieÅ„ wciÄ™cia na spacje" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent To Tabs" -msgstr "ZamieÅ„ akapity na tabulatory" +msgstr "ZamieÅ„ wciÄ™cia na tabulatory" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -4961,12 +4929,11 @@ msgstr "Przejdź do poprzedniej puÅ‚apki" #: editor/plugins/script_text_editor.cpp #, fuzzy msgid "Convert To Uppercase" -msgstr "Konwertuje na.." +msgstr "Wielkie litery" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert To Lowercase" -msgstr "Konwertuje na.." +msgstr "MaÅ‚e litery" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" @@ -4990,7 +4957,7 @@ msgstr "Pomoc kontekstowa" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" -msgstr "" +msgstr "Shader" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Constant" @@ -5083,14 +5050,12 @@ msgid "Change Input Name" msgstr "ZmieÅ„ nazwÄ™ wejÅ›cia" #: editor/plugins/shader_graph_editor_plugin.cpp -#, fuzzy msgid "Connect Graph Nodes" -msgstr "Połącz graficznie wÄ™zÅ‚y" +msgstr "Połącz wÄ™zÅ‚y grafu" #: editor/plugins/shader_graph_editor_plugin.cpp -#, fuzzy msgid "Disconnect Graph Nodes" -msgstr "Odłącz graficznie wÄ™zÅ‚y" +msgstr "Odłącz wÄ™zÅ‚y grafu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Remove Shader Graph Node" @@ -5101,9 +5066,8 @@ msgid "Move Shader Graph Node" msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp -#, fuzzy msgid "Duplicate Graph Node(s)" -msgstr "Duplikuj graficzne wÄ™zÅ‚y/wÄ™zeÅ‚" +msgstr "Duplikuj wÄ™zÅ‚y grafu" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Delete Shader Graph Node(s)" @@ -5114,7 +5078,6 @@ msgid "Error: Cyclic Connection Link" msgstr "" #: editor/plugins/shader_graph_editor_plugin.cpp -#, fuzzy msgid "Error: Missing Input Connections" msgstr "Błąd: BrakujÄ…ce połączenia wejÅ›cia" @@ -5165,88 +5128,89 @@ msgid "Rotating %s degrees." msgstr "Obracanie o %s stopni." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Widok z doÅ‚u." +#, fuzzy +msgid "Keying is disabled (no key inserted)." +msgstr "Kluczowanie jest wyłączone (nie wstawiono klucza)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Dół" +#, fuzzy +msgid "Animation Key Inserted." +msgstr "Wstawiono klucz animacji." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Widok z góry." +#, fuzzy +msgid "Objects Drawn" +msgstr "Narysowane obiekty" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Widok z tyÅ‚u." +#, fuzzy +msgid "Material Changes" +msgstr "Zmiany materiaÅ‚u" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "TyÅ‚" +msgid "Shader Changes" +msgstr "Zmiany Shadera" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Widok z przodu." +#, fuzzy +msgid "Surface Changes" +msgstr "OdÅ›wież Zmiany" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Przód" +msgid "Draw Calls" +msgstr "WywoÅ‚ania rysowania" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Widok z lewej." +msgid "Vertices" +msgstr "WierzchoÅ‚ki" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Lewa" +msgid "FPS" +msgstr "Klatki na sekundÄ™" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Widok z prawej." +msgid "Top View." +msgstr "Widok z góry." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Prawa" +msgid "Bottom View." +msgstr "Widok z doÅ‚u." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "" +msgid "Bottom" +msgstr "Dół" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "" +msgid "Left View." +msgstr "Widok z lewej." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "" +msgid "Left" +msgstr "Lewa" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Material Changes" -msgstr "OdÅ›wież Zmiany" +msgid "Right View." +msgstr "Widok z prawej." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "OdÅ›wież Zmiany" +msgid "Right" +msgstr "Prawa" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Surface Changes" -msgstr "OdÅ›wież Zmiany" +msgid "Front View." +msgstr "Widok z przodu." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "" +msgid "Front" +msgstr "Przód" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Vertices" -msgstr "WierzchoÅ‚ek" +msgid "Rear View." +msgstr "Widok z tyÅ‚u." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "Klatki na sekundÄ™" +msgid "Rear" +msgstr "TyÅ‚" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5260,6 +5224,10 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Brak elementu nadrzÄ™dnego do stworzenia instancji." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Ta operacja wymaga pojedynczego wybranego wÄ™zÅ‚a." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Widok normalny" @@ -5269,39 +5237,33 @@ msgid "Display Wireframe" msgstr "Widok siatki" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Display Overdraw" -msgstr "WyÅ›wietl Przerysowanie" +msgstr "Widok rentgena" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Display Unshaded" msgstr "Widok bezcieniowy" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Environment" -msgstr "Åšrodowisko" +msgstr "WyÅ›wietlaj Å›rodowisko" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "View Gizmos" -msgstr "Uchwyty" +msgstr "WyÅ›wietlaj uchwyty" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Information" -msgstr "Informacje" +msgstr "WyÅ›wietlaj informacje" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View FPS" -msgstr "Pokaż Klatki na SekundÄ™" +msgstr "Pokaż klatki na sekundÄ™" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Half Resolution" -msgstr "Skaluj zaznaczone" +msgstr "PoÅ‚owa rozdzielczoÅ›ci" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy @@ -5309,9 +5271,8 @@ msgid "Audio Listener" msgstr "NasÅ‚uchiwacz dźwiÄ™ku" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Doppler Enable" -msgstr "Włącz" +msgstr "Efekt Dopplera" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" @@ -5345,18 +5306,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "PodglÄ…d" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Okno dialogowe XForm" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Select Mode (Q)\n" -msgstr "Tryb zaznaczenia" +msgid "Select Mode (Q)" +msgstr "Tryb zaznaczenia (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5382,14 +5337,12 @@ msgid "Local Coords" msgstr "Koordynaty lokalne" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Tryb skalowania (R)" +msgstr "Tryb lokalny przestrzeni (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Tryb przyciÄ…gania:" +msgstr "Tryb przyciÄ…gania (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5438,7 +5391,7 @@ msgstr "Dopasuj zaznaczenie do widoku" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Tool Select" -msgstr "Zaznacz" +msgstr "Wybierz narzÄ™dzie" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy @@ -5448,17 +5401,16 @@ msgstr "PrzenieÅ›" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Tool Rotate" -msgstr "Ctrl: Obróć" +msgstr "NarzÄ™dzie Obracanie" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Tool Scale" -msgstr "Skala:" +msgstr "NarzÄ™dzia Skala" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Toggle Freelook" -msgstr "PeÅ‚ny ekran" +msgstr "Przełącz swobodny widok" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform" @@ -5548,7 +5500,7 @@ msgstr "Widok Z-Daleko:" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Transform Change" -msgstr "Zmiana Pozycji" +msgstr "Zmiana przeksztaÅ‚cenia" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" @@ -5565,7 +5517,7 @@ msgstr "Skala (proporcja):" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Transform Type" -msgstr "Typ PrzesuniÄ™cia" +msgstr "Typ przeksztaÅ‚cenia" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pre" @@ -5632,23 +5584,28 @@ msgid "Insert Empty (After)" msgstr "Dodaj pusty (później)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move (Before)" -msgstr "UsuÅ„ wÄ™zeÅ‚(y)" +msgstr "PrzenieÅ› (przed)" #: editor/plugins/sprite_frames_editor_plugin.cpp -#, fuzzy msgid "Move (After)" -msgstr "PrzesuÅ„ w lewo" +msgstr "PrzenieÅ› (za)" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "SpriteFrames" #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "PodglÄ…d StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StyleBox" + #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Set Region Rect" -msgstr "Edytor regionu tekstury" +msgstr "Ustaw obszar tekstury" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" @@ -5671,21 +5628,23 @@ msgid "Auto Slice" msgstr "Tnij automatycznie" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "PrzesuniÄ™cie:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Krok:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separacja:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region" -msgstr "Obszar Tekstury" +msgstr "Obszar tekstury" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Texture Region Editor" @@ -5709,19 +5668,16 @@ msgid "Remove Item" msgstr "UsuÅ„ element" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Remove All Items" -msgstr "UsuÅ„ klasÄ™ elementów" +msgstr "UsuÅ„ wszystkie elementy" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Remove All" -msgstr "UsuÅ„" +msgstr "UsuÅ„ wszystkie" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Edit theme.." -msgstr "ZmieÅ„ wyglÄ…d programu.." +msgstr "Edytuj motyw interfejsu.." #: editor/plugins/theme_editor_plugin.cpp #, fuzzy @@ -5745,18 +5701,16 @@ msgid "Create Empty Editor Template" msgstr "Utworzyć pusty szablon edytora" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Create From Current Editor Theme" -msgstr "Utworzyć pusty szablon edytora" +msgstr "Utwórz z aktualnego motywu edytora" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" msgstr "CheckBox Radio1" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "CheckBox Radio2" -msgstr "Pole Jednokrotnego Wyboru2" +msgstr "CheckBox Radio2" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" @@ -5791,17 +5745,16 @@ msgstr "Ma,Wiele,Różnych,Opcji!" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Tab 1" -msgstr "Tabulator 1" +msgstr "ZakÅ‚adka 1" #: editor/plugins/theme_editor_plugin.cpp #, fuzzy msgid "Tab 2" -msgstr "Tabulator 2" +msgstr "ZakÅ‚adka 2" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Tab 3" -msgstr "Tabulator 3" +msgstr "ZakÅ‚adka 3" #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp #: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp @@ -5829,6 +5782,10 @@ msgstr "Font" msgid "Color" msgstr "Kolor" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Motyw" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "UsuÅ„ zaznaczenie" @@ -5930,6 +5887,31 @@ msgstr "Połącz ze sceny" msgid "Error" msgstr "Błąd" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +msgstr "Autotiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Wybierz aktualnie edytowany sub-tile." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Anuluj" @@ -6010,7 +5992,7 @@ msgstr "Funkcje" #: editor/project_export.cpp msgid "Custom (comma-separated):" -msgstr "" +msgstr "Niestandardowe (oddzielone przecinkami):" #: editor/project_export.cpp msgid "Feature List:" @@ -6041,12 +6023,9 @@ msgid "Please choose a 'project.godot' file." msgstr "ProszÄ™ wybrać plik 'project.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Twój projekt zostanie utworzony w niepustym folderze (możesz chcieć stworzyć " -"nowy folder)." +#, fuzzy +msgid "Please choose an empty folder." +msgstr "ProszÄ™ wybrać plik 'project.godot'." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6057,6 +6036,14 @@ msgid "Imported Project" msgstr "Zaimportowano projekt" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "Nie można utworzyć katalogu." + +#: 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 "Dobrym pomysÅ‚em byÅ‚oby nazwanie swojego projektu." @@ -6097,14 +6084,26 @@ msgid "Import Existing Project" msgstr "Importuj istniejÄ…cy projekt" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importuj i edytuj" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Utwórz nowy projekt" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Utwórz i edytuj" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Zainstaluj projekt:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Zainstaluj i edytuj" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nazwa projektu:" @@ -6121,10 +6120,6 @@ msgid "Browse" msgstr "Szukaj" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projekt bez nazwy" @@ -6146,13 +6141,12 @@ msgstr "" "Można to później zmienić w \"Ustawienia projektu\" w kategorii \"aplikacja\"." #: editor/project_manager.cpp -#, fuzzy msgid "" "Can't run project: Assets need to be imported.\n" "Please edit the project to trigger the initial import." msgstr "" "Nie można uruchomić projektu: Zasoby muszÄ… zostać zaimportowane\n" -"ZmieÅ„ projekt by byÅ‚ gotowy wstÄ™pny import." +"Otwórz projekt w edytorze aby zaimportować zasoby." #: editor/project_manager.cpp msgid "Are you sure to run more than one project?" @@ -6179,6 +6173,10 @@ msgstr "" "Potwierdzasz?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Menedżer projektów" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Lista projektów" @@ -6215,6 +6213,8 @@ msgid "" "You don't currently have any projects.\n" "Would you like to explore the official example projects in the Asset Library?" msgstr "" +"Nie posiadasz obecnie żadnych projektów.\n" +"Czy chciaÅ‚byÅ› zobaczyć oficjalne przykÅ‚adowe projekty w bibliotece zasobów?" #: editor/project_settings_editor.cpp msgid "Key " @@ -6233,9 +6233,8 @@ msgid "Mouse Button" msgstr "Przycisk myszy" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Invalid action (anything goes but '/' or ':')." -msgstr "NieprawidÅ‚owa akcja (wszystko oprócz '/' or ':')." +msgstr "NieprawidÅ‚owa akcja (wszystko oprócz '/' lub ':')." #: editor/project_settings_editor.cpp msgid "Action '%s' already exists!" @@ -6306,11 +6305,6 @@ msgid "Button 9" msgstr "Przycisk 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "ZmieÅ„" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Indeks osi joysticka:" @@ -6323,16 +6317,14 @@ msgid "Joypad Button Index:" msgstr "Indeks przycisku joysticka:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Wyczyść zdarzenie akcji wejÅ›cia" +msgstr "Wyczyść akcjÄ™ wejÅ›cia" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" msgstr "Wyczyść zdarzenie akcji wejÅ›cia" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Add Event" msgstr "Dodaj zdarzenie" @@ -6369,9 +6361,8 @@ msgid "Add Global Property" msgstr "Dodaj globalnÄ… wÅ‚aÅ›ciwość" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Select a setting item first!" -msgstr "Najpierw wybierz element ustawieÅ„!" +msgstr "Najpierw wybierz ustawienie z listy!" #: editor/project_settings_editor.cpp msgid "No property '%s' exists." @@ -6390,7 +6381,6 @@ msgid "Can't contain '/' or ':'" msgstr "Nie może zawierać '/ 'lub':'" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Already existing" msgstr "Już istnieje" @@ -6444,7 +6434,7 @@ msgstr "Zmień filtr ustawień lokalizacji" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter Mode" -msgstr "" +msgstr "ZmieÅ„ tryb filtrowania ustawieÅ„ lokalizacji" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" @@ -6460,7 +6450,7 @@ msgstr "WÅ‚aÅ›ciwość:" #: editor/project_settings_editor.cpp msgid "Override For.." -msgstr "" +msgstr "Nadpisz dla.." #: editor/project_settings_editor.cpp msgid "Input Map" @@ -6516,10 +6506,9 @@ msgstr "Pokaż wszystkie lokalizacje" #: editor/project_settings_editor.cpp msgid "Show only selected locales" -msgstr "" +msgstr "Pokaż tylko wybrane lokalizacje" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Filter mode:" msgstr "Tryb filtrowania:" @@ -6577,7 +6566,7 @@ msgstr "Nowy skrypt" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Nowy %s" #: editor/property_editor.cpp #, fuzzy @@ -6605,17 +6594,17 @@ msgid "Pick a Node" msgstr "Wybierz wÄ™zeÅ‚" #: editor/property_editor.cpp +#, fuzzy msgid "Bit %d, val %d." -msgstr "" +msgstr "Bit %d, wartość %d." #: editor/property_editor.cpp msgid "On" msgstr "Włącz" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Dodaj pusty" +msgstr "[Pusty]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6696,10 +6685,6 @@ msgid "Error loading scene from %s" msgstr "Błąd przy Å‚adowaniu sceny z %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6715,13 +6700,14 @@ msgid "This operation can't be done on the tree root." msgstr "Nie można wykonać tej operacji na głównym węźle drzewa." #: editor/scene_tree_dock.cpp +#, fuzzy msgid "Move Node In Parent" -msgstr "" +msgstr "PrzenieÅ› wÄ™zeÅ‚ w nadrzÄ™dny" #: editor/scene_tree_dock.cpp #, fuzzy msgid "Move Nodes In Parent" -msgstr "Przenieść wÄ™zÅ‚y do wÄ™zÅ‚a nadrzÄ™dnego." +msgstr "PrzenieÅ› wÄ™zÅ‚y w nadrzÄ™dnym" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" @@ -6788,9 +6774,8 @@ msgid "Error duplicating scene to save it." msgstr "Błąd duplikowania sceny przy zapisywaniu." #: editor/scene_tree_dock.cpp -#, fuzzy -msgid "Sub-Resources:" -msgstr "Zasoby:" +msgid "Sub-Resources" +msgstr "Zasoby" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6853,9 +6838,8 @@ msgstr "" "główny nie istnieje." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Filter nodes" -msgstr "Filtry" +msgstr "Filtruj wÄ™zÅ‚y" #: editor/scene_tree_dock.cpp msgid "Attach a new or existing script for the selected node." @@ -6866,12 +6850,10 @@ msgid "Clear a script for the selected node." msgstr "Wyczyść skrypt dla zaznaczonego wÄ™zÅ‚a." #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Remote" msgstr "Zdalny" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Local" msgstr "Lokalny" @@ -6893,25 +6875,31 @@ msgstr "Przełącz widoczność CanvasItem" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" -msgstr "" +msgstr "Ostrzeżenie konfiguracji wÄ™zÅ‚a:" #: editor/scene_tree_editor.cpp msgid "" "Node has connection(s) and group(s)\n" "Click to show signals dock." msgstr "" +"WÄ™zeÅ‚ posiada połączenia i grupy\n" +"Kliknij, aby wyÅ›wietlić panel sygnałów." #: editor/scene_tree_editor.cpp msgid "" "Node has connections.\n" "Click to show signals dock." msgstr "" +"WÄ™zeÅ‚ posiada połączenia.\n" +"Kliknij, aby wyÅ›wietlić panel sygnałów." #: editor/scene_tree_editor.cpp msgid "" "Node is in group(s).\n" "Click to show groups dock." msgstr "" +"WÄ™zeÅ‚ jest w grupach.\n" +"Kliknij, aby wyÅ›wietlić panel grup." #: editor/scene_tree_editor.cpp msgid "Instance:" @@ -6935,8 +6923,8 @@ msgid "" "Children are not selectable.\n" "Click to make selectable" msgstr "" -"Pochodna nie jest możliwa do zaznaczenia.\n" -"Kliknij by jÄ… móc zaznaczyć" +"Dziecko nie jest możliwe do zaznaczenia.\n" +"Kliknij by móc zaznaczyć" #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" @@ -6956,7 +6944,7 @@ msgstr "Drzewo sceny (wÄ™zÅ‚y):" #: editor/scene_tree_editor.cpp msgid "Node Configuration Warning!" -msgstr "" +msgstr "Ostrzeżenie konfiguracji wÄ™zÅ‚a!" #: editor/scene_tree_editor.cpp msgid "Select a Node" @@ -7015,9 +7003,8 @@ msgid "Invalid class name" msgstr "Niepoprawna nazwa klasy" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Invalid inherited parent name or path" -msgstr "NieprawidÅ‚owa nazwa klasy bazowej" +msgstr "NieprawidÅ‚owa nazwa lub Å›cieżka klasy bazowej" #: editor/script_create_dialog.cpp msgid "Script valid" @@ -7091,7 +7078,7 @@ msgstr "Funkcja:" msgid "Pick one or more items from the list to display the graph." msgstr "Wybierz jeden lub wiÄ™cej elementów z listy by wyÅ›wietlić graf." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Błędy" @@ -7100,6 +7087,10 @@ msgid "Child Process Connected" msgstr "Połączono z procesem potomnym" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Błąd kopiowania" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Sprawdź poprzedniÄ… instancjÄ™" @@ -7240,17 +7231,16 @@ msgid "Change Particles AABB" msgstr "" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Probe Extents" -msgstr "ZmieÅ„ rozmiar Box Shape" +msgstr "ZmieÅ„ rozmiar Probe" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Wybierz dynamicznÄ… bibliotekÄ™ do tego pola" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Zaznacz zależnoÅ›ci biblioteki dla tego pola" #: modules/gdnative/gdnative_library_editor_plugin.cpp #, fuzzy @@ -7259,30 +7249,27 @@ msgstr "UsuÅ„ punkt krzywej" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Kliknij dwukrotnie by stworzyć nowy wpis" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Platforma:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "Kopiuj na platformÄ™..." +msgstr "Platforma" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Biblioteka" +msgstr "Biblioteka dynamiczna" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Dodaj pole architektury" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7349,7 +7336,6 @@ msgid "Object can't provide a length." msgstr "" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Delete Selection" msgstr "GridMap UsuÅ„ zaznaczenie" @@ -7359,25 +7345,23 @@ msgstr "GridMap duplikuj zaznaczenie" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "" +msgstr "Poziom:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" msgstr "Grid Map" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Snap View" -msgstr "Widok z góry" +msgstr "PrzyciÄ…ganie widoku" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Previous Floor" msgstr "Poprzedni poziom" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "" +msgstr "NastÄ™pny poziom" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy @@ -7385,16 +7369,18 @@ msgid "Clip Disabled" msgstr "Wyłączone przycinanie" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clip Above" -msgstr "" +msgstr "Przytnij powyżej" #: modules/gridmap/grid_map_editor_plugin.cpp +#, fuzzy msgid "Clip Below" -msgstr "" +msgstr "Przytnij poniżej" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit X Axis" -msgstr "" +msgstr "Edytuj oÅ› X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Y Axis" @@ -7405,17 +7391,14 @@ msgid "Edit Z Axis" msgstr "Edytuj oÅ› Z" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cursor Rotate X" msgstr "Kursor Obróć X" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cursor Rotate Y" msgstr "Kursor Obróć Y" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Cursor Rotate Z" msgstr "Kursor Obróć Z" @@ -7463,10 +7446,50 @@ msgstr "Ustawienia GridMap" msgid "Pick Distance:" msgstr "Wybierz odlegÅ‚ość:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "Generowanie solucji..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Nie udaÅ‚o siÄ™ stworzyć solucji." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Nie udaÅ‚o siÄ™ zapisać solucji." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Gotowe" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "Nie udaÅ‚o siÄ™ utworzyć projektu jÄ™zyka C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Utwórz solucjÄ™ C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Zbuduj projekt" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Ostrzeżenia" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7617,12 +7640,10 @@ msgid "Add Setter Property" msgstr "" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Base Type" -msgstr "ZmieÅ„ typ" +msgstr "ZmieÅ„ typ podstawowy" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Move Node(s)" msgstr "Przenieś wÄ™zÅ‚y" @@ -7640,7 +7661,7 @@ msgstr "Warunek" #: modules/visual_script/visual_script_editor.cpp msgid "Sequence" -msgstr "" +msgstr "Sekwencja" #: modules/visual_script/visual_script_editor.cpp msgid "Switch" @@ -7669,10 +7690,9 @@ msgstr "Pobierz" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" -msgstr "" +msgstr "Skrypt posiada już funkcjÄ™ '%s'" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Change Input Value" msgstr "ZmieÅ„ wartość wejÅ›ciowÄ…" @@ -7759,15 +7779,15 @@ msgstr "Wklej wÄ™zÅ‚y" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " -msgstr "" +msgstr "Typ danych wejÅ›ciowych nie jest iterowalny: " #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid" -msgstr "" +msgstr "Iterator staÅ‚ siÄ™ nieprawidÅ‚owy" #: modules/visual_script/visual_script_flow_control.cpp msgid "Iterator became invalid: " -msgstr "" +msgstr "Iterator staÅ‚ siÄ™ nieprawidÅ‚owy: " #: modules/visual_script/visual_script_func_nodes.cpp #, fuzzy @@ -7805,12 +7825,15 @@ msgstr "Nie znaleziono VariableSet w skrypcie: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." msgstr "" +"Niestandardowy wÄ™zeÅ‚ nie posiada metody _step(), nie można przetworzyć grafu." #: modules/visual_script/visual_script_nodes.cpp msgid "" "Invalid return value from _step(), must be integer (seq out), or string " "(error)." msgstr "" +"NieprawidÅ‚owa wartość zwracana przez funkcjÄ™ _step(), musi ona być liczbÄ… " +"caÅ‚kowitÄ… (seq out), lub tekstowÄ… (error)." #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -7818,29 +7841,32 @@ msgstr "Uruchom w przeglÄ…darce" #: platform/javascript/export/export.cpp msgid "Run exported HTML in the system's default browser." -msgstr "" +msgstr "Uruchom wyeksportowany dokument HTML w domyÅ›lnej przeglÄ…darce." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Nie można zapisać pliku:\n" +msgid "Could not write file:" +msgstr "Nie można zapisać pliku:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "Nie można otworzyć szablonu dla eksportu:\n" +msgid "Could not open template for export:" +msgstr "Nie można otworzyć szablonu dla eksportu:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Szablon eksportu nieprawidÅ‚owy:\n" +msgid "Invalid export template:" +msgstr "Szablon eksportu nieprawidÅ‚owy:" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not read custom HTML shell:\n" -msgstr "Nie można odczytać niestandardowe powÅ‚oki HTML:\n" +msgid "Could not read custom HTML shell:" +msgstr "Nie można odczytać niestandardowe powÅ‚oki HTML:" + +#: platform/javascript/export/export.cpp +msgid "Could not read boot splash image file:" +msgstr "Nie można odczytać pliku obrazu splash:" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" -msgstr "Nie można odczytać pliku obrazu splash:\n" +msgid "Using default boot splash image." +msgstr "DomyÅ›lny obrazek splash" #: scene/2d/animated_sprite.cpp msgid "" @@ -7859,6 +7885,13 @@ msgstr "" "zestawie zinstancjonowanych scen). Tylko pierwszy CanvasModulate zadziaÅ‚a, " "przy czym pozostaÅ‚e zostanÄ… zignorowane." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7943,11 +7976,15 @@ msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "PathFollow2D zadziaÅ‚a tylko wtedy, gdy bÄ™dzie dzieckiem wÄ™zeÅ‚ Path2D." #: scene/2d/physics_body_2d.cpp +#, fuzzy msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" +"Zmiany rozmiaru w RigidBody2D (w trybach character i rigid) zostanÄ… " +"nadpisane przez silnik fizyki podczas dziaÅ‚ania.\n" +"Zamiast tego, zmieÅ„ rozmiary ksztaÅ‚tów kolizji w wÄ™zÅ‚ach podrzÄ™dnych." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -7963,11 +8000,12 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRCamera musi dziedziczyć po ARVROrigin node" #: scene/3d/arvr_nodes.cpp +#, fuzzy msgid "ARVRController must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRController musi posiadać wÄ™zeÅ‚ ARVROrigin jako rodzica" #: scene/3d/arvr_nodes.cpp msgid "" @@ -7976,8 +8014,9 @@ msgid "" msgstr "" #: scene/3d/arvr_nodes.cpp +#, fuzzy msgid "ARVRAnchor must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRAnchor musi posiadać wÄ™zeÅ‚ ARVROrigin jako rodzica" #: scene/3d/arvr_nodes.cpp msgid "" @@ -7987,7 +8026,7 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node" -msgstr "" +msgstr "ARVROrigin wymaga by ARVRCamera dziedziczyÅ‚a po node" #: scene/3d/baked_lightmap.cpp msgid "Plotting Meshes: " @@ -8002,7 +8041,15 @@ msgid "Finishing Plot" msgstr "" #: scene/3d/baked_lightmap.cpp +#, fuzzy msgid "Lighting Meshes: " +msgstr "OÅ›wietlanie siatek: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." msgstr "" #: scene/3d/collision_polygon.cpp @@ -8061,11 +8108,15 @@ msgid "" msgstr "" #: scene/3d/physics_body.cpp +#, fuzzy msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" +"Zmiany rozmiaru w RigidBody (w trybach character i rigid) zostanÄ… nadpisane " +"przez silnik fizyki podczas dziaÅ‚ania.\n" +"Zamiast tego, zmieÅ„ rozmiary ksztaÅ‚tów kolizji w wÄ™zÅ‚ach podrzÄ™dnych." #: scene/3d/remote_transform.cpp msgid "Path property must point to a valid Spatial node to work." @@ -8091,6 +8142,8 @@ msgid "" "VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " "it as a child of a VehicleBody." msgstr "" +"VehicleWheel zapewnia system kół do VehicleBody. ProszÄ™ użyć go jako " +"dziedziczÄ…cego po VehicleBody." #: scene/gui/color_picker.cpp msgid "Raw Mode" @@ -8098,7 +8151,7 @@ msgstr "Trybie RAW" #: scene/gui/color_picker.cpp msgid "Add current color as a preset" -msgstr "" +msgstr "Dodaj bieżący kolor jako domyÅ›lne" #: scene/gui/dialogs.cpp msgid "Alert!" @@ -8138,9 +8191,10 @@ msgid "(Other)" msgstr "Inne" #: scene/main/scene_tree.cpp +#, fuzzy msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "DomyÅ›lne Åšrodowisko okreÅ›lone w Ustawieniach Projektu (Renderowanie -> " "Viewport -> DomyÅ›lne Åšrodowisko) nie mogÅ‚o zostać zaÅ‚adowane." @@ -8173,6 +8227,41 @@ msgstr "Błąd Å‚adowania fonta." msgid "Invalid font size." msgstr "Niepoprawny rozmiar fonta." +#~ msgid "Next" +#~ msgstr "NastÄ™pny" + +#~ msgid "Not found!" +#~ msgstr "Nie znaleziono!" + +#~ msgid "Replace By" +#~ msgstr "ZastÄ…p przez" + +#~ msgid "Case Sensitive" +#~ msgstr "Z uwzglÄ™dnieniem wielkoÅ›ci liter" + +#~ msgid "Backwards" +#~ msgstr "Wstecz" + +#~ msgid "Prompt On Replace" +#~ msgstr "Zaptytaj przy zastÄ…pieniu" + +#~ msgid "Skip" +#~ msgstr "PomiÅ„" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Twój projekt zostanie utworzony w niepustym folderze (możesz chcieć " +#~ "stworzyć nowy folder)." + +#~ msgid "That's a BINGO!" +#~ msgstr "BINGO!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "PodglÄ…d" + #~ msgid "Move Add Key" #~ msgstr "Przemieszczono/Dodano klucz" @@ -8258,10 +8347,6 @@ msgstr "Niepoprawny rozmiar fonta." #~ msgid "Filter:" #~ msgstr "Filtr:" -#, fuzzy -#~ msgid "Theme" -#~ msgstr "Zapisz motyw" - #~ msgid "Method List For '%s':" #~ msgstr "Lista metod '%s':" @@ -8528,9 +8613,6 @@ msgstr "Niepoprawny rozmiar fonta." #~ msgid "Import Anyway" #~ msgstr "Zaimportuj Pomimo" -#~ msgid "Import & Open" -#~ msgstr "Importuj i Otwórz" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "Edytowana sceny nie zostaÅ‚a zapisana. Otworzyć importowanÄ… scenÄ™ mimo " @@ -8761,9 +8843,6 @@ msgstr "Niepoprawny rozmiar fonta." #~ msgid "Stereo" #~ msgstr "Stereo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Wysokość" @@ -8883,9 +8962,6 @@ msgstr "Niepoprawny rozmiar fonta." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Powiadomienie o zmianie stanu zasobu zewnÄ™trznego." -#~ msgid "Tutorials" -#~ msgstr "Poradniki" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Otwórz https://godotengine.org na sekcji poradników." diff --git a/editor/translations/pr.po b/editor/translations/pr.po index 8f649949e1..3fd24dd39f 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -202,8 +202,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -380,14 +379,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -396,47 +387,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -554,6 +513,16 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp +#, fuzzy +msgid "Change %s Type" +msgstr "th' Base Type:" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Change" + +#: editor/create_dialog.cpp msgid "Create New %s" msgstr "" @@ -659,7 +628,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -742,8 +711,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -828,7 +797,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1139,7 +1108,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1355,6 +1324,17 @@ msgid "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 "Properties" msgstr "" @@ -1386,6 +1366,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1397,6 +1381,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1405,8 +1393,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1462,7 +1450,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2016,6 +2005,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2397,7 +2393,7 @@ msgstr "" #: editor/export_template_manager.cpp #, fuzzy -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "Blimey! I can't make th' signature object!" #: editor/export_template_manager.cpp @@ -2556,9 +2552,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2566,19 +2560,21 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "Error loading yer Calligraphy Pen." #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" -msgstr "" +#, fuzzy +msgid "Error duplicating:" +msgstr "Rename Variable" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3220,6 +3216,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3385,6 +3385,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3689,19 +3690,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4075,7 +4079,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4468,14 +4472,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4552,6 +4558,10 @@ msgid "Copy Script Path" msgstr "Forge yer Node!" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4985,84 +4995,84 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "Change" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Change" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5077,6 +5087,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5150,16 +5164,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "Slit th' Node" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5436,10 +5447,18 @@ msgstr "Forge yer Node!" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5465,14 +5484,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5612,6 +5634,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5712,6 +5738,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Slit th' Node" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5819,9 +5870,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5833,6 +5882,14 @@ msgid "Imported Project" 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 "" @@ -5874,14 +5931,26 @@ 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 "" @@ -5898,10 +5967,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5947,6 +6012,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6074,11 +6143,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Change" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6461,10 +6525,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6549,7 +6609,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6848,7 +6908,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6857,6 +6917,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Slit th' Node" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7210,10 +7275,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7587,24 +7692,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Yer index property name be thrown overboard!" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +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 "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7619,6 +7728,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7687,7 +7803,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7746,6 +7862,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7791,8 +7914,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7858,8 +7981,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index a0f94fbb4f..6963d39352 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -11,11 +11,12 @@ # Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017. # Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016. # jonathan railarem <railarem@gmail.com>, 2017. +# Lucas Silva <lucasb.hpp@gmail.com>, 2018. # Luiz G. Correia <luizgabriell2.0@gmail.com>, 2017. # Mailson Silva Marins <mailsons335@gmail.com>, 2016. # MalcomRF <malcomkbk@gmail.com>, 2017. # Marcus Correia <marknokalt@live.com>, 2017. -# Michael Alexsander Silva Dias <michaelalexsander@protonmail.com>, 2017. +# Michael Alexsander Silva Dias <michaelalexsander@protonmail.com>, 2017-2018. # Renato Rotenberg <renato.rotenberg@gmail.com>, 2017. # Rodolfo R Gomes <rodolforg@gmail.com>, 2017. # Tiago Almeida <thyagoeap@gmail.com>, 2017. @@ -24,8 +25,9 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2017-12-20 15:43+0000\n" -"Last-Translator: Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>\n" +"PO-Revision-Date: 2018-01-22 08:08+0000\n" +"Last-Translator: Michael Alexsander Silva Dias <michaelalexsander@protonmail." +"com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -33,7 +35,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 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -44,26 +46,24 @@ msgid "All Selection" msgstr "Toda a Seleção" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Mudar Valor da Anim" +msgstr "Alterar tempo de quadro-chave da animação" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "Mudar Transição da Anim" +msgstr "Alterar Transição da Anim" #: editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "Mudar Transformação da Anim" +msgstr "Alterar Transformação da Anim" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Mudar Valor da Anim" +msgstr "Alterar valor de quadro-chave da animação" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "Mudar Chamada da Anim" +msgstr "Alterar Chamada da Anim" #: editor/animation_editor.cpp msgid "Anim Add Track" @@ -99,11 +99,11 @@ msgstr "Alterar Interpolação da Trilha" #: editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "Mudar Modo de Valor da Trilha" +msgstr "Alterar Modo de Valor da Trilha" #: editor/animation_editor.cpp msgid "Anim Track Change Wrap Mode" -msgstr "Mudar Modo de Cobertura da Trilha de Animação" +msgstr "Alterar Modo de Loop da Trilha de Animação" #: editor/animation_editor.cpp msgid "Edit Node Curve" @@ -177,7 +177,7 @@ msgstr "Constante" #: editor/animation_editor.cpp msgid "In" -msgstr "In" +msgstr "Em" #: editor/animation_editor.cpp msgid "Out" @@ -215,8 +215,7 @@ msgstr "Criar %d NOVAS trilhas e inserir chaves?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Criar" @@ -234,11 +233,11 @@ msgstr "Inserir Chave na Anim" #: editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "Mudar Comprimento da Animação" +msgstr "Alterar Comprimento da Animação" #: editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "Mudar Loop da Animação" +msgstr "Alterar Loop da Animação" #: editor/animation_editor.cpp msgid "Anim Create Typed Value Key" @@ -370,7 +369,7 @@ msgstr "Redimensionar Vetor" #: editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "Alterar Tipo de Valor do Vetor" +msgstr "Mudar Tipo de Valor do Vetor" #: editor/array_property_edit.cpp msgid "Change Array Value" @@ -393,14 +392,6 @@ msgid "Replaced %d occurrence(s)." msgstr "%d ocorrência(s) substituÃda(s)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Substituir" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Substituir Tudo" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Corresponder Caixa" @@ -409,48 +400,16 @@ msgid "Whole Words" msgstr "Palavras Inteiras" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Apenas na Seleção" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Pesquisar" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Localizar" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Próximo" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Não encontrado!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Substituir Por" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Diferenciar Caixa" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Para trás" +msgid "Replace" +msgstr "Substituir" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Perguntar ao Substituir" +msgid "Replace All" +msgstr "Substituir Tudo" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Pular" +msgid "Selection Only" +msgstr "Apenas na Seleção" #: editor/code_editor.cpp msgid "Zoom In" @@ -552,9 +511,8 @@ msgid "Connecting Signal:" msgstr "Conectando Sinal:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Conectar \"%s\" a \"%s\"" +msgstr "Desconectar '%s' do '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -570,9 +528,17 @@ msgid "Signals" msgstr "Sinais" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Mudar Tipo de %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Alterar" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Criar Novo" +msgstr "Criar Novo %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -616,7 +582,7 @@ msgid "" "Changes will not take effect unless reloaded." msgstr "" "A cena \"%s\" está sendo editada atualmente.\n" -"As mudanças não terão efeito a menos que seja recarregada." +"As alterações não terão efeito a menos que seja recarregada." #: editor/dependency_editor.cpp msgid "" @@ -624,7 +590,7 @@ msgid "" "Changes will take effect when reloaded." msgstr "" "O recurso \"%s\" está em uso.\n" -"As mudanças não terão efeito a menos que seja recarregado." +"As alterações não terão efeito a menos que seja recarregado." #: editor/dependency_editor.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -683,8 +649,8 @@ msgstr "" "Removê-los mesmo assim? (irreversÃvel)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Não foi possÃvel remover:\n" +msgid "Cannot remove:" +msgstr "ImpossÃvel remover:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -766,9 +732,9 @@ msgstr "Fundadores do Projeto" msgid "Lead Developer" msgstr "Desenvolvedor-chefe" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Gerenciador de Projetos" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Gerenciador de Projetos " #: editor/editor_about.cpp msgid "Developers" @@ -856,7 +822,7 @@ msgid "Success!" msgstr "Sucesso!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Instalar" @@ -877,9 +843,8 @@ msgid "Rename Audio Bus" msgstr "Renomear Canal de Ãudio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Alternar Solo do Canal de Ãudio" +msgstr "Alterar Volume do Canal de Ãudio" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -944,7 +909,7 @@ msgstr "Excluir Efeito" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Ãudio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1115,20 +1080,19 @@ msgstr "Atualizando Cena" #: editor/editor_data.cpp msgid "Storing local changes.." -msgstr "Armazenando mudanças locais..." +msgstr "Armazenando alterações locais..." #: editor/editor_data.cpp msgid "Updating scene.." msgstr "Atualizando Cena..." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(vazio)" +msgstr "[vazio]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[não salvo]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1168,8 +1132,8 @@ msgid "Packing" msgstr "Empacotando" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Arquivo de modelo não encontrado:\n" +msgid "Template file not found:" +msgstr "Arquivo de modelo não encontrado:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1380,6 +1344,20 @@ msgid "Description" msgstr "Descrição" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Tutoriais Online:" + +#: 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 "" +"Atualmente não há tutoriais para essa classe. Você pode [color=$color][url=" +"$url]contribuir criando um[/url][/color] ou [color=$color][url=" +"$url2]solicitar[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Propriedades" @@ -1415,6 +1393,10 @@ msgstr "" msgid "Search Text" msgstr "Pesquisar Texto" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Localizar" + #: editor/editor_log.cpp msgid "Output:" msgstr "SaÃda:" @@ -1426,6 +1408,10 @@ msgstr "SaÃda:" msgid "Clear" msgstr "Limpar" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Limpar SaÃda" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Erro ao salvar Recurso!" @@ -1434,8 +1420,8 @@ msgstr "Erro ao salvar Recurso!" msgid "Save Resource As.." msgstr "Salvar Recuso como..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Entendo..." @@ -1489,10 +1475,11 @@ msgstr "Essa operação não pode ser realizada sem uma raiz da cena." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Não se pôde salvar a cena. É provável que dependências (instâncias) não " -"foram satisfeitas." +"Não se pôde salvar a cena. É provável que dependências (instâncias ou " +"herança) não foram satisfeitas." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1546,15 +1533,15 @@ msgid "" "Changes to it will not be kept when saving the current scene." msgstr "" "Este recurso pertence a uma cena que foi instanciada ou herdada.\n" -"Mudanças nele não serão mantidas ao salvar a cena atual." +"Alterações nele não serão mantidas ao salvar a cena atual." #: 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 "" -"Este recurso foi importado, então não é editável. Mude suas configurações no " -"painel de importação e então re-importe." +"Este recurso foi importado, então não é editável. Altere suas configurações " +"no painel de importação e então re-importe." #: editor/editor_node.cpp msgid "" @@ -1563,8 +1550,8 @@ msgid "" "Please read the documentation relevant to importing scenes to better " "understand this workflow." msgstr "" -"Essa cena foi importada, então mudanças nela não irão ser mantidas.\n" -"Instanciar ou herdar a cena permitirá fazer mudanças a ela.\n" +"Essa cena foi importada, então alterações nela não irão ser mantidas.\n" +"Instanciar ou herdar a cena permitirá fazer alterações a ela.\n" "Por favor, leia a documentação referente a importação de cenas para entender " "melhor esse procedimento." @@ -1574,7 +1561,7 @@ msgid "" "Please read the documentation relevant to debugging to better understand " "this workflow." msgstr "" -"Este é um objeto remoto, mudanças não serão mantidas.\n" +"Este é um objeto remoto, alterações não serão mantidas.\n" "Por favor, leia a documentação referente a depuração para entender melhor " "esse procedimento." @@ -1678,7 +1665,7 @@ msgstr "Salvar e Fechar" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "Salvar mudanças em '%s' antes de fechar?" +msgstr "Salvar alterações em '%s' antes de fechar?" #: editor/editor_node.cpp msgid "Save Scene As.." @@ -1702,7 +1689,7 @@ msgstr "Essa operação não pode ser realizada sem uma cena." #: editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "Exportar Biblioteca de Meshes" +msgstr "Exportar Biblioteca de Malhas" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." @@ -1754,12 +1741,12 @@ msgstr "Salvar e Sair" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" -msgstr "Salvar mudanças na(s) seguinte(s) cena(s) antes de sair?" +msgstr "Salvar alterações na(s) seguinte(s) cena(s) antes de sair?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" msgstr "" -"Salvar mudanças na(s) seguinte(s) cena(s) antes de abrir o Gerenciador de " +"Salvar alterações na(s) seguinte(s) cena(s) antes de abrir o Gerenciador de " "Projetos?" #: editor/editor_node.cpp @@ -2014,7 +2001,7 @@ msgid "" msgstr "" "Quando esta opção está habilitada, a exportação ou instalação produzirá um " "executável mÃnimo.\n" -"O sistema de arquivos (FS) será fornecido ao projeto pelo editor via rede.\n" +"O sistema de arquivos será fornecido ao projeto pelo editor via rede.\n" "No Android, a instalação usará o cabo USB para melhor desempenho. Esta opção " "acelera os testes de jogos com muito conteúdo." @@ -2053,7 +2040,7 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"Quando essa opção está ativa, quaisquer modificações feitas à cena no editor " +"Quando essa opção está ativa, quaisquer alterações feitas à cena no editor " "serão replicadas no jogo em execução.\n" "Quando usado remotamente em um dispositivo, isso é mais eficiente com o " "sistema de arquivos via rede." @@ -2102,13 +2089,20 @@ msgstr "Ajuda" msgid "Classes" msgstr "Classes" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Pesquisar" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentação Online" #: editor/editor_node.cpp msgid "Q&A" -msgstr "Perguntas e Respostas" +msgstr "P&R" #: editor/editor_node.cpp msgid "Issue Tracker" @@ -2172,7 +2166,7 @@ msgstr "Atualizar Sempre" #: editor/editor_node.cpp msgid "Update Changes" -msgstr "Atualizar nas Mudanças" +msgstr "Atualizar Alterações" #: editor/editor_node.cpp msgid "Disable Update Spinner" @@ -2216,7 +2210,7 @@ msgstr "Propriedades do objeto." #: editor/editor_node.cpp msgid "Changes may be lost!" -msgstr "Mudanças podem ser perdidas!" +msgstr "Alterações podem ser perdidas!" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/project_manager.cpp @@ -2301,7 +2295,7 @@ msgstr "Abrir o Editor anterior" #: editor/editor_plugin.cpp msgid "Creating Mesh Previews" -msgstr "Criando Previsualizações da Mesh" +msgstr "Criando Previsualizações das Malhas" #: editor/editor_plugin.cpp msgid "Thumbnail.." @@ -2373,14 +2367,12 @@ msgid "Frame #:" msgstr "Frame nº:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Tempo:" +msgstr "Tempo" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Chamar" +msgstr "Chamadas" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2488,8 +2480,8 @@ msgid "No version.txt found inside templates." msgstr "Não foi encontrado um version.txt dentro dos modelos." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Erro ao criar caminho para modelos:\n" +msgid "Error creating path for templates:" +msgstr "Erro ao criar caminho para modelos:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2524,9 +2516,8 @@ msgstr "Sem resposta." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "Sol. Falhou." +msgstr "Solicitação Falhou." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2572,9 +2563,8 @@ msgid "Connecting.." msgstr "Conectando.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" -msgstr "Não foi possÃvel conectar" +msgstr "Não foi PossÃvel Conectar" #: editor/export_template_manager.cpp msgid "Connected" @@ -2637,7 +2627,7 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" -msgstr "ImpossÃvel encontrar '%s', não existe no diretório!" +msgstr "ImpossÃvel navegar até '%s' pois não existe no sistema de arquivos!" #: editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails" @@ -2648,34 +2638,30 @@ msgid "View items as a list" msgstr "Visualizar itens como uma lista" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Estado: Falha na importação do arquivo. Por favor, conserte o arquivo e " "reimporte manualmente." #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." -msgstr "Não foi possÃvel mover/renomear raiz dos recurso." +msgstr "ImpossÃvel mover/renomear raiz dos recursos." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Não é possÃvel mover uma pasta nela mesma.\n" +msgid "Cannot move a folder into itself." +msgstr "ImpossÃvel mover uma pasta nela mesma." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Erro ao mover:\n" +msgid "Error moving:" +msgstr "Erro ao mover:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Erro ao carregar:" +msgid "Error duplicating:" +msgstr "Erro ao duplicar:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Não foi possÃvel atualizar dependências:\n" +msgid "Unable to update dependencies:" +msgstr "Não foi possÃvel atualizar dependências:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2706,14 +2692,12 @@ msgid "Renaming folder:" msgstr "Renomear pasta:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Duplicar" +msgstr "Duplicando arquivo:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Renomear pasta:" +msgstr "Duplicando pasta:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2732,9 +2716,8 @@ msgid "Move To.." msgstr "Mover Para..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Abrir Cena" +msgstr "Abrir Cena(s)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2749,9 +2732,8 @@ msgid "View Owners.." msgstr "Visualizar Proprietários..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Duplicar" +msgstr "Duplicar..." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2763,7 +2745,7 @@ msgstr "Próximo Diretório" #: editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" -msgstr "Re-escanear Arquivos de Sistema" +msgstr "Re-escanear Sistema de Arquivos" #: editor/filesystem_dock.cpp msgid "Toggle folder status as Favorite" @@ -2848,14 +2830,12 @@ msgid "Importing Scene.." msgstr "Importando Cena..." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Transferir para Mapas de Luz:" +msgstr "Generando Lightmaps" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Gerando AABB" +msgstr "Generando para a Malha: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3007,7 +2987,7 @@ msgstr "Misturar com o Próximo Alterado" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "Mudar Tempo de Mistura" +msgstr "Alterar Tempo de Mistura" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" @@ -3326,6 +3306,10 @@ msgstr "Editar Filtros de Nó" msgid "Filters.." msgstr "Filtros..." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimationTree" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Livrar" @@ -3475,23 +3459,30 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Não foi possÃvel determinar um caminho para salvar as imagens do lightmap.\n" +"Salve sua cena (para que as imagens sejam salvas no mesmo diretório), ou " +"escolha um caminho nas propriedades do 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 "" +"Não há malhas para preparar. Certifique-se de que elas possuem um canal UV2 " +"e que a propriedade \"Preparar Luz\" está habilitada." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Falha ao criar imagens do lightmap, certifique-se de que o caminho tem " +"permissões de escrita." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "Transferir para Mapas de Luz:" +msgstr "Preparar Lightmaps" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Visualização" @@ -3592,7 +3583,7 @@ msgstr "Alt+Arrastar: Mover" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" -"Aperte \"v\" para Mudar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto " +"Aperte \"v\" para Alterar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto " "movendo)." #: editor/plugins/canvas_item_editor_plugin.cpp @@ -3618,7 +3609,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "Clique para mudar o pivô de rotação do objeto." +msgstr "Clique para alterar o pivô de rotação do objeto." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" @@ -3626,7 +3617,7 @@ msgstr "Modo Panorâmico" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Toggles snapping" -msgstr "Alternar Encaixar" +msgstr "Alternar Encaixamento" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Snap" @@ -3796,6 +3787,14 @@ msgstr "Adicionar %s" msgid "Adding %s..." msgstr "Adicionando %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "ImpossÃvel instanciar múltiplos nós sem uma raiz." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3807,13 +3806,8 @@ msgid "Error instancing scene from %s" msgstr "Erro ao instanciar cena de %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Essa operação requer um único nó selecionado." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" -msgstr "Alterar tipo padrão" +msgstr "Mudar tipo padrão" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" @@ -4000,31 +3994,31 @@ msgstr "Criar Forma Convexa" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "Criar Mesh de Navegação" +msgstr "Criar Malha de Navegação" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Malha contida não é do tipo ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "Falha ao desembrulhar UV. A malha pode não ter múltiplas faces?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Nenhuma malha para depurar." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Modelo não tem uma UV nesta camada" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "Falta uma Mesh na MeshInstance!" +msgstr "Falta uma Malha na MeshInstance!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" -msgstr "Mesh não tem superfÃcie para criar contornos dela!" +msgstr "Malha não tem superfÃcie para criar contornos dela!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" @@ -4056,25 +4050,23 @@ msgstr "Criar Colisão Convexa Irmã" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "Criar Mesh de Contorno.." +msgstr "Criar Malha de Contorno.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Visualizar" +msgstr "Visualizar UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Visualizar" +msgstr "Visualizar UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Desembrulhar UV2 para Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "Criar Mesh de Contorno" +msgstr "Criar Malha de Contorno" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" @@ -4083,23 +4075,24 @@ msgstr "Tamanho do Contorno:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." msgstr "" -"Nenhuma mesh de origem especificada (e nenhuma MultiMesh definida no nó)." +"Nenhuma malha de origem especificada (e nenhuma MultiMesh definida no nó)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "Nenhuma mesh de origem especificada (e MultiMesh contém nenhuma Mesh)." +msgstr "" +"Nenhuma malha de origem especificada (e MultiMesh contém nenhuma Malha)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "Mesh de origem é inválida (Caminho inválido)." +msgstr "Malha de origem é inválida (caminho inválido)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "Mesh de origem é inválida (não é uma MeshInstance)." +msgstr "Malha de origem é inválida (não é uma MeshInstance)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "Mesh de origem é inválida (contém nenhum recurso de Mesh)." +msgstr "Malha de origem é inválida (contém nenhum recurso de Mesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No surface source specified." @@ -4127,7 +4120,7 @@ msgstr "Não foi possÃvel mapear área." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" -msgstr "Selecione uma Mesh de origem:" +msgstr "Selecione uma Malha de origem:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" @@ -4147,7 +4140,7 @@ msgstr "SuperfÃcie Destino:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "Mesh de Origem:" +msgstr "Malha de Origem:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" @@ -4163,7 +4156,7 @@ msgstr "Eixo-Z" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "Mesh acima do Eixo:" +msgstr "Malha acima do Eixo:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -4186,12 +4179,12 @@ msgid "Bake!" msgstr "Precalcular!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Preparar a mesh de navegação.\n" +msgid "Bake the navigation mesh." +msgstr "Preparar a malha de navegação." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." -msgstr "Apagar a mesh de navegação." +msgstr "Apagar a malha de navegação." #: editor/plugins/navigation_mesh_generator.cpp msgid "Setting up Configuration..." @@ -4231,11 +4224,11 @@ msgstr "Criando polimalha..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "Convertando para mesh de navegação nativa..." +msgstr "Convertando para malha de navegação nativa..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "Configuração do Gerador de Mesh de Navegação:" +msgstr "Configuração do Gerador de Malha de Navegação:" #: editor/plugins/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -4331,7 +4324,7 @@ msgstr "Gerar AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "Criar Pontos de Emissão a Partir do Mesh" +msgstr "Criar Pontos de Emissão a Partir da Malha" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" @@ -4576,17 +4569,17 @@ msgstr "Carregar Recurso" msgid "Paste" msgstr "Colar" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "ResourcePreloader" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Limpar Arquivos Recentes" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Fechar e salvar mudanças?\n" -"\"" +msgid "Close and save changes?" +msgstr "Fechar e salvar alterações?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4657,9 +4650,12 @@ msgid "Soft Reload Script" msgstr "Recarregar Script (suave)" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Copiar Caminho" +msgstr "Copiar Caminho do Script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Mostrar no Sistema de Arquivos" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4793,7 +4789,7 @@ msgstr "" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." -msgstr "Apenas recursos de Arquivos podem ser soltos." +msgstr "Apenas recursos do sistema de arquivos podem ser soltos." #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -4852,9 +4848,8 @@ msgid "Clone Down" msgstr "Clonar Abaixo" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Mostrar Linha" +msgstr "Dobrar/Desdobrar Linha" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5019,7 +5014,7 @@ msgstr "Modificar Curve Map" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Input Name" -msgstr "Alterar Nome de Entrada" +msgstr "Alterar Nome da Entrada" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Connect Graph Nodes" @@ -5051,7 +5046,7 @@ msgstr "Erro: VÃnculo de Conexão CÃclico" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Error: Missing Input Connections" -msgstr "Erro: Faltando Conexões de Entrada" +msgstr "Erro: Faltando as Conexões da Entrada" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Add Shader Graph Node" @@ -5098,84 +5093,84 @@ msgid "Rotating %s degrees." msgstr "Rotacionando %s degraus." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Visão inferior." +msgid "Keying is disabled (no key inserted)." +msgstr "Chaveamento está desativado (nenhuma chave inserida)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Baixo" +msgid "Animation Key Inserted." +msgstr "Chave de Animação Inserida." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Visão Superior." +msgid "Objects Drawn" +msgstr "Objetos Desenhados" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Visão Traseira." +msgid "Material Changes" +msgstr "Alterações de Material" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Traseira" +msgid "Shader Changes" +msgstr "Alterações de Shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Visão Frontal." +msgid "Surface Changes" +msgstr "Alterações de SuperfÃcie" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Frente" +msgid "Draw Calls" +msgstr "Chamadas de Desenho" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Visão Esquerda." +msgid "Vertices" +msgstr "Vértices" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Esquerda" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Visão Direita." +msgid "Top View." +msgstr "Visão Superior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Direita" +msgid "Bottom View." +msgstr "Visão inferior." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Chaveamento está desativado (nenhuma chave inserida)." +msgid "Bottom" +msgstr "Baixo" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Chave de Animação Inserida." +msgid "Left View." +msgstr "Visão Esquerda." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Objetos Desenhados" +msgid "Left" +msgstr "Esquerda" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Mudanças de Material" +msgid "Right View." +msgstr "Visão Direita." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Mudanças de Shader" +msgid "Right" +msgstr "Direita" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Mudanças de SuperfÃcie" +msgid "Front View." +msgstr "Visão Frontal." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Chamadas de Desenho" +msgid "Front" +msgstr "Frente" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vértices" +msgid "Rear View." +msgstr "Visão Traseira." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Traseira" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5189,6 +5184,10 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Sem pai onde instanciar um filho." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Essa operação requer um único nó selecionado." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Exibição Normal" @@ -5262,16 +5261,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidade da Visão Livre" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "previsualizar" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Diálogo XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Modo de Seleção (Q)\n" +msgid "Select Mode (Q)" +msgstr "Modo de Seleção (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5300,14 +5295,12 @@ msgid "Local Coords" msgstr "Coordenadas Locais" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Modo Escala (R)" +msgstr "Modo Espaço Local (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Modo Snap:" +msgstr "Modo Encaixe (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5424,7 +5417,7 @@ msgstr "Configurações" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "Visibilidade do Gizmo de Esqueleto" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5460,7 +5453,7 @@ msgstr "Visão Z-Longe:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" -msgstr "Mudar Transformação" +msgstr "Alteração de Transformação" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" @@ -5508,11 +5501,11 @@ msgstr "Adicionar Vazio" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "Mudar Repetição da Animação" +msgstr "Alterar Repetição da Animação" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "Mudar FPS da Animação" +msgstr "Alterar FPS da Animação" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" @@ -5550,10 +5543,18 @@ msgstr "Mover (Antes)" msgid "Move (After)" msgstr "Mover (Depois)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "SpriteFrames" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Pré-Visualização do StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StyleBox" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Definir Retângulo de Região" @@ -5579,14 +5580,17 @@ msgid "Auto Slice" msgstr "Auto Fatiar" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Deslocamento:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Passo:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separação:" @@ -5724,6 +5728,10 @@ msgstr "Fonte" msgid "Color" msgstr "Cor" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Apagar Seleção" @@ -5809,9 +5817,8 @@ msgid "Merge from scene?" msgstr "Fundir a partir de cena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet..." +msgstr "Tile Set" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5825,6 +5832,34 @@ msgstr "Fundir a partir de Cena" msgid "Error" msgstr "Erro" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "Autotiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" +"Selecione o sub-tile para usar como Ãcone, isso também vai ser usado em " +"vinculamentos de autotiles inválidos." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"LMB: ligar bit.\n" +"RMB: desligar bit." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Selecione o sub-tile editado atual." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Selecione o sub-tile para alterar sua prioridade." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Cancelar" @@ -5940,12 +5975,8 @@ msgid "Please choose a 'project.godot' file." msgstr "Por favor, escolha um arquivo 'project.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Seu projeto será criado em uma pasta não vazia (você pode querer criar uma " -"nova pasta)." +msgid "Please choose an empty folder." +msgstr "Por favor, escolha uma pasta vazia." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5957,6 +5988,14 @@ msgid "Imported Project" msgstr "Projeto Importado" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "ImpossÃvel criar a pasta." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "Já há uma pasta neste caminho com o nome especificado." + +#: editor/project_manager.cpp msgid "It would be a good idea to name your project." msgstr "Seria uma boa ideia nomear o seu projeto." @@ -5997,14 +6036,26 @@ msgid "Import Existing Project" msgstr "Importar Projeto Existente" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importar e Editar" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Criar Novo Projeto" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Criar e Editar" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Instalar Projeto:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Instalar e Editar" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nome do Projeto:" @@ -6021,10 +6072,6 @@ msgid "Browse" msgstr "Navegar" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "É um BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projeto Sem Nome" @@ -6080,6 +6127,10 @@ msgstr "" "confirma?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Gerenciador de Projetos" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Lista de Projetos" @@ -6145,11 +6196,11 @@ msgstr "A ação \"%s\" já existe!" #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" -msgstr "Renomear Evento Ação de Entrada" +msgstr "Renomear Evento de Ação de Entrada" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" -msgstr "Adicionar Evento Ação de Entrada" +msgstr "Adicionar Evento de Ação de Entrada" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Shift+" @@ -6208,11 +6259,6 @@ msgid "Button 9" msgstr "Botão 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Alterar" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Ãndice de Eixo do Joypad:" @@ -6225,13 +6271,12 @@ msgid "Joypad Button Index:" msgstr "Ãndice de Botão do Joypad:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Apagar Evento Ação de Entrada" +msgstr "Apagar Ação de Entrada" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" -msgstr "Apagar Evento Ação de Entrada" +msgstr "Apagar Evento de Ação de Entrada" #: editor/project_settings_editor.cpp msgid "Add Event" @@ -6475,7 +6520,7 @@ msgstr "Novo Script" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Novo %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6510,9 +6555,8 @@ msgid "On" msgstr "Ativo" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Adicionar Vazio" +msgstr "[Vazio]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6592,15 +6636,11 @@ msgid "Error loading scene from %s" msgstr "Erro ao carregar cena de %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." msgstr "" -"Não se pode instanciar a cena \"%s\" porque a cena atual existe dentro de um " +"ImpossÃvel instanciar a cena \"%s\" porque a cena atual existe dentro de um " "de seus nós." #: editor/scene_tree_dock.cpp @@ -6684,8 +6724,8 @@ msgid "Error duplicating scene to save it." msgstr "Erro duplicando cena ao salvar." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Sub-Recursos:" +msgid "Sub-Resources" +msgstr "Sub-Recursos" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6709,7 +6749,7 @@ msgstr "Instânciar Cena Filha" #: editor/scene_tree_dock.cpp msgid "Change Type" -msgstr "Alterar Tipo" +msgstr "Mudar Tipo" #: editor/scene_tree_dock.cpp msgid "Attach Script" @@ -6865,7 +6905,7 @@ msgstr "Erro ao carregar modelo '%s'" #: editor/script_create_dialog.cpp msgid "Error - Could not create script in filesystem." -msgstr "Erro - Não foi possÃvel criar o script no sistema de arquivos." +msgstr "Erro - Não se pôde criar o script no sistema de arquivos." #: editor/script_create_dialog.cpp msgid "Error loading script from %s" @@ -6987,7 +7027,7 @@ msgstr "Função:" msgid "Pick one or more items from the list to display the graph." msgstr "Escolhe um ou mais itens da lista para mostrar o gráfico." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Erros" @@ -6996,6 +7036,10 @@ msgid "Child Process Connected" msgstr "Processo Filho Conectado" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Erro ao Copiar" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Inspecionar a Instância Anterior" @@ -7089,51 +7133,51 @@ msgstr "Atalhos" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "VInculamento" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" -msgstr "Mudar Raio da Luz" +msgstr "Alterar Raio da Luz" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "Mudar o Ângulo de Emissão do AudioStreamPlayer3D" +msgstr "Alterar o Ângulo de Emissão do AudioStreamPlayer3D" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" -msgstr "Mudar FOV da Câmera" +msgstr "Alterar FOV da Câmera" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera Size" -msgstr "Mudar Tamanho da Câmera" +msgstr "Alterar Tamanho da Câmera" #: editor/spatial_editor_gizmos.cpp msgid "Change Sphere Shape Radius" -msgstr "Mudar Raio da Forma de Esfera" +msgstr "Alterar Raio da Forma da Esfera" #: editor/spatial_editor_gizmos.cpp msgid "Change Box Shape Extents" -msgstr "Mudar Dimensões da Forma de Caixa" +msgstr "Alterar Dimensões da Forma da Caixa" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "Alterar o raio do Shape Capsule" +msgstr "Alterar o Raio da Forma da Cápsula" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "Alterar a altura do Shape Capsule" +msgstr "Alterar a Altura da Forma da Cápsula" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "Mudar o tamanho do Shape Ray" +msgstr "Alterar o Comprimento da Forma do Raio" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" -msgstr "Alterar a Extensão do Notificador" +msgstr "Alterar a Dimensão do Notificador" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "Mudar o AABB das PartÃculas" +msgstr "Alterar o AABB das PartÃculas" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" @@ -7141,43 +7185,39 @@ msgstr "Alterar a Extensão da Sonda" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Selecione a biblioteca dinâmica para esta entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Selecione as dependências da biblioteca para esta entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Remover Ponto da Curva" +msgstr "Remover a entrada atual" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Dê um clique duplo para criar uma nova entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Plataforma:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "Copiar para a Plataforma..." +msgstr "Plataforma" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Biblioteca" +msgstr "Biblioteca Dinâmica" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Adicionar uma entrada de arquitetura" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7347,10 +7387,50 @@ msgstr "Configurações do GridMap" msgid "Pick Distance:" msgstr "Escolha uma Distância:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "Gerando solução..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "Gerando projeto C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Falha ao criar solução." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Falha ao salvar solução." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Pronto" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "Falha ao criar projeto C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Criar solução C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Compilações" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Compilar Projeto" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avisos" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7389,11 +7469,11 @@ msgstr "Sobrecarga da pilha com profundidade: " #: modules/visual_script/visual_script_editor.cpp msgid "Change Signal Arguments" -msgstr "Editar Argumentos do Sinal" +msgstr "Alterar Argumentos do Sinal" #: modules/visual_script/visual_script_editor.cpp msgid "Change Argument Type" -msgstr "Alterar Tipo do Argumento" +msgstr "Mudar Tipo do Argumento" #: modules/visual_script/visual_script_editor.cpp msgid "Change Argument name" @@ -7561,7 +7641,7 @@ msgstr "Script já tem uma função '%s'" #: modules/visual_script/visual_script_editor.cpp msgid "Change Input Value" -msgstr "Alterar Valor de Entrada" +msgstr "Alterar Valor da Entrada" #: modules/visual_script/visual_script_editor.cpp msgid "Can't copy the function node." @@ -7710,24 +7790,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "Rodar HTML exportado no navegador padrão do sistema." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Não foi possÃvel escrever o arquivo:\n" +msgid "Could not write file:" +msgstr "Não foi possÃvel escrever o arquivo:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "Não foi possÃvel abrir o modelo para exportar:\n" +msgid "Could not open template for export:" +msgstr "Não foi possÃvel abrir o modelo para exportar:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Template de Exportação Inválido:\n" +msgid "Invalid export template:" +msgstr "Template de exportação inválido:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "Não foi possÃvel ler o shell HTML personalizado:\n" +msgid "Could not read custom HTML shell:" +msgstr "Não foi possÃvel ler o shell HTML personalizado:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "Não foi possÃvel ler o arquivo de imagem boot splash:\n" +msgid "Could not read boot splash image file:" +msgstr "Não foi possÃvel ler o arquivo de imagem boot splash:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "Usando imagem boot splash padrão." #: scene/2d/animated_sprite.cpp msgid "" @@ -7746,6 +7830,17 @@ msgstr "" "instanciadas). O primeiro criado irá funcionar, enquanto os outros serão " "ignorados." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"Este nó não possui filhos com formas, então não pode interagir com o " +"espaço.\n" +"Considere adicionar os nós CollisionShape2D ou CollisionPolygon2D como filho " +"para definir sua forma." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7835,13 +7930,13 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" -"Mudanças de tamanho no RigidBody2D (nos modos Character ou Rigid) serão " +"Alterações de tamanho no RigidBody2D (nos modos Character ou Rigid) serão " "sobrescritas pelo motor de fÃsica ao executar.\n" -"Ao invés disso, mude o tamanho nas formas de colisão filhas." +"Ao invés disso, altere o tamanho nas formas de colisão filhas." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -7890,23 +7985,31 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin necessita um nó ARVRCamera como filho" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "Planejando Malhas" +msgstr "Planejando Malhas: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "Planejando Malhas" +msgstr "Planejando Luzes:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "Terminando de Plotar" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "Planejando Malhas" +msgstr "Iluminando Malhas: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"Este nó não possui filhos com formas, então não pode interagir com o " +"espaço.\n" +"Considere adicionar os nós CollisionShape2D ou CollisionPolygon2D como filho " +"para definir sua forma." #: scene/3d/collision_polygon.cpp msgid "" @@ -7962,17 +8065,17 @@ msgstr "" msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" -"Nada está visÃvel porque as malhas não foram atribuÃdas a passes de desenho." +"Nada está visÃvel porque as meshes não foram atribuÃdas a passes de desenho." #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" -"Mudanças de tamanho no RigidBody (nos modos Character e Rigid) serão " +"Alterações de tamanho no RigidBody (nos modos Character e Rigid) serão " "sobrescritas pelo motor de fÃsica ao executar.\n" -"Ao invés disso, mude o tamanho nas formas de colisão filhas." +"Ao invés disso, altere o tamanho nas formas de colisão filhas." #: scene/3d/remote_transform.cpp msgid "Path property must point to a valid Spatial node to work." @@ -8047,11 +8150,11 @@ msgstr "(Outro)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" -"O Ambiente Padrão como especificado nas Configurações de Projeto " -"(Renderização - Viewport -> Ambiente Padrão) não pôde ser carregado." +"O Ambiente Padrão especificado nas Configurações de Projeto (Rendering -> " +"Environment -> Default Environment) não pôde ser carregado." #: scene/main/viewport.cpp msgid "" @@ -8081,6 +8184,40 @@ msgstr "Erro ao carregar fonte." msgid "Invalid font size." msgstr "Tamanho de fonte inválido." +#~ msgid "Next" +#~ msgstr "Próximo" + +#~ msgid "Not found!" +#~ msgstr "Não encontrado!" + +#~ msgid "Replace By" +#~ msgstr "Substituir Por" + +#~ msgid "Case Sensitive" +#~ msgstr "Diferenciar Caixa" + +#~ msgid "Backwards" +#~ msgstr "Para trás" + +#~ msgid "Prompt On Replace" +#~ msgstr "Perguntar ao Substituir" + +#~ msgid "Skip" +#~ msgstr "Pular" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Seu projeto será criado em uma pasta não vazia (você pode querer criar " +#~ "uma nova pasta)." + +#~ msgid "That's a BINGO!" +#~ msgstr "É um BINGO!" + +#~ msgid "preview" +#~ msgstr "previsualizar" + #~ msgid "Move Add Key" #~ msgstr "Mover Adicionar Chave" @@ -8174,9 +8311,6 @@ msgstr "Tamanho de fonte inválido." #~ msgid "' parsing of config failed." #~ msgstr "' falha no processamento de configurações." -#~ msgid "Theme" -#~ msgstr "Tema" - #~ msgid "Method List For '%s':" #~ msgstr "Lista de Métodos para \"%s\":" @@ -8447,9 +8581,6 @@ msgstr "Tamanho de fonte inválido." #~ msgid "Import Anyway" #~ msgstr "Importar Mesmo Assim" -#~ msgid "Import & Open" -#~ msgstr "Importar e Abrir" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "A cena editada não foi salva, abrir cena importada ainda assim?" @@ -8703,9 +8834,6 @@ msgstr "Tamanho de fonte inválido." #~ msgid "Stereo" #~ msgstr "Estéreo" -#~ msgid "Mono" -#~ msgstr "Mono" - #~ msgid "Pitch" #~ msgstr "Pitch" @@ -8839,9 +8967,6 @@ msgstr "Tamanho de fonte inválido." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Alerta quando um recurso externo foi alterado." -#~ msgid "Tutorials" -#~ msgstr "Tutoriais" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Abre https://godotengine.org na seção tutoriais." diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po index 3fdb664e07..7bddb64cd0 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -6,7 +6,7 @@ # António Sarmento <antonio.luis.sarmento@gmail.com>, 2016. # Carlos Vieira <carlos.vieira@gmail.com>, 2017. # João Graça <jgraca95@gmail.com>, 2017. -# João Lopes <linux-man@hotmail.com>, 2017. +# João Lopes <linux-man@hotmail.com>, 2017-2018. # Miguel Gomes <miggas09@gmail.com>, 2017. # Pedro Gomes <pedrogomes1698@gmail.com>, 2017. # Rueben Stevens <supercell03@gmail.com>, 2017. @@ -16,15 +16,15 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-05 04:49+0000\n" +"PO-Revision-Date: 2018-01-22 08: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" "Language: pt_PT\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 2.18-dev\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -35,46 +35,44 @@ msgid "All Selection" msgstr "Toda Selecção" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Mudar valor da Animação" +msgstr "Anim Mudar Tempo do Keyframe" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "Mudar transição da Animação" +msgstr "Anim Mudar Transição" #: editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "Mudar transformação da Animação" +msgstr "Anim Mudar Transformação" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Mudar valor da Animação" +msgstr "Anim Mudar Valor do Keyframe" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "Mudar chamada da Animação" +msgstr "Anim Mudar Chamada" #: editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "Adicionar pista de Animação" +msgstr "Anim Adicionar Pista" #: editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Duplicar chaves da Animação" +msgstr "Anim Duplicar Chaves" #: editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "Subir pista de Animação" +msgstr "Subir Pista de Animação" #: editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "Descer pista de Animação" +msgstr "Descer Pista de Animação" #: editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "Remover pista de Animação" +msgstr "Remover Pista de Animação" #: editor/animation_editor.cpp msgid "Set Transitions to:" @@ -82,19 +80,19 @@ msgstr "Definir transições para:" #: editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "Renomear pista de Animação" +msgstr "Anim Renomear Pista" #: editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "Mudar interpolação da pista de Animação" +msgstr "Pista Anim Mudar Interpolação" #: editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "Mudar modo do valor da pista de Animação" +msgstr "Pista Anim Mudar Modo do Valor" #: editor/animation_editor.cpp msgid "Anim Track Change Wrap Mode" -msgstr "Mudar modo de embrulho da pista de Animação" +msgstr "Pista Anim Mudar Modo de Embrulho" #: editor/animation_editor.cpp msgid "Edit Node Curve" @@ -106,7 +104,7 @@ msgstr "Editar Curva da Seleção" #: editor/animation_editor.cpp msgid "Anim Delete Keys" -msgstr "Eliminar Pontos da Animação" +msgstr "Anim Eliminar Chaves" #: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp @@ -135,11 +133,11 @@ msgstr "Gatilho" #: editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "Adicionar Pontos de Animação" +msgstr "Anim Adicionar Chave" #: editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "Mover Pontos de Animação" +msgstr "Anim Mover Chaves" #: editor/animation_editor.cpp msgid "Scale Selection" @@ -188,7 +186,7 @@ msgstr "Transições" #: editor/animation_editor.cpp msgid "Optimize Animation" -msgstr "Optimizar Animação" +msgstr "Otimizar Animação" #: editor/animation_editor.cpp msgid "Clean-Up Animation" @@ -196,56 +194,55 @@ msgstr "Limpar Animação" #: editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "Criar NOVA pista para %s e inserir chave?" +msgstr "Criar NOVA Pista para %s e inserir Chave?" #: editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "Criar %d NOVAS pistas e inserir chaves?" +msgstr "Criar %d NOVAS Pistas e inserir Chaves?" #: editor/animation_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Criar" #: editor/animation_editor.cpp msgid "Anim Create & Insert" -msgstr "Criar e inserir Animação" +msgstr "Anim Criar & Inserir" #: editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "Inserir pista e Ponto na Animação" +msgstr "Anim Inserir Pista & Chave" #: editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "Inserir Ponto de Animação" +msgstr "Anim Inserir Chave" #: editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "Mudar duração da Animação" +msgstr "Mudar Duração da Animação" #: editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "Mudar ciclo da Animação" +msgstr "Mudar Ciclo da Animação" #: editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "Criar Ponto de valor digitado na Animação" +msgstr "Anim Criar Chave de Valor Digitado" #: editor/animation_editor.cpp msgid "Anim Insert" -msgstr "Inserir Animação" +msgstr "Anim Inserir" #: editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "Escalar Pontos da Animação" +msgstr "Anim Escalar Chaves" #: editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "Adicionar chamada de pista de Animação" +msgstr "Anim Adicionar Pista de chamada" #: editor/animation_editor.cpp msgid "Animation zoom." @@ -273,19 +270,19 @@ msgstr "Ativar/Desativar repetição na Animação." #: editor/animation_editor.cpp msgid "Add new tracks." -msgstr "Adicionar novas pistas." +msgstr "Adicionar novas Pistas." #: editor/animation_editor.cpp msgid "Move current track up." -msgstr "Mover pista atual para cima." +msgstr "Mover Pista atual para cima." #: editor/animation_editor.cpp msgid "Move current track down." -msgstr "Mover pista atual para baixo." +msgstr "Mover Pista atual para baixo." #: editor/animation_editor.cpp msgid "Remove selected track." -msgstr "Remover pista selecionada." +msgstr "Remover Pista selecionada." #: editor/animation_editor.cpp msgid "Track tools" @@ -293,11 +290,11 @@ msgstr "Ferramentas da Pista" #: editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "Ativar edição de chaves individuais ao clicar nelas." +msgstr "Ativar edição de Chaves individuais ao clicar nelas." #: editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "Optimizador de Animações" +msgstr "Otimizador de Anim." #: editor/animation_editor.cpp msgid "Max. Linear Error:" @@ -337,11 +334,11 @@ msgstr "Chamar funções em que Nó?" #: editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "Remover chaves invalidas" +msgstr "Remover Chaves inválidas" #: editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "Remover pistas vazias ou não resolvidas" +msgstr "Remover Pistas vazias ou não resolvidas" #: editor/animation_editor.cpp msgid "Clean-up all animations" @@ -349,7 +346,7 @@ msgstr "Limpar todas as Animações" #: editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "Limpar Animação(ções) (DEFINITIVO!)" +msgstr "Limpar Animação(ões) (DEFINITIVO!)" #: editor/animation_editor.cpp msgid "Clean-Up" @@ -384,14 +381,6 @@ msgid "Replaced %d occurrence(s)." msgstr "SubstituÃdo %d ocorrência(s)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Substituir" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Substituir todos" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Caso de Compatibilidade" @@ -400,48 +389,16 @@ msgid "Whole Words" msgstr "Palavras inteiras" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Apenas seleção" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Procurar" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Encontrar" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Proximo" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Não encontrado!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Substituir por" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "SensÃvel a maiúsculas" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Para trás" +msgid "Replace" +msgstr "Substituir" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Perguntar ao substituir" +msgid "Replace All" +msgstr "Substituir todos" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Ignorar" +msgid "Selection Only" +msgstr "Apenas seleção" #: editor/code_editor.cpp msgid "Zoom In" @@ -543,9 +500,8 @@ msgid "Connecting Signal:" msgstr "Ligar sinal:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Ligar '%s' a '%s'" +msgstr "Desligar '%s' de '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -561,9 +517,17 @@ msgid "Signals" msgstr "Sinais" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Mudar tipo %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Mudar" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Criar Novo" +msgstr "Criar Novo %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -653,7 +617,7 @@ msgstr "Procurar recurso de substituição:" #: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp #: editor/quick_open.cpp scene/gui/file_dialog.cpp msgid "Open" -msgstr "Aberto" +msgstr "Abrir" #: editor/dependency_editor.cpp msgid "Owners Of:" @@ -674,8 +638,8 @@ msgstr "" "Remover mesmo assim? (sem anular)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Não é possÃvel remover:\n" +msgid "Cannot remove:" +msgstr "ImpossÃvel remover:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -731,7 +695,7 @@ msgstr "Apagar" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" -msgstr "Mudar chave de dicionário" +msgstr "Mudar Chave de Dicionário" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Value" @@ -757,9 +721,9 @@ msgstr "Fundadores do Projeto" msgid "Lead Developer" msgstr "Desenvolvedor-chefe" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Gestor de Projeto" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Gestor de Projeto " #: editor/editor_about.cpp msgid "Developers" @@ -835,7 +799,7 @@ msgstr "Error ao abrir Ficheiro comprimido, não está no formato zip." #: editor/editor_asset_installer.cpp msgid "Uncompressing Assets" -msgstr "Descompactando Ativos" +msgstr "A descompactar Ativos" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package Installed Successfully!" @@ -847,7 +811,7 @@ msgid "Success!" msgstr "Sucesso!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Instalar" @@ -868,9 +832,8 @@ msgid "Rename Audio Bus" msgstr "Mudar Barramento de Ãudio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Alternar solo do canal áudio" +msgstr "Alterar Volume do canal áudio" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -935,7 +898,7 @@ msgstr "Apagar Efeito" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Ãudio" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1116,13 +1079,12 @@ msgid "Updating scene.." msgstr "Atualizando a Cena.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(vazio)" +msgstr "[vazio]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[não guardado]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1162,8 +1124,8 @@ msgid "Packing" msgstr "Empacotamento" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Ficheiro Modelo não encontrado:\n" +msgid "Template file not found:" +msgstr "Ficheiro Modelo não encontrado:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1286,7 +1248,7 @@ msgstr "Analisar fontes" #: editor/editor_file_system.cpp msgid "(Re)Importing Assets" -msgstr "Importar Ativos" +msgstr "A (Re)Importar Ativos" #: editor/editor_help.cpp editor/editor_node.cpp #: editor/plugins/script_editor_plugin.cpp @@ -1374,6 +1336,20 @@ msgid "Description" msgstr "Descrição" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Tutoriais Online:" + +#: 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 "" +"Atualmente não existem tutoriais para esta classe, pode [color=$color][url=" +"$url]contribuir com um[/url][/color] ou [color=$color][url=$url2]solicitar " +"um[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Propriedades" @@ -1409,6 +1385,10 @@ msgstr "" msgid "Search Text" msgstr "Texto de Pesquisa" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Encontrar" + #: editor/editor_log.cpp msgid "Output:" msgstr "SaÃda:" @@ -1420,6 +1400,10 @@ msgstr "SaÃda:" msgid "Clear" msgstr "Limpar" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Limpar SaÃda" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Erro ao guardar recurso!" @@ -1428,8 +1412,8 @@ msgstr "Erro ao guardar recurso!" msgid "Save Resource As.." msgstr "Guardar Recurso Como.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Eu vejo.." @@ -1467,7 +1451,7 @@ msgstr "Erro ao carregar '%s'." #: editor/editor_node.cpp msgid "Saving Scene" -msgstr "Guardando Cena" +msgstr "A guardar a Cena" #: editor/editor_node.cpp msgid "Analyzing" @@ -1483,10 +1467,11 @@ msgstr "Esta operação não pode ser feita sem uma raiz da árvore." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Não foi possÃvel guardar Cena. Provavelmente, as dependências (instâncias) " -"não puderam ser satisfeitas." +"ImpossÃvel guardar Cena. Provavelmente, as dependências (instâncias ou " +"heranças) não puderam ser satisfeitas." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1680,7 +1665,7 @@ msgstr "Guardar alterações a '%s' antes de fechar?" #: editor/editor_node.cpp msgid "Save Scene As.." -msgstr "Guardar Cena Como.." +msgstr "Guardar Cena como.." #: editor/editor_node.cpp msgid "No" @@ -2021,8 +2006,8 @@ msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" -"Com esta opção ativada, formas de colisão e Nós raycast (para 2D e 3D) " -"serão visÃveis no jogo em execução." +"Com esta opção ativa, formas de colisão e Nós raycast (para 2D e 3D) serão " +"visÃveis no jogo em execução." #: editor/editor_node.cpp msgid "Visible Navigation" @@ -2033,7 +2018,7 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" -"Com esta opção ativa, Meshes e PolÃgonos serão visÃveis no jogo em execução." +"Com esta opção ativa, Meshes e PolÃgonos serão visÃveis no jogo em execução." #: editor/editor_node.cpp msgid "Sync Scene Changes" @@ -2046,7 +2031,7 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"Com esta opção ativa, alterações da Cena no Editor serão replicadas no jogo " +"Com esta opção ativa, alterações da Cena no Editor serão replicadas no jogo " "em execução.\n" "Quando usada num dispositivo remoto, é mais eficiente com um Sistema de " "Ficheiros em rede." @@ -2062,7 +2047,7 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"Com esta opção ativa, qualquer Script guardado será recarregado no jogo em " +"Com esta opção ativa, qualquer Script guardado será recarregado no jogo em " "execução.\n" "Quando usada num dispositivo remoto, é mais eficiente com um Sistema de " "Ficheiros em rede." @@ -2081,7 +2066,7 @@ msgstr "Apresentação do Editor" #: editor/editor_node.cpp msgid "Toggle Fullscreen" -msgstr "Alternar ecrã completo" +msgstr "Alternar Ecrã completo" #: editor/editor_node.cpp editor/project_export.cpp msgid "Manage Export Templates" @@ -2095,6 +2080,13 @@ msgstr "Ajuda" msgid "Classes" msgstr "Classes" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Procurar" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Documentação Online" @@ -2117,7 +2109,7 @@ msgstr "Sobre" #: editor/editor_node.cpp msgid "Play the project." -msgstr "Executar o projeto." +msgstr "Executa o projeto." #: editor/editor_node.cpp msgid "Play" @@ -2125,7 +2117,7 @@ msgstr "Executar" #: editor/editor_node.cpp msgid "Pause the scene" -msgstr "Pausar a Cena" +msgstr "Pausa a cena" #: editor/editor_node.cpp msgid "Pause Scene" @@ -2141,7 +2133,7 @@ msgstr "Parar" #: editor/editor_node.cpp msgid "Play the edited scene." -msgstr "Executar a Cena editada." +msgstr "Executa a cena editada." #: editor/editor_node.cpp msgid "Play Scene" @@ -2149,7 +2141,7 @@ msgstr "Executar a Cena" #: editor/editor_node.cpp msgid "Play custom scene" -msgstr "Executar a Cena customizada" +msgstr "Executa a cena customizada" #: editor/editor_node.cpp msgid "Play Custom Scene" @@ -2366,14 +2358,12 @@ msgid "Frame #:" msgstr "# quadro:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Tempo:" +msgstr "Tempo" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Chamar" +msgstr "Chamadas" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2480,8 +2470,8 @@ msgid "No version.txt found inside templates." msgstr "Não foi encontrado version.txt dentro dos Modelos." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Erro ao criar o Caminho para os Modelos:\n" +msgid "Error creating path for templates:" +msgstr "Erro ao criar o Caminho para os Modelos:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2489,7 +2479,7 @@ msgstr "A Extrair os Modelos de Exportação" #: editor/export_template_manager.cpp msgid "Importing:" -msgstr "Importando:" +msgstr "A Importar:" #: editor/export_template_manager.cpp msgid "" @@ -2516,7 +2506,6 @@ msgstr "Sem resposta." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Pedido falhado." @@ -2564,9 +2553,8 @@ msgid "Connecting.." msgstr "A ligar.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" -msgstr "ImpossÃvel conectar" +msgstr "ImpossÃvel conetar" #: editor/export_template_manager.cpp msgid "Connected" @@ -2640,11 +2628,8 @@ msgid "View items as a list" msgstr "Visualizar itens como uma lista" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Estado: A importação do Ficheiro falhou. Corrija o Ficheiro e importe " "manualmente." @@ -2653,21 +2638,20 @@ msgid "Cannot move/rename resources root." msgstr "Não foi possÃvel mover/renomear raÃz dos recursos." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Não pode mover uma pasta para si mesma.\n" +msgid "Cannot move a folder into itself." +msgstr "Não pode mover uma pasta para si mesma." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Erro ao mover:\n" +msgid "Error moving:" +msgstr "Erro ao mover:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Erro ao carregar:" +msgid "Error duplicating:" +msgstr "Erro ao duplicar:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Não foi possÃvel atualizar as dependências:\n" +msgid "Unable to update dependencies:" +msgstr "Incapaz de atualizar dependências:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2698,14 +2682,12 @@ msgid "Renaming folder:" msgstr "Renomear diretoria:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Duplicado" +msgstr "A duplicar Ficheiro:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Renomear diretoria:" +msgstr "A duplicar Diretoria:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2724,9 +2706,8 @@ msgid "Move To.." msgstr "Mover para.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Abrir Cena" +msgstr "Abrir Cena(s)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2741,9 +2722,8 @@ msgid "View Owners.." msgstr "Ver proprietários..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Duplicado" +msgstr "Duplicar..." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2840,14 +2820,12 @@ msgid "Importing Scene.." msgstr "A importar Cena.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "A gerar AABB" +msgstr "A gerar Lightmaps" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "A gerar AABB" +msgstr "A gerar para Mesh: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -2924,11 +2902,11 @@ msgstr "Inserir Ponto" #: editor/plugins/collision_polygon_editor_plugin.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Edit Poly (Remove Point)" -msgstr "Editar PolÃgono (Remover Ponto)" +msgstr "Editar Poly (Remover Ponto)" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Remove Poly And Point" -msgstr "Remover PolÃgono e Ponto" +msgstr "Remover Poly e Ponto" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Create a new polygon from scratch" @@ -2956,7 +2934,7 @@ msgstr "Alternar reprodução automática" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "Novo nome da Animação:" +msgstr "Novo Nome da Animação:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" @@ -2964,7 +2942,7 @@ msgstr "Nova Animação" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "Mudar o nome da Animação:" +msgstr "Mudar o Nome da Animação:" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Delete Animation?" @@ -3068,7 +3046,7 @@ msgstr "Abrir Animação do disco." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." -msgstr "Abrir uma Animação do disco." +msgstr "Carregar uma Animação do disco." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" @@ -3144,7 +3122,7 @@ msgstr "Incluir ferramentas (3D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "Criar nova Animação" +msgstr "Criar Nova Animação" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" @@ -3316,6 +3294,10 @@ msgstr "Editar filtros de Nó" msgid "Filters.." msgstr "Filtros..." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimationTree" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Livre" @@ -3457,7 +3439,7 @@ msgstr "A testar" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "Ficheiro de Ativos ZIP" +msgstr "Ficheiro ZIP de Ativos" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" @@ -3465,23 +3447,28 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"ImpossÃvel determinar um caminho para guardar imagens lightmap.\n" +"Guarde a sua Cena (para as imagens serem guardadas na mesma diretoria), ou " +"escolha um caminho nas propriedades 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 "" +"Não há Meshes para cozinhar. Assegure-se que contêm um canal UV2 e que a " +"referência 'Bake Light' flag está on." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." -msgstr "" +msgstr "Falha ao criar imagens lightmap, assegure-se que o caminho é gravável." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "Mudar raio da luz" +msgstr "Cozinhar Lightmaps" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Previsualização" @@ -3743,15 +3730,15 @@ msgstr "Esquema" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Keys" -msgstr "Inserir chaves" +msgstr "Inserir Chaves" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "Inserir chave" +msgstr "Inserir Chave" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "Inserir chave (faixas existentes)" +msgstr "Inserir Chave (Pistas existentes)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -3785,6 +3772,14 @@ msgstr "Adicionar %s" msgid "Adding %s..." msgstr "A adicionar %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "ImpossÃvel instanciar nós múltiplos sem raiz." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3796,11 +3791,6 @@ msgid "Error instancing scene from %s" msgstr "Erro a instanciar Cena de %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Esta operação requer um único Nó selecionado." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Mudar tipo padrão" @@ -3993,19 +3983,19 @@ msgstr "Criar Mesh de navegação" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Mesh incluÃda não é do tipo ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "Falhou o desempacotamento UV, a Mesh pode não ser múltipla?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Nenhuma Mesh para depurar." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "O Modelo não tem UV neste Layer" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4048,18 +4038,16 @@ msgid "Create Outline Mesh.." msgstr "Criar Mesh contorno..." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Ver" +msgstr "Ver UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Ver" +msgstr "Ver UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Desempacotar UV2 para Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4174,8 +4162,8 @@ msgid "Bake!" msgstr "Cozinhar!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Cozinhar a Mesh de navegação.\n" +msgid "Bake the navigation mesh." +msgstr "Cozinhar a Mesh de navegação." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4394,12 +4382,12 @@ msgstr "Shift+Arrastar: Selecionar Pontos de controlo" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Click: Add Point" -msgstr "Click: Adicionar Ponto" +msgstr "Clique: Adicionar Ponto" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Right Click: Delete Point" -msgstr "Click direito: Apagar Ponto" +msgstr "Clique direito: Apagar Ponto" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" @@ -4427,7 +4415,7 @@ msgstr "Fechar curva" #: editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" -msgstr "Ponto #" +msgstr "Ponto da curva #" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Point Position" @@ -4563,17 +4551,17 @@ msgstr "Carregar recurso" msgid "Paste" msgstr "Colar" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "ResourcePreloader" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "Limpar Ficheiros recentes" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Fechar e guardar alterações?\n" -"\"" +msgid "Close and save changes?" +msgstr "Fechar e guardar alterações?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4644,9 +4632,12 @@ msgid "Soft Reload Script" msgstr "Script de Recarregamento" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Copiar Caminho" +msgstr "Copiar Caminho do Script" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Mostrar no Sistema de Ficheiros" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4839,9 +4830,8 @@ msgid "Clone Down" msgstr "Clonar abaixo" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Mostrar linha" +msgstr "Fechar/Abrir Linha" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -4874,19 +4864,19 @@ msgstr "Indentação automática" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Toggle Breakpoint" -msgstr "Acionar Breakpoint" +msgstr "Alternar Breakpoint" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "Remover todos os Pontos de paragem" +msgstr "Remover todos os Breakpoints" #: editor/plugins/script_text_editor.cpp msgid "Goto Next Breakpoint" -msgstr "Ir para próximo Ponto de paragem" +msgstr "Ir para próximo Breakpoint" #: editor/plugins/script_text_editor.cpp msgid "Goto Previous Breakpoint" -msgstr "Ir para Ponto de paragem anterior" +msgstr "Ir para Breakpoint anterior" #: editor/plugins/script_text_editor.cpp msgid "Convert To Uppercase" @@ -5085,84 +5075,84 @@ msgid "Rotating %s degrees." msgstr "A rodar %s graus." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Vista de fundo." +msgid "Keying is disabled (no key inserted)." +msgstr "Edição desativada (nenhuma Chave inserida)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Fundo" +msgid "Animation Key Inserted." +msgstr "Chave de Animação inserida." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Vista de topo." +msgid "Objects Drawn" +msgstr "Objetos desenhados" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Vista de trás." +msgid "Material Changes" +msgstr "Mudanças de Material" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Trás" +msgid "Shader Changes" +msgstr "Alterações do Shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Vista de frente." +msgid "Surface Changes" +msgstr "Mudanças de superfÃcie" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Frente" +msgid "Draw Calls" +msgstr "Chamadas de desenho" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Vista de esquerda." +msgid "Vertices" +msgstr "Vértices" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Esquerda" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Vista de direita." +msgid "Top View." +msgstr "Vista de topo." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Direita" +msgid "Bottom View." +msgstr "Vista de fundo." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Edição desativada (nenhum Ponto inserido)." +msgid "Bottom" +msgstr "Fundo" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Ponto de Animação inserido." +msgid "Left View." +msgstr "Vista de esquerda." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Objetos desenhados" +msgid "Left" +msgstr "Esquerda" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Mudanças de Material" +msgid "Right View." +msgstr "Vista de direita." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Alterações do Shader" +msgid "Right" +msgstr "Direita" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Mudanças de superfÃcie" +msgid "Front View." +msgstr "Vista de frente." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Chamadas de desenho" +msgid "Front" +msgstr "Frente" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Vértices" +msgid "Rear View." +msgstr "Vista de trás." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Trás" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5176,6 +5166,10 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Sem parente para criar instância de filho." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Esta operação requer um único Nó selecionado." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "Vista normal" @@ -5249,16 +5243,12 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidade Freelook" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "Pré-visualização" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "Diálogo XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Modo seleção (Q)\n" +msgid "Select Mode (Q)" +msgstr "Modo seleção (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5287,14 +5277,12 @@ msgid "Local Coords" msgstr "Coordenadas locais" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Modo escalar (R)" +msgstr "Modo Espaço Local (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Modo Ajuste:" +msgstr "Modo Ajuste (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5326,7 +5314,7 @@ msgstr "Alternar vista perspetiva/ortogonal" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "Inserir Ponto de Animação" +msgstr "Inserir Chave de Animação" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" @@ -5411,7 +5399,7 @@ msgstr "Configuração" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "Visibilidade do Skeleton Gizmo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5495,7 +5483,7 @@ msgstr "Adicionar vazio" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "Mudar ciclo de Animação" +msgstr "Mudar Ciclo da Animação" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" @@ -5537,10 +5525,18 @@ msgstr "Mover (antes)" msgid "Move (After)" msgstr "Mover (depois)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "SpriteFrames" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "Pré-visualização StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StyleBox" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Definir região Rect" @@ -5566,14 +5562,17 @@ msgid "Auto Slice" msgstr "Corte automático" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Compensação:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Passo:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Separação:" @@ -5711,6 +5710,10 @@ msgstr "Letra" msgid "Color" msgstr "Cor" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Apagar seleção" @@ -5796,9 +5799,8 @@ msgid "Merge from scene?" msgstr "Fundir a partir da Cena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet.." +msgstr "Conjunto de tiles" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5812,6 +5814,34 @@ msgstr "Fundir a partir da Cena" msgid "Error" msgstr "Erro" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "Tiles automáticos" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" +"Selecionar sub-tile para usar como Ãcone, também será usado em ligações " +"inválidas autotile." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"LMB: definir bit on.\n" +"RMB: definir bit off." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Selecionar o sub-tile editado." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Selecionar sub-tile para alterar a sua prioridade." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Cancelar" @@ -5925,12 +5955,8 @@ msgid "Please choose a 'project.godot' file." msgstr "Escolha um Ficheiro 'project.godot'." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"O Projeto será criado numa pasta não vazia (poderá preferir criar uma nova " -"pasta)." +msgid "Please choose an empty folder." +msgstr "Por favor escolha uma pasta vazia." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5941,6 +5967,14 @@ msgid "Imported Project" msgstr "Projeto importado" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "ImpossÃvel criar pasta." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "Já existe uma pasta neste caminho com o nome indicado." + +#: editor/project_manager.cpp msgid "It would be a good idea to name your project." msgstr "Seria uma boa ideia dar um nome ao Projeto." @@ -5981,14 +6015,26 @@ msgid "Import Existing Project" msgstr "Importar Projeto existente" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Importar & Editar" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Criar novo Projeto" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Criar & Editar" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Instalar Projeto:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Instalar & Editar" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Nome do Projeto:" @@ -6005,10 +6051,6 @@ msgid "Browse" msgstr "Navegar" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "É um BINGO!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projeto sem nome" @@ -6063,6 +6105,10 @@ msgstr "" "Está prestes a analisar %s pastas para Projetos Godot existentes. Confirma?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Gestor de Projeto" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Lista de Projetos" @@ -6191,11 +6237,6 @@ msgid "Button 9" msgstr "Botão 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Mudar" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Ãndice do Eixo do joystick:" @@ -6208,9 +6249,8 @@ msgid "Joypad Button Index:" msgstr "Ãndice do botão do joypad:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "Apagar evento ação de entrada" +msgstr "Apagar Ação de Entrada" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6458,7 +6498,7 @@ msgstr "Novo Script" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Novo %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6493,9 +6533,8 @@ msgid "On" msgstr "On" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Adicionar vazio" +msgstr "[Vazio]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6575,10 +6614,6 @@ msgid "Error loading scene from %s" msgstr "Erro ao carregar a Cena de %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6667,8 +6702,8 @@ msgid "Error duplicating scene to save it." msgstr "Erro ao duplicar Cena para guardar." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Sub-recursos:" +msgid "Sub-Resources" +msgstr "Sub-recursos" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6970,7 +7005,7 @@ msgstr "Função:" msgid "Pick one or more items from the list to display the graph." msgstr "Escolha um ou mais itens da lista para exibir o gráfico." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Erros" @@ -6979,6 +7014,10 @@ msgid "Child Process Connected" msgstr "Processo filho conectado" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Copiar Erro" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Inspecionar instância anterior" @@ -7072,7 +7111,7 @@ msgstr "Atalhos" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Ligação" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7124,42 +7163,39 @@ msgstr "Mudar extensões de sonda" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Selecionar a biblioteca dinâmica para esta entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Selecionar dependências da biblioteca para este entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Remover Ponto da curva" +msgstr "Remover Entrada atual" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Duplo clique para criar nova entrada" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Plataforma:" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform" -msgstr "" +msgstr "Plataforma" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Biblioteca" +msgstr "Biblioteca Dinâmica" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Adicionar uma entrada arquitetura" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7330,10 +7366,50 @@ msgstr "Configurações do GridMap" msgid "Pick Distance:" msgstr "Distância de escolha:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "A gerar soluções..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "A gerar projeto C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Falha ao criar solução." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Falha ao guardar solução." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Feito" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "Falha ao criar projeto C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Criar solução C#" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Builds" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Construir Projeto" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avisos" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7692,24 +7768,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "Executar HTML exportado no Navegador padrão do sistema." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "ImpossÃvel escrever Ficheiro:\n" +msgid "Could not write file:" +msgstr "ImpossÃvel escrever Ficheiro:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "ImpossÃvel abrir Modelo para exportar:\n" +msgid "Could not open template for export:" +msgstr "ImpossÃvel abrir Modelo para exportar:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Modelo de exportação inválido:\n" +msgid "Invalid export template:" +msgstr "Modelo de exportação inválido:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "ImpossÃvel ler Shell HTML personalizado:\n" +msgid "Could not read custom HTML shell:" +msgstr "ImpossÃvel ler Shell HTML personalizado:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "ImpossÃvel ler Ficheiro do ecrã de inicialização:\n" +msgid "Could not read boot splash image file:" +msgstr "ImpossÃvel ler Ficheiro de imagem do ecrã de inicialização:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "A usar imagem de inicialização por defeito." #: scene/2d/animated_sprite.cpp msgid "" @@ -7728,6 +7808,17 @@ msgstr "" "instanciadas). O primeiro a ser criado funcionará, enquanto o resto será " "ignorado." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"Este nó não tem formas filhos, não conseguindo assim interagir com o " +"espaço.\n" +"Considere adicionar nós filhos CollisionShape2D ou CollisionPolygon2D para " +"definir a sua forma." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7817,7 +7908,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7872,23 +7963,31 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin exige um Nó filho ARVRCamera" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "A desenhar Meshes" +msgstr "A traçar Meshes: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "A desenhar Meshes" +msgstr "A traçar Luzes:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "A concluir desenho" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "A desenhar Meshes" +msgstr "A iluminar Meshes: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"Este nó não tem formas filhos, não conseguindo assim interagir com o " +"espaço.\n" +"Considere adicionar nós filhos CollisionShape ou CollisionPolygon para " +"definir a sua forma." #: scene/3d/collision_polygon.cpp msgid "" @@ -7948,8 +8047,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "Mudanças no tamanho do RigidBody (em modos caráter ou rÃgido) serão " @@ -8031,11 +8130,11 @@ msgstr "(Outro)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Ambiente padrão especificado em Configuração do Projeto (Rendering -> " -"Viewport -> Default Environment) não pode ser carregado." +"Environment -> Default Environment) não pode ser carregado." #: scene/main/viewport.cpp msgid "" @@ -8065,6 +8164,40 @@ msgstr "Erro ao carregar letra." msgid "Invalid font size." msgstr "Tamanho de letra inválido." +#~ msgid "Next" +#~ msgstr "Proximo" + +#~ msgid "Not found!" +#~ msgstr "Não encontrado!" + +#~ msgid "Replace By" +#~ msgstr "Substituir por" + +#~ msgid "Case Sensitive" +#~ msgstr "SensÃvel a maiúsculas" + +#~ msgid "Backwards" +#~ msgstr "Para trás" + +#~ msgid "Prompt On Replace" +#~ msgstr "Perguntar ao substituir" + +#~ msgid "Skip" +#~ msgstr "Ignorar" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "O Projeto será criado numa pasta não vazia (poderá preferir criar uma " +#~ "nova pasta)." + +#~ msgid "That's a BINGO!" +#~ msgstr "É um BINGO!" + +#~ msgid "preview" +#~ msgstr "Pré-visualização" + #~ msgid "Move Add Key" #~ msgstr "Mover Adicionar Chave" diff --git a/editor/translations/ro.po b/editor/translations/ro.po new file mode 100644 index 0000000000..9aa5fbeeff --- /dev/null +++ b/editor/translations/ro.po @@ -0,0 +1,7903 @@ +# Romanian translation of the Godot Engine editor +# Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) +# This file is distributed under the same license as the Godot source code. +# +# TigerxWood <TigerxWood@gmail.com>, 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2018-01-20 08:55+0000\n" +"Last-Translator: TigerxWood <TigerxWood@gmail.com>\n" +"Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/" +"godot/ro/>\n" +"Language: ro\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 2.19-dev\n" + +#: editor/animation_editor.cpp +msgid "Disabled" +msgstr "Dezactivat" + +#: editor/animation_editor.cpp +msgid "All Selection" +msgstr "Toate selecÈ›iile" + +#: editor/animation_editor.cpp +msgid "Anim Change Keyframe Time" +msgstr "Anim Schimbare timp cadre cheie" + +#: editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "Anim Schimbare tranziÈ›ie" + +#: editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "Anim Schimbare transformare" + +#: editor/animation_editor.cpp +msgid "Anim Change Keyframe Value" +msgstr "Anim Schimbare valoare cadre cheie" + +#: editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "Anim Schimbare apelare" + +#: editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "Anim Adăugare pistă" + +#: editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Anim Clonare chei" + +#: editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "Mutare sus pistă anim" + +#: editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "Mutare jos pistă anim" + +#: editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "Eliminare pistă anim" + +#: editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "Setare tranziÈ›ii la:" + +#: editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "Redenumire pistă anim" + +#: editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Track Change Wrap Mode" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Remove Selection" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp +#: editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: editor/animation_editor.cpp editor/create_dialog.cpp +#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +#: editor/plugins/mesh_instance_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Select an AnimationPlayer from the Scene Tree to edit animations." +msgstr "" + +#: editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: editor/animation_editor.cpp +msgid "Clean-Up" +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 "No Matches" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replaced %d occurrence(s)." +msgstr "" + +#: editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: editor/code_editor.cpp +msgid "Zoom In" +msgstr "" + +#: editor/code_editor.cpp +msgid "Zoom Out" +msgstr "" + +#: editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "" + +#: editor/code_editor.cpp editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: editor/code_editor.cpp +msgid "Col:" +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 target " +"Node." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect To Node:" +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/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/theme_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 "Path to Node:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: editor/connections_dialog.cpp editor/dependency_editor.cpp +#: editor/export_template_manager.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/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 "Connect '%s' to '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect '%s' from '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: editor/connections_dialog.cpp +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_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/editor_node.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp +#: editor/quick_open.cpp +msgid "Search:" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_help.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp +#: editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: editor/create_dialog.cpp editor/editor_help.cpp +#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp +#: editor/script_editor_debugger.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 not take effect unless reloaded." +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will 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 +#: editor/script_create_dialog.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.cpp editor/editor_node.cpp editor/filesystem_dock.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp +#: editor/quick_open.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? (no undo)" +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 "Scene failed to load 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 "Owns" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Delete selected files?" +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/project_export.cpp editor/project_settings_editor.cpp +#: editor/scene_tree_dock.cpp +msgid "Delete" +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 "Thanks!" +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 "Thirdparty License" +msgstr "" + +#: editor/editor_about.cpp +msgid "" +"Godot Engine relies on a number of thirdparty free and open source " +"libraries, all compatible with the terms of its MIT license. The following " +"is an exhaustive list of all such thirdparty 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/plugins/asset_library_editor_plugin.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 "Audio Bus, Drag and 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/tile_map_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 'res://default_bus_layout.tres' file." +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 "Create a new Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.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 +#: editor/plugins/animation_player_editor_plugin.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_autoload_settings.cpp +msgid "Invalid name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Invalid Path." +msgstr "" + +#: editor/editor_autoload_settings.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 +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/editor_file_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_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 +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 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 +#: 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 "Packing" +msgstr "" + +#: editor/editor_export.cpp platform/javascript/export/export.cpp +msgid "Template file not found:" +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 Current 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 "Show In File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "New Folder.." +msgstr "" + +#: editor/editor_file_dialog.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/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 scene/gui/file_dialog.cpp +msgid "Go to parent folder" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/script_editor_debugger.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 "(Re)Importing Assets" +msgstr "" + +#: editor/editor_help.cpp editor/editor_node.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: editor/editor_help.cpp editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: editor/editor_help.cpp editor/scene_tree_editor.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 "Members" +msgstr "" + +#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp +msgid "Members:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Public Methods" +msgstr "" + +#: editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: editor/editor_help.cpp +msgid "GUI Theme Items" +msgstr "" + +#: editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp +msgid "Signals:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Enumerations" +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 "Constants:" +msgstr "" + +#: editor/editor_help.cpp +msgid "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 "Properties" +msgstr "" + +#: editor/editor_help.cpp +msgid "Property Description:" +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 "Methods" +msgstr "" + +#: editor/editor_help.cpp +msgid "Method Description:" +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.cpp +msgid "Search Text" +msgstr "" + +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: editor/editor_log.cpp +msgid "Output:" +msgstr "" + +#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp +#: editor/property_editor.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_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp +msgid "I see.." +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 +msgid "Can't open '%s'." +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 "" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" + +#: editor/editor_node.cpp +msgid "Failed to load resource." +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 will not 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 will not 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 will not be kept.\n" +"Please read the documentation relevant to debugging to better understand " +"this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "Expand all properties" +msgstr "" + +#: editor/editor_node.cpp +msgid "Collapse all properties" +msgstr "" + +#: editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: editor/editor_node.cpp +msgid "There is no defined scene to run." +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 "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 +msgid "Open Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Base Scene" +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 "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 "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' 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 editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ugh" +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 "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 +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 "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 +msgid "Save Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save all Scenes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Open Recent" +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 +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 +msgid "Project" +msgstr "" + +#: editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: editor/editor_node.cpp editor/project_export.cpp +msgid "Export" +msgstr "" + +#: editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.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 +msgid "Editor" +msgstr "" + +#: editor/editor_node.cpp editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: editor/editor_node.cpp +msgid "Toggle Fullscreen" +msgstr "" + +#: editor/editor_node.cpp editor/project_export.cpp +msgid "Manage Export Templates" +msgstr "" + +#: editor/editor_node.cpp +msgid "Help" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Classes" +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/project_settings_editor.cpp +msgid "Search" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_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" +msgstr "" + +#: editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: editor/editor_node.cpp +msgid "Stop" +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 "Spins when the editor window repaints!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Disable Update Spinner" +msgstr "" + +#: editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: editor/editor_node.cpp +msgid "Changes may be lost!" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp +#: editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: editor/editor_node.cpp +msgid "Node" +msgstr "" + +#: editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: editor/editor_node.cpp +msgid "Don't Save" +msgstr "" + +#: editor/editor_node.cpp +msgid "Import Templates From ZIP File" +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_plugin.cpp +msgid "Creating Mesh Previews" +msgstr "" + +#: editor/editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: editor/editor_plugin_settings.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Version:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Start Profiling" +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 editor/script_editor_debugger.cpp +msgid "Time:" +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_run_native.cpp +msgid "Select device from the list" +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_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +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 "Re-Download" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Uninstall" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "(Installed)" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download" +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." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"Invalid version.txt format inside templates. Revision is not a valid " +"identifier." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "No version.txt found inside templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error creating path for templates:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Extracting Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Importing:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"No download links found for this version. Direct download is only available " +"for official releases." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request Failed." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.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 "Can't write file." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download Complete." +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 "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 "Export Template Manager" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Download Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Select mirror from list: " +msgstr "" + +#: editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Cannot navigate to '%s' as it has not been found in the file system!" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "View items as a grid of thumbnails" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "View items as a list" +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 +msgid "No name provided" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Provided name contains invalid characters" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "No name provided." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "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 "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 "Expand all" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Collapse all" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Rename.." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move To.." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Open Scene(s)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "View Owners.." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicate.." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Next Directory" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "" +"Scanning Files,\n" +"Please Wait.." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move" +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp +#: editor/project_manager.cpp +msgid "Rename" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Remove from Group" +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/cube_grid_theme_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 editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: editor/import_dock.cpp +msgid "Reimport" +msgstr "" + +#: editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/collision_polygon_editor_plugin.cpp +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Insert Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/collision_polygon_editor_plugin.cpp +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Create a new polygon from scratch" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "" +"Edit existing polygon:\n" +"LMB: Move Point.\n" +"Ctrl+LMB: Split Segment.\n" +"RMB: Erase Point." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Delete points" +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 +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 "ERROR: Invalid animation name!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add 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 "ERROR: No animation to copy!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: 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 "ERROR: 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 "Create new animation in player." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +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 "Edit Target Blend Times" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Onion Skinning" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Enable Onion Skinning" +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 "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/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +#: editor/script_create_dialog.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_player_editor_plugin.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Filters" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Free" +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 "Can't resolve hostname:" +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 "Request failed, return code:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Request failed, too many redirects" +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 "Fetching:" +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 "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 "first" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "prev" +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 +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/project_settings_editor.cpp +msgid "Plugins" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Reverse" +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 "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 +msgid "Preview" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step:" +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 "Move Pivot" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move vertical guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create new 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 new horizontal guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Remove horizontal guide" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Create new horizontal and vertical guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +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 +msgid "Paste Pose" +msgstr "" + +#: editor/plugins/canvas_item_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 +msgid "Move Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate 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 "Toggles snapping" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snapping options" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to grid" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure 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 +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 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 +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show 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 +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "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 "Center Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Layout" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "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 "Drag pivot from mouse position" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set pivot at mouse position" +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 "Add %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Adding %s..." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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 Poly3D" +msgstr "" + +#: editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: editor/plugins/cube_grid_theme_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat0" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Flat1" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "Ease in" +msgstr "" + +#: editor/plugins/curve_editor_plugin.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/gi_probe_editor_plugin.cpp +msgid "Bake GI Probe" +msgstr "" + +#: editor/plugins/gradient_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: editor/plugins/gradient_editor_plugin.cpp +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +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 "" +"No OccluderPolygon2D resource on this node.\n" +"Create and assign one?" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "RMB: Erase Point." +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 Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Contained Mesh is not of type ArrayMesh." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "UV Unwrap failed, mesh may not be manifold?" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "No mesh to debug." +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "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 "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 Convex 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" +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/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 "Parent has no solid faces to populate." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +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_mesh_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: editor/plugins/navigation_mesh_editor_plugin.cpp +msgid "Bake the navigation mesh." +msgstr "" + +#: editor/plugins/navigation_mesh_editor_plugin.cpp +msgid "Clear the navigation mesh." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Setting up Configuration..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Calculating grid size..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Creating heightfield..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Marking walkable triangles..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Constructing compact heightfield..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Eroding walkable area..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Partitioning..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Creating contours..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Creating polymesh..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Converting to native navigation mesh..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Navigation Mesh Generator Setup:" +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Parsing Geometry..." +msgstr "" + +#: editor/plugins/navigation_mesh_generator.cpp +msgid "Done!" +msgstr "" + +#: editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generating AABB" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Can only set point into a ParticlesMaterial process material" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generate Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Particles" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generation Time (sec):" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Mask" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Capture from Pixel" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Emission Colors" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "A processor material of type 'ParticlesMaterial' is required." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Mesh" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Node" +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 "Generate Visibility AABB" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Out-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove In-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "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 +#: 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 "Split Segment (in curve)" +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_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/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +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 +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_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/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 +#: editor/plugins/spatial_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/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 +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: editor/plugins/resource_preloader_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 "Paste" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +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 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 "Import Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid " Class Reference" +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 "New" +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 "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Next" +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 "Save Theme As" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close Docs" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close All" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close Other Tabs" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Toggle Scripts Panel" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find.." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find Next" +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 "Step Into" +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 "Search the class hierarchy." +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 "Create Script" +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 +msgid "Reload" +msgstr "" + +#: editor/plugins/script_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 "" +"Built-in scripts can only be edited when the scene they belong to is loaded" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Only resources from filesystem can be dropped." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert Case" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Uppercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Lowercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Capitalize" +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 +#: 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/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 "Clone Down" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold/Unfold Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Unfold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "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 +#: 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 "Goto Next Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert To Uppercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Convert To Lowercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Find Previous" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Replace.." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Goto Function.." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Goto Line.." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "Shader" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +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 "Objects Drawn" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Material Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Shader Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Surface Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Draw Calls" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Vertices" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "FPS" +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 with view" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "OK :(" +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 "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 "Doppler Enable" +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 "XForm Dialog" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Select Mode (Q)" +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 "Move Mode (W)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Local Space Mode (%s)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Mode (%s)" +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 "Align Selection With View" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Tool Select" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Tool Move" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Tool Rotate" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Tool Scale" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Toggle Freelook" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +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 "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 "Skeleton Gizmo visibility" +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/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +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 Loop" +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 "Animations" +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 "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 "SpriteFrames" +msgstr "" + +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Region Rect" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.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 +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Separation:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +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 +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove All Items" +msgstr "" + +#: editor/plugins/theme_editor_plugin.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 "CheckBox Radio1" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "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 "Has" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp +msgid "Options" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +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 editor/project_settings_editor.cpp +#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: editor/plugins/theme_editor_plugin.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" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase 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 "Erase selection" +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 "Mirror X" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +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 "Tile Set" +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 editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + +#: editor/progress_dialog.cpp scene/gui/dialogs.cpp +msgid "Cancel" +msgstr "" + +#: editor/project_export.cpp +msgid "Runnable" +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 "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 "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 (comma separated, e.g: *.json, *.txt)" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)" +msgstr "" + +#: editor/project_export.cpp +msgid "Patches" +msgstr "" + +#: editor/project_export.cpp +msgid "Make Patch" +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 "Export PCK/Zip" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing:" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing/corrupted:" +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 "Please choose a 'project.godot' file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose an empty folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose a folder that does not contain a 'project.godot' file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Imported Project" +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 get project.godot in project path." +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 "Couldn't get project.godot in the project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "New Game 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 "Create folder" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Can't open project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +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 \"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 more than one project?" +msgstr "" + +#: editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Language changed.\n" +"The UI will update next time the editor or project manager starts." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"You are about the scan %s folders for existing Godot projects. Do you " +"confirm?" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp +msgid "Project List" +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 "Templates" +msgstr "" + +#: editor/project_manager.cpp +msgid "Exit" +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 don't currently have any projects.\n" +"Would you like to explore the 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 (anything goes but '/' or ':')." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action Event" +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 "" + +#: 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 "Button 6" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Button 7" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Button 8" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Button 9" +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 "Device" +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 "Can't contain '/' or ':'" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Already existing" +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 "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 editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Override For.." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Input Map" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action:" +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 only selected locales" +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/property_editor.cpp +msgid "Pick a Viewport" +msgstr "" + +#: editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: editor/property_editor.cpp +msgid "Ease Out" +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 "New Script" +msgstr "" + +#: editor/property_editor.cpp +msgid "New %s" +msgstr "" + +#: editor/property_editor.cpp +msgid "Make Unique" +msgstr "" + +#: editor/property_editor.cpp +msgid "Show in File System" +msgstr "" + +#: editor/property_editor.cpp +msgid "Convert To %s" +msgstr "" + +#: editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: editor/property_editor.cpp +msgid "Selected node is not a Viewport!" +msgstr "" + +#: editor/property_editor.cpp +msgid "Pick a Node" +msgstr "" + +#: editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: editor/property_editor.cpp +msgid "On" +msgstr "" + +#: editor/property_editor.cpp +msgid "[Empty]" +msgstr "" + +#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +msgid "Set" +msgstr "" + +#: editor/property_editor.cpp +msgid "Properties:" +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/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +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 editor/script_create_dialog.cpp +#: scene/gui/dialogs.cpp +msgid "OK" +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 "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 "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 "Editable Children" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Load As Placeholder" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Discard Instancing" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Makes Sense!" +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 "Remove 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 editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: editor/scene_tree_dock.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 "Filter nodes" +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_dock.cpp +msgid "Clear!" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node configuration warning:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has connection(s) and group(s)\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node has connections.\n" +"Click to show signals dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is in group(s).\n" +"Click to show groups dock." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Open script" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is locked.\n" +"Click to unlock" +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 "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 "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 "N/A" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path 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 "Directory of the same name exists" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "File exists, will be reused" +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 "Invalid Path" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid inherited parent name or path" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Script 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 "Create new script file" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Load existing script file" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Inherits" +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 "Source:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Function:" +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 modules/mono/editor/mono_bottom_panel.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 "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 "Variable" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: editor/script_editor_debugger.cpp +msgid "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 "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/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 Sphere Shape Radius" +msgstr "" + +#: editor/spatial_editor_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 Ray Shape Length" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Particles AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Probe Extents" +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 "Library" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Status" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "Libraries: " +msgstr "" + +#: modules/gdnative/register_types.cpp +msgid "GDNative" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp modules/mono/glue/glue_header.h +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +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 "GridMap Delete Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Duplicate Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Floor:" +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 "Previous Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Floor" +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 "Create Area" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Create Exterior Connector" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Erase Area" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clear 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/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Builds" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +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 "Functions:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Variables:" +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 "Add Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Expression" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Add Node" +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 "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 "Condition" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Switch" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Iterator" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "While" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Return" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Call" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Get" +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 "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 "Remove Function" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Available Nodes:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Select or create a function to edit graph" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Signal Arguments:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Edit Variable:" +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 "Paste Nodes" +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 "" + +#: 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 "" + +#: 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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes 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/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 scene/3d/particles.cpp +msgid "" +"A material to process the particles is not assigned, so no behavior is " +"imprinted." +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/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D 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 will not 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 will not 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 "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes 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/gi_probe.cpp +msgid "Plotting Meshes" +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 "" +"Nothing is visible because meshes have not been assigned to draw passes." +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 "Path property must point to a valid Spatial node to work." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +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/gui/color_picker.cpp +msgid "Raw Mode" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Add current color as a preset" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Select this Folder" +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 though, but they will " +"hide upon running." +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/dynamic_font.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +msgid "Invalid font size." +msgstr "" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 0dd2003fd3..cf82142c80 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -3,10 +3,11 @@ # Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. # +# Artem Varaksa <aymfst@gmail.com>, 2018. # B10nicMachine <shumik1337@gmail.com>, 2017. # DimOkGamer <dimokgamer@gmail.com>, 2016-2017. # Igor S <scorched@bk.ru>, 2017. -# ijet <my-ijet@mail.ru>, 2017. +# ijet <my-ijet@mail.ru>, 2017-2018. # Maxim Kim <habamax@gmail.com>, 2016. # Maxim toby3d Lebedev <mail@toby3d.ru>, 2016. # outbools <drag4e@yandex.ru>, 2017. @@ -17,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2017-11-29 10:40+0000\n" +"PO-Revision-Date: 2018-01-24 12:27+0000\n" "Last-Translator: ijet <my-ijet@mail.ru>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -27,7 +28,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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -38,9 +39,8 @@ msgid "All Selection" msgstr "Ð’Ñе выбранные Ñлементы" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Изменить значение" +msgstr "Изменить Ð²Ñ€ÐµÐ¼Ñ ÐºÐ»ÑŽÑ‡ÐµÐ²Ð¾Ð³Ð¾ кадра" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -51,9 +51,8 @@ msgid "Anim Change Transform" msgstr "Изменить положение" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Изменить значение" +msgstr "Измененить значение ключевого кадра" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -209,8 +208,7 @@ msgstr "Создать %d новые дорожки и вÑтавить ключ #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Создать" @@ -387,14 +385,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Заменено %d Ñовпадений." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Заменить" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Заменить вÑÑ‘" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Учитывать региÑтр" @@ -403,48 +393,16 @@ msgid "Whole Words" msgstr "Целые Ñлова" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Только выделÑть" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "ПоиÑк" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Ðайти" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Следующий" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ðе найдено!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Заменить на" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ЧувÑтвительноÑть региÑтра" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Ð’ обратном направлении" +msgid "Replace" +msgstr "Заменить" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Подтверждение замены" +msgid "Replace All" +msgstr "Заменить вÑÑ‘" #: editor/code_editor.cpp -msgid "Skip" -msgstr "ПропуÑтить" +msgid "Selection Only" +msgstr "Только выделÑть" #: editor/code_editor.cpp msgid "Zoom In" @@ -460,7 +418,7 @@ msgstr "СброÑить приближение" #: editor/code_editor.cpp editor/script_editor_debugger.cpp msgid "Line:" -msgstr "Стр:" +msgstr "Строка:" #: editor/code_editor.cpp msgid "Col:" @@ -546,9 +504,8 @@ msgid "Connecting Signal:" msgstr "Подключение Ñигнала:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "ПриÑоединить '%s' к '%s'" +msgstr "Отключить '%s' от '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -564,9 +521,17 @@ msgid "Signals" msgstr "Сигналы" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Изменить тип %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Изменить" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Создать новый" +msgstr "Создать %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -676,8 +641,8 @@ msgstr "" "Ð’ÑÑ‘ равно удалить его? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ:\n" +msgid "Cannot remove:" +msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -759,9 +724,9 @@ msgstr "ОÑнователи Проекта" msgid "Lead Developer" msgstr "Ведущий Разработчик" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Менеджер проектов" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Менеджер проектов " #: editor/editor_about.cpp msgid "Developers" @@ -849,7 +814,7 @@ msgid "Success!" msgstr "УÑпех!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "УÑтановить" @@ -870,9 +835,8 @@ msgid "Rename Audio Bus" msgstr "Переименовать аудио шину" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Переключить аудио шину - Ñоло" +msgstr "Изменить громкоÑть звуковой шины" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -937,7 +901,7 @@ msgstr "Удалить Ñффект" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Ðудио" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1015,7 +979,7 @@ msgstr "Загрузить по умолчанию" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "Загрузить Ñтандартную раÑкладку шины." +msgstr "Загрузить раÑкладку шины по умолчанию." #: editor/editor_autoload_settings.cpp msgid "Invalid name." @@ -1118,13 +1082,12 @@ msgid "Updating scene.." msgstr "Обновление Ñцены.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(пуÑто)" +msgstr "[пуÑто]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[не Ñохранено]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1164,8 +1127,8 @@ msgid "Packing" msgstr "Упаковывание" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Файл шаблона не найден:\n" +msgid "Template file not found:" +msgstr "Файл шаблона не найден:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1376,6 +1339,20 @@ msgid "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 "" +"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ÑутÑтвуют учебники Ð´Ð»Ñ Ñтого клаÑÑа, вы можете его " +"[color=$color][url=$url]добавить[/url][/color] или [color=$color][url=" +"$url2]запроÑить[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "СвойÑтва" @@ -1411,6 +1388,10 @@ msgstr "" msgid "Search Text" msgstr "ИÑкать текÑÑ‚" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Ðайти" + #: editor/editor_log.cpp msgid "Output:" msgstr "Вывод:" @@ -1422,6 +1403,10 @@ msgstr "Вывод:" msgid "Clear" msgstr "ОчиÑтить" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "ОчиÑтить вывод" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Ошибка при Ñохранении реÑурÑа!" @@ -1430,8 +1415,8 @@ msgstr "Ошибка при Ñохранении реÑурÑа!" msgid "Save Resource As.." msgstr "Сохранить реÑÑƒÑ€Ñ ÐºÐ°Ðº.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "ЯÑно.." @@ -1485,10 +1470,11 @@ msgstr "Ðта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена бе #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Ðе возможно Ñохранить Ñцену. ВероÑтно, завиÑимоÑти (ÑкземплÑры) не могли " -"быть удовлетворены." +"Ðе возможно Ñохранить Ñцену. ВероÑтно, завиÑимоÑти (ÑкземплÑры или " +"унаÑледованные) не могли быть удовлетворены." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -2095,6 +2081,13 @@ msgstr "Справка" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "ПоиÑк" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Онлайн Документы" @@ -2366,14 +2359,12 @@ msgid "Frame #:" msgstr "Кадр #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "ВремÑ:" +msgstr "ВремÑ" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Вызов" +msgstr "Вызовы" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2480,8 +2471,8 @@ msgid "No version.txt found inside templates." msgstr "Ðе найден version.txt файл в шаблонах." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²:\n" +msgid "Error creating path for templates:" +msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2516,9 +2507,8 @@ msgstr "Ðет ответа." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошёл." +msgstr "Ðе удалоÑÑŒ выполнить запроÑ." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2564,7 +2554,6 @@ msgid "Connecting.." msgstr "Подключение.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ" @@ -2641,11 +2630,8 @@ msgid "View items as a list" msgstr "ПроÑмотр Ñлементов в виде ÑпиÑка" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "СтатуÑ: Импорт файла не удалÑÑ. ПожалуйÑта, иÑправьте файл и " "переимпортируйте вручную." @@ -2654,21 +2640,20 @@ msgid "Cannot move/rename resources root." msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить/переименовать корень." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Ðевозможно перемеÑтить папку в ÑебÑ.\n" +msgid "Cannot move a folder into itself." +msgstr "Ðевозможно перемеÑтить папку в ÑебÑ." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Ошибка перемещениÑ:\n" +msgid "Error moving:" +msgstr "Ошибка перемещениÑ:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Ошибка при загрузке:" +msgid "Error duplicating:" +msgstr "Ошибка дублированиÑ:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ завиÑимоÑти:\n" +msgid "Unable to update dependencies:" +msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ завиÑимоÑти:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2699,14 +2684,12 @@ msgid "Renaming folder:" msgstr "Переименование папки:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Дублировать" +msgstr "Дублирование файла:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Переименование папки:" +msgstr "Дублирование папки:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2725,9 +2708,8 @@ msgid "Move To.." msgstr "ПеремеÑтить в.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Открыть Ñцену" +msgstr "Открыть Ñцену(ны)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2742,9 +2724,8 @@ msgid "View Owners.." msgstr "ПроÑмотреть владельцев.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Дублировать" +msgstr "Дублировать.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2841,14 +2822,12 @@ msgid "Importing Scene.." msgstr "Импортирование Ñцены.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Передача в карты оÑвещениÑ:" +msgstr "Создание карт оÑвещениÑ" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Генерировать AABB" +msgstr "Создание Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¸Ñетки: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3319,6 +3298,10 @@ msgstr "Редактировать фильтры узла" msgid "Filters.." msgstr "Фильтры.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "Дерево анимации" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "ОÑвободить" @@ -3468,23 +3451,29 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Ðе удаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ путь Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ 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 и что " +"флаг 'Запекание Ñвета' включен." #: 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 -#, fuzzy msgid "Bake Lightmaps" -msgstr "Передача в карты оÑвещениÑ:" +msgstr "Запекать карты оÑвещениÑ" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "ПредпроÑмотр" @@ -3631,7 +3620,7 @@ msgstr "Параметры прилипаниÑ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to grid" -msgstr "Прилипание к Ñетке" +msgstr "ПривÑзка к Ñетке" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" @@ -3639,7 +3628,7 @@ msgstr "ИÑпользовать привÑзку вращениÑ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap..." -msgstr "ÐаÑтроить прилипание.." +msgstr "ÐаÑтроить привÑзку..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" @@ -3655,7 +3644,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" @@ -3671,7 +3660,7 @@ 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 @@ -3789,6 +3778,14 @@ msgstr "Добавить %s" msgid "Adding %s..." msgstr "Добавление %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3800,11 +3797,6 @@ msgid "Error instancing scene from %s" msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñцены из %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Ðта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ одного выбранного узла." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Изменить тип по умолчанию" @@ -3997,19 +3989,19 @@ msgstr "Создать полиÑетку навигации" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "ПолиÑетка не ArrayMesh типа." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "UV развертка не удалаÑÑŒ, возможно у полиÑетки не одноÑвÑÐ·Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð°?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Ðет полиÑетки Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "У модели нет UV в Ñтом Ñлое" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4052,18 +4044,16 @@ msgid "Create Outline Mesh.." msgstr "Создать полиÑетку обводки.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Обзор" +msgstr "ПроÑмотр UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Обзор" +msgstr "ПроÑмотр UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Развернуть UV2 Ð´Ð»Ñ Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4075,11 +4065,11 @@ msgstr "Размер обводки:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "Ðе указан иÑточник полиÑетки (и мульти полиÑетка не указана в узле)." +msgstr "Ðе указан иÑточник полиÑетки (и MultiMesh не указана в узле)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "Ðе указана иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка (и в мульти полиÑетке нет полиÑетки)." +msgstr "Ðе указана иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка (и в MultiMesh нет полиÑетки)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -4155,7 +4145,7 @@ msgstr "ОÑÑŒ Z" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "Сетка до оÑи:" +msgstr "ОÑÑŒ вверх полиÑетки:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -4178,8 +4168,8 @@ msgid "Bake!" msgstr "Запечь!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Создать полиÑетку навигации.\n" +msgid "Bake the navigation mesh." +msgstr "Создать полиÑетку навигации." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4223,11 +4213,11 @@ msgstr "Создание полиÑетки..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "Преобразование в ÑобÑтвенную навигационную Ñетку..." +msgstr "Преобразование в ÑобÑтвенную навигационную полиÑетку..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" -msgstr "ÐаÑтройка генератора навигационной Ñетки:" +msgstr "ÐаÑтройка генератора навигационной полиÑетки:" #: editor/plugins/navigation_mesh_generator.cpp msgid "Parsing Geometry..." @@ -4244,7 +4234,7 @@ msgstr "Создать Navigation Polygon" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "Генерировать AABB" +msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ AABB" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" @@ -4567,17 +4557,17 @@ msgstr "Загрузить реÑурÑ" msgid "Paste" msgstr "Ð’Ñтавить" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "Предзагрузчик реÑурÑов" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "ОчиÑтить Ðедавние Файлы" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Закрыть и Ñохранить изменениÑ?\n" -"\"" +msgid "Close and save changes?" +msgstr "Закрыть и Ñохранить изменениÑ?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4648,9 +4638,12 @@ msgid "Soft Reload Script" msgstr "МÑгко перезагрузить Ñкрипты" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Копировать путь" +msgstr "Копировать путь к Ñкрипту" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Показать в файловой ÑиÑтеме" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4843,9 +4836,8 @@ msgid "Clone Down" msgstr "Копировать вниз" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Развернуть Ñтроку" +msgstr "Свернуть/Развернуть Ñтроку" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5082,91 +5074,91 @@ msgstr "МаÑштаб: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "Переводы: " +msgstr "Перемещение: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." msgstr "Поворот на %s градуÑов." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Вид Снизу." +msgid "Keying is disabled (no key inserted)." +msgstr "МанипулÑÑ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° (без вÑтавленного ключа)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Ðиз" +msgid "Animation Key Inserted." +msgstr "Ключ анимации вÑтавлен." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Вид Ñверху." +msgid "Objects Drawn" +msgstr "ÐариÑовано обьектов" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Вид Ñзади." +msgid "Material Changes" +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð°" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Зад" +msgid "Shader Changes" +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÐµÐ¹Ð´ÐµÑ€Ð¾Ð²" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Вид Ñпереди." +msgid "Surface Changes" +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾Ñти" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Перед" +msgid "Draw Calls" +msgstr "Вызовы отриÑовки" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Вид Ñлева." +msgid "Vertices" +msgstr "Вершины" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Лево" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "Вид Ñправа." +msgid "Top View." +msgstr "Вид Ñверху." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "Право" +msgid "Bottom View." +msgstr "Вид Снизу." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "МанипулÑÑ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° (без вÑтавленного ключа)." +msgid "Bottom" +msgstr "Ðиз" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Ключ анимации вÑтавлен." +msgid "Left View." +msgstr "Вид Ñлева." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "ÐариÑовано обьектов" +msgid "Left" +msgstr "Лево" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð°" +msgid "Right View." +msgstr "Вид Ñправа." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÐµÐ¹Ð´ÐµÑ€Ð¾Ð²" +msgid "Right" +msgstr "Право" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾Ñти" +msgid "Front View." +msgstr "Вид Ñпереди." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Вызовы отриÑовки" +msgid "Front" +msgstr "Перед" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Вершины" +msgid "Rear View." +msgstr "Вид Ñзади." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Зад" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5180,6 +5172,10 @@ msgstr "Ок :(" 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 "Display Normal" msgstr "Режим нормалей" @@ -5253,16 +5249,12 @@ msgid "Freelook Speed Modifier" msgstr "Обзор модификатор ÑкороÑти" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "предпроÑмотр" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XForm диалоговое окно" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Режим Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (Q)\n" +msgid "Select Mode (Q)" +msgstr "Режим Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5291,14 +5283,12 @@ msgid "Local Coords" msgstr "Локальные координаты" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Режим маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (R)" +msgstr "Режим локального проÑтранÑтва (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Режим привÑзки:" +msgstr "Режим привÑзки (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5415,7 +5405,7 @@ msgstr "ÐаÑтройки" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "ВидимоÑть гизмо Ñкелета" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5423,7 +5413,7 @@ msgstr "Параметры привÑзки" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "ПривÑзка преобразований:" +msgstr "ПривÑзка перемещениÑ:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" @@ -5455,7 +5445,7 @@ msgstr "Изменение преобразованиÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" -msgstr "Смещение:" +msgstr "Перемещение:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate (deg.):" @@ -5541,10 +5531,20 @@ msgstr "ПеремеÑтить (до)" msgid "Move (After)" msgstr "ПеремеÑтить (поÑле)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "Кадры cпрайта" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox предпроÑмотр:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Стиль" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Задать регион" @@ -5570,14 +5570,17 @@ msgid "Auto Slice" msgstr "ÐвтоматичеÑки" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "ОтÑтуп:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Шаг:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Разделение:" @@ -5715,6 +5718,10 @@ msgstr "Шрифт" msgid "Color" msgstr "Цвет" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Тема" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ОчиÑтить выделенное" @@ -5800,9 +5807,8 @@ msgid "Merge from scene?" msgstr "СлиÑние из Ñцены?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "Ðабор тайлов.." +msgstr "Ðабор тайлов" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5816,6 +5822,34 @@ msgstr "СлиÑние из Ñцены" msgid "Error" msgstr "Ошибка" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" +"Выберите плитку Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве значка, она также будет " +"иÑпользоватьÑÑ Ð¿Ñ€Ð¸ неверных привÑзках автотайлов." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"ЛКМ: уÑтановить бит.\n" +"ПКМ: ÑнÑть бит." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Выберите текущий редактированный вложенный тайл." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Выберите вложенный тайл, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ приоритета." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Отмена" @@ -5925,10 +5959,8 @@ msgid "Please choose a 'project.godot' file." msgstr "ПожалуйÑта, выберите 'project.godot' файл." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "Ваш проект будет Ñоздан не в пуÑтой папке (лучше Ñоздать новую папку)." +msgid "Please choose an empty folder." +msgstr "ПожалуйÑта, выберите пуÑтую папку." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5939,6 +5971,14 @@ msgid "Imported Project" 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 "Было бы неплохо назвать ваш проект." @@ -5979,14 +6019,26 @@ 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 "Ðазвание проекта:" @@ -6003,10 +6055,6 @@ msgid "Browse" msgstr "Обзор" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "Бинго!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "БезымÑнный проект" @@ -6061,6 +6109,10 @@ msgstr "" "Подтверждаете?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Менеджер проектов" + +#: editor/project_manager.cpp msgid "Project List" msgstr "СпиÑок проектов" @@ -6189,11 +6241,6 @@ msgid "Button 9" msgstr "Кнопка 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Изменить" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¾Ñи джойÑтика:" @@ -6206,7 +6253,6 @@ msgid "Joypad Button Index:" msgstr "Ð˜Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ джойÑтика:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" msgstr "Удалить дейÑтвие" @@ -6456,7 +6502,7 @@ msgstr "Ðовый Ñкрипт" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Ðовый %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6491,9 +6537,8 @@ msgid "On" msgstr "Вкл" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "Добавить пуÑтоту" +msgstr "[ПуÑто]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6575,10 +6620,6 @@ msgid "Error loading scene from %s" msgstr "Ошибка при загрузке Ñцены из %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ок" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6667,8 +6708,8 @@ msgid "Error duplicating scene to save it." msgstr "Ошибка Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñцены, при её Ñохранении." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Вложенные РеÑурÑÑ‹:" +msgid "Sub-Resources" +msgstr "Вложенные реÑурÑÑ‹" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6971,7 +7012,7 @@ msgid "Pick one or more items from the list to display the graph." msgstr "" "Выбрать один или неÑколько Ñлементов из ÑпиÑка, чтобы отобразить график." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Ошибки" @@ -6980,6 +7021,10 @@ msgid "Child Process Connected" msgstr "Дочерний процеÑÑ ÑвÑзан" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Ошибка копированиÑ" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "ОÑмотреть предыдущий ÑкземплÑÑ€" @@ -7073,7 +7118,7 @@ msgstr "ГорÑчие клавиши" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "ПривÑзка" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7125,43 +7170,39 @@ msgstr "Изменить Probe Extents" #: 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 -#, fuzzy msgid "Remove current entry" -msgstr "Удалить точку кривой" +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:" -msgstr "" +msgstr "Платформа:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "Скопировать на платформу.." +msgstr "Платформа" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy 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 -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNative библиотека" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7330,10 +7371,50 @@ msgstr "GridMap Параметры" msgid "Pick Distance:" msgstr "РаÑÑтоÑние выбора:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "Создание C# проекта..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Ðе удалоÑÑŒ Ñоздать решение." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Ðе удалоÑÑŒ Ñохранить решение." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Готово" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "Ðе удалоÑÑŒ Ñоздать C# проект." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Моно" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Создать C# решение" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "Билды" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Собрать проект" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "ПредупреждениÑ" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7689,27 +7770,31 @@ 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:" +msgstr "Ðе удалоÑÑŒ запиÑать файл:" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Ðе удалоÑÑŒ запиÑать файл:\n" +msgid "Could not open template for export:" +msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:\n" +msgid "Invalid export template:" +msgstr "Ðеверный шаблон ÑкÑпорта:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Ðеверный шаблон ÑкÑпорта:\n" +msgid "Could not read custom HTML shell:" +msgstr "Ðе удалоÑÑŒ прочитать пользовательÑкую HTML оболочку:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "Ðе удаетÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ пользовательÑкую HTML-оболочку:\n" +msgid "Could not read boot splash image file:" +msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки:\n" +msgid "Using default boot splash image." +msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию." #: scene/2d/animated_sprite.cpp msgid "" @@ -7727,6 +7812,13 @@ msgstr "" "Только один видимый CanvasModulate на Ñцену (или ÑовокупноÑть приведённых " "Ñцен). Будет работать первый Ñозданный, оÑтальные будут проигнорированы." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7818,7 +7910,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7873,23 +7965,27 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin требует дочерний узел ARVRCamera" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "ПоÑтроение Ñетки" +msgstr "ПоÑтроение полиÑетки: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "ПоÑтроение Ñетки" +msgstr "ПоÑтроение Света:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "Завершение поÑтроениÑ" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "ПоÑтроение Ñетки" +msgstr "ОÑвещение полиÑетки: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" #: scene/3d/collision_polygon.cpp msgid "" @@ -7925,7 +8021,7 @@ msgstr "" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" -msgstr "ПоÑтроение Ñетки" +msgstr "ПоÑтроение полиÑетки" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." @@ -7947,8 +8043,8 @@ msgstr "Ðичего не видно, потому что полиÑетки нР#: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RigidBody (в режиме character или rigid) будут " @@ -8009,7 +8105,8 @@ msgid "" "hide upon running." msgstr "" "ПоÑле запуÑка вÑплывающие окна по умолчанию Ñкрыты, Ð´Ð»Ñ Ð¸Ñ… Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ " -"иÑпользуйте функцию popup() или любую из popup_*()." +"иÑпользуйте функцию popup() или любую из popup*(). Делать их видимыми Ð´Ð»Ñ " +"Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - нормально, но они будут Ñкрыты при запуÑке." #: scene/gui/scroll_container.cpp msgid "" @@ -8029,11 +8126,11 @@ msgstr "(Другие)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" -"Среда по умолчанию, как определено в ÐаÑтройках проекта (Rendering -> " -"Viewport -> Default Environment) не может быть загружена." +"Среда по умолчанию, как определено в наÑтройках проекта (Rendering -> " +"Environment -> Default Environment) не может быть загружена." #: scene/main/viewport.cpp msgid "" @@ -8064,6 +8161,39 @@ msgstr "Ошибка загрузки шрифта." msgid "Invalid font size." msgstr "ÐедопуÑтимый размер шрифта." +#~ msgid "Next" +#~ msgstr "Следующий" + +#~ msgid "Not found!" +#~ msgstr "Ðе найдено!" + +#~ msgid "Replace By" +#~ msgstr "Заменить на" + +#~ msgid "Case Sensitive" +#~ msgstr "ЧувÑтвительноÑть региÑтра" + +#~ msgid "Backwards" +#~ msgstr "Ð’ обратном направлении" + +#~ msgid "Prompt On Replace" +#~ msgstr "Подтверждение замены" + +#~ msgid "Skip" +#~ msgstr "ПропуÑтить" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Ваш проект будет Ñоздан не в пуÑтой папке (лучше Ñоздать новую папку)." + +#~ msgid "That's a BINGO!" +#~ msgstr "Бинго!" + +#~ msgid "preview" +#~ msgstr "предпроÑмотр" + #~ msgid "Move Add Key" #~ msgstr "Подвинуть ключ" @@ -8157,9 +8287,6 @@ msgstr "ÐедопуÑтимый размер шрифта." #~ msgid "' parsing of config failed." #~ msgstr "' анализ конфигурации не удалÑÑ." -#~ msgid "Theme" -#~ msgstr "Тема" - #~ msgid "Method List For '%s':" #~ msgstr "СпиÑок методов Ð´Ð»Ñ '%s':" @@ -8429,9 +8556,6 @@ msgstr "ÐедопуÑтимый размер шрифта." #~ msgid "Import Anyway" #~ msgstr "Импортировать в любом Ñлучае" -#~ msgid "Import & Open" -#~ msgstr "Импортировать и Открыть" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ñцена не была Ñохранена, открыть импортированную Ñцену в " @@ -8687,9 +8811,6 @@ msgstr "ÐедопуÑтимый размер шрифта." #~ msgid "Stereo" #~ msgstr "Стерео" -#~ msgid "Mono" -#~ msgstr "Моно" - #~ msgid "Pitch" #~ msgstr "Ð’Ñ‹Ñота" @@ -8859,9 +8980,6 @@ msgstr "ÐедопуÑтимый размер шрифта." #~ msgid "Alerts when an external resource has changed." #~ msgstr "ОповещениÑ, когда внешний реÑÑƒÑ€Ñ Ð±Ñ‹Ð» изменён." -#~ msgid "Tutorials" -#~ msgstr "Уроки" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "Открыть https://godotengine.org Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ уроков." diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 83201baab1..33c848f91b 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -197,8 +197,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -375,14 +374,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -391,47 +382,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -549,6 +508,15 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp #, fuzzy msgid "Create New %s" msgstr "VytvoriÅ¥ adresár" @@ -655,7 +623,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -738,8 +706,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -826,7 +794,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1136,7 +1104,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1354,6 +1322,17 @@ msgid "Description" msgstr "Popis:" #: 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 "Properties" msgstr "" @@ -1386,6 +1365,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1397,6 +1380,11 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Popis:" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1405,8 +1393,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1460,7 +1448,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2017,6 +2006,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2399,7 +2395,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2556,9 +2552,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2566,19 +2560,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +msgid "Error moving:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3221,6 +3215,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3388,6 +3386,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3692,19 +3691,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4081,7 +4083,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4474,14 +4476,16 @@ msgstr "" msgid "Paste" msgstr "VložiÅ¥" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4558,6 +4562,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4989,83 +4997,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5080,6 +5088,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5154,15 +5166,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5441,10 +5449,18 @@ msgstr "VložiÅ¥" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5470,14 +5486,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy msgid "Separation:" msgstr "Popis:" @@ -5618,6 +5637,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5720,6 +5743,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "VytvoriÅ¥ adresár" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5827,9 +5875,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5841,6 +5887,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Couldn't create folder." +msgstr "VytvoriÅ¥ adresár" + +#: 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 "" @@ -5882,14 +5937,27 @@ 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 +#, fuzzy +msgid "Create & Edit" +msgstr "VytvoriÅ¥ adresár" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5907,10 +5975,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5956,6 +6020,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6083,11 +6151,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6469,10 +6532,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6557,7 +6616,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6859,7 +6918,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6868,6 +6927,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7217,10 +7280,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7575,23 +7678,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +msgid "Could not write file:" +msgstr "Popis:" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7606,6 +7714,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7681,7 +7796,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7740,6 +7855,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7785,8 +7907,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7851,8 +7973,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 07b74c1367..9e9db80294 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -5,13 +5,14 @@ # # matevž lapajne <sivar.lapajne@gmail.com>, 2016-2017. # Matjaž Vitas <matjaz.vitas@gmail.com>, 2017. +# Miha Komatar <miha.komatar@gmail.com>, 2018. # Simon Å ander <simon.sand3r@gmail.com>, 2017. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-07 02:49+0000\n" -"Last-Translator: Matjaž Vitas <matjaz.vitas@gmail.com>\n" +"PO-Revision-Date: 2018-01-25 22:27+0000\n" +"Last-Translator: Miha Komatar <miha.komatar@gmail.com>\n" "Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/" "godot/sl/>\n" "Language: sl\n" @@ -19,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -35,7 +36,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "Anim spremeni prehod" #: editor/animation_editor.cpp msgid "Anim Change Transform" @@ -47,7 +48,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "Anim izberi klic" #: editor/animation_editor.cpp msgid "Anim Add Track" @@ -201,8 +202,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Ustvari" @@ -379,14 +379,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "Zamenjaj" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -395,47 +387,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Iskanje" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ni Zadetka!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Zamenjaj Z" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "" +msgid "Replace" +msgstr "Zamenjaj" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -554,6 +514,16 @@ msgstr "" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Osnovni Tip:" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Spremeni" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Ustvari" @@ -659,7 +629,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -742,8 +712,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -828,7 +798,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1139,7 +1109,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1355,6 +1325,17 @@ msgid "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 "Properties" msgstr "" @@ -1386,6 +1367,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1397,6 +1382,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1405,8 +1394,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1460,7 +1449,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2014,6 +2004,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Iskanje" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2393,7 +2390,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2549,9 +2546,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2559,19 +2554,21 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "Napaka naložitve pisave." #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" -msgstr "" +#, fuzzy +msgid "Error duplicating:" +msgstr "Preimenuj Spremenljivko" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3214,6 +3211,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Približaj Animacijo" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3379,6 +3381,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3683,19 +3686,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4069,7 +4075,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4462,14 +4468,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4545,6 +4553,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4979,84 +4991,84 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "Spremeni" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "Spremeni" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5071,6 +5083,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5144,16 +5160,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "Dodaj Setter Lastnost" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5429,10 +5442,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5458,14 +5479,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5605,6 +5629,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5705,6 +5733,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Dodaj Setter Lastnost" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "PrekliÄi" @@ -5812,9 +5865,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5826,6 +5877,14 @@ msgid "Imported Project" 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 "" @@ -5867,14 +5926,27 @@ 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 +#, fuzzy +msgid "Create & Edit" +msgstr "Ustvari" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5891,10 +5963,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5940,6 +6008,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6067,11 +6139,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "Spremeni" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6453,10 +6520,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6541,7 +6604,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6837,7 +6900,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6846,6 +6909,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7195,10 +7262,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7561,24 +7668,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "Neveljaven indeks lastnosti imena." #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +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 "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7597,6 +7708,13 @@ msgstr "" "Le en viden CanvasModulate je dovoljen na sceno (ali niz instanciranih " "scen). Prvi ustvarjen se bo uporabil, medtem ko bodo drugi prezrti." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7673,7 +7791,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7732,6 +7850,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7777,8 +7902,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7847,8 +7972,8 @@ msgstr "(Ostalo)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7869,12 +7994,18 @@ msgstr "Neznani format pisave." #: scene/resources/dynamic_font.cpp msgid "Error loading font." -msgstr "Napaka naložitve pisave." +msgstr "Napaka nalaganja pisave." #: scene/resources/dynamic_font.cpp msgid "Invalid font size." msgstr "Neveljavna velikost pisave." +#~ msgid "Not found!" +#~ msgstr "Ni Zadetka!" + +#~ msgid "Replace By" +#~ msgstr "Zamenjaj Z" + #, fuzzy #~ msgid "Invalid unique name." #~ msgstr "Neveljaven indeks lastnosti imena." diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 06b90e8b70..1c53884f32 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -199,8 +199,7 @@ msgstr "Ðаправите %d нових трака и убаците кључе #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Ðаправи" @@ -377,14 +376,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Замени %d појаве/а." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Замени" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Замени Ñве" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Подударање великих и малих Ñлова" @@ -393,48 +384,16 @@ msgid "Whole Words" msgstr "Целе речи" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Само одабрано" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Тражи" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Ðађи" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Следеће" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ðије пронађено!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Заменити Ñа" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Разликовање великих и малих Ñлова" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Ðатраг" +msgid "Replace" +msgstr "Замени" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Питај за замену" +msgid "Replace All" +msgstr "Замени Ñве" #: editor/code_editor.cpp -msgid "Skip" -msgstr "ПреÑкочи" +msgid "Selection Only" +msgstr "Само одабрано" #: editor/code_editor.cpp msgid "Zoom In" @@ -555,6 +514,16 @@ msgstr "Сигнали" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Измени уобичајен тип" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Ðаправи нов" @@ -666,7 +635,8 @@ msgstr "" "Ипак их обриши? (ÐЕМРОПОЗИВÐЊÐ)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "Ðе може Ñе обриÑати:\n" #: editor/dependency_editor.cpp @@ -749,8 +719,9 @@ msgstr "ОÑнивачи пројекта" msgid "Lead Developer" msgstr "Главни девелопер" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " msgstr "Менаџер пројекта" #: editor/editor_about.cpp @@ -839,7 +810,7 @@ msgid "Success!" msgstr "УÑпех!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "ИнÑталирај" @@ -1148,7 +1119,8 @@ msgid "Packing" msgstr "Паковање" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +#, fuzzy +msgid "Template file not found:" msgstr "ШаблонÑка датотека није пронађена:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1360,6 +1332,21 @@ msgid "Description" msgstr "ОпиÑ" #: editor/editor_help.cpp +#, fuzzy +msgid "Online Tutorials:" +msgstr "Онлајн документација" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Тренутно нема опиÑа ове методе. Молимо помозите нама тако што ћете [color=" +"$color][url=$url]напиÑати једну[/url][/color]!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "ОÑобине" @@ -1395,6 +1382,10 @@ msgstr "" msgid "Search Text" msgstr "Потражи текÑÑ‚" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Ðађи" + #: editor/editor_log.cpp msgid "Output:" msgstr "Излаз:" @@ -1406,6 +1397,11 @@ msgstr "Излаз:" msgid "Clear" msgstr "Обриши" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Излаз" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Грешка при чувању реÑурÑа!" @@ -1414,8 +1410,8 @@ msgstr "Грешка при чувању реÑурÑа!" msgid "Save Resource As.." msgstr "Сачувај реÑÑƒÑ€Ñ ÐºÐ°Ð¾..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Разумем..." @@ -1468,8 +1464,10 @@ msgid "This operation can't be done without a tree root." msgstr "Ова операција Ñе не може обавити без корена дрвета." #: editor/editor_node.cpp +#, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "Ðе могу Ñачувати Ñцену. Вероватно завиÑноÑти ниÑу задовољене." #: editor/editor_node.cpp @@ -2075,6 +2073,13 @@ msgstr "Помоћ" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Тражи" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Онлајн документација" @@ -2460,7 +2465,8 @@ msgid "No version.txt found inside templates." msgstr "„version.txt“ није пронаћен у шаблону." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +#, fuzzy +msgid "Error creating path for templates:" msgstr "Грешка при прављењу пута за шаблоне:\n" #: editor/export_template_manager.cpp @@ -2620,9 +2626,8 @@ msgid "View items as a list" msgstr "Прикажи Ñтвари као лиÑта" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +#, fuzzy +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" "\n" "СтатуÑ: Увоз датотеке неуÑпео. Молим, иÑправите датотеку и поново је увезите " @@ -2633,20 +2638,23 @@ msgid "Cannot move/rename resources root." msgstr "Ðе могу померити/преименовати корен реÑурÑа." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +#, fuzzy +msgid "Cannot move a folder into itself." msgstr "Ðе могу померити директоријум у њену Ñаму.\n" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +#, fuzzy +msgid "Error moving:" msgstr "Грешка при померању:\n" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Грешка при учитавању:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +#, fuzzy +msgid "Unable to update dependencies:" msgstr "Ðије могуће ажурирати завиÑноÑти:\n" #: editor/filesystem_dock.cpp @@ -3295,6 +3303,11 @@ msgstr "Измени филтере чвора" msgid "Filters.." msgstr "Филтери..." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Ðнимација" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Слободно" @@ -3460,6 +3473,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Преглед" @@ -3763,6 +3777,14 @@ msgstr "Додај %s" msgid "Adding %s..." msgstr "Додавање %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3774,11 +3796,6 @@ msgid "Error instancing scene from %s" msgstr "Грешка при прављењу Ñцене од %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Ова операција захтева један изабран чвор." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Измени уобичајен тип" @@ -4152,7 +4169,8 @@ msgid "Bake!" msgstr "ИÑпеци!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +#, fuzzy +msgid "Bake the navigation mesh." msgstr "ИÑпеци навигациону мрежу.\n" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4541,14 +4559,18 @@ msgstr "Учитај реÑурÑ" msgid "Paste" msgstr "Ðалепи" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "РеÑурÑ" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "ОчиÑти недавно отворене датотеке" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +#, fuzzy +msgid "Close and save changes?" msgstr "" "Затвори и Ñачувај измене?\n" "\"" @@ -4627,6 +4649,11 @@ msgid "Copy Script Path" msgstr "Копирај пут" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Покажи у менаџеру датотека" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "ИÑторија претходно" @@ -5063,84 +5090,84 @@ msgid "Rotating %s degrees." msgstr "Ротација за %s Ñтепени." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Поглед одоздо." +msgid "Keying is disabled (no key inserted)." +msgstr "Кључеви Ñу онемогућени (нема убачених кључева)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Доле" +msgid "Animation Key Inserted." +msgstr "Ðнимациони кључ убачен." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Поглед одозго." +msgid "Objects Drawn" +msgstr "Ðацртани објекти" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Бочни поглед." +msgid "Material Changes" +msgstr "Промене материјала" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Бок" +msgid "Shader Changes" +msgstr "Промене шејдера" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Поглед Ñпреда." +msgid "Surface Changes" +msgstr "Промене површи" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "ИÑпред" +msgid "Draw Calls" +msgstr "Позиви цртања" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Леви поглед." +msgid "Vertices" +msgstr "Тачке" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Лево" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "ДеÑни поглед." +msgid "Top View." +msgstr "Поглед одозго." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "деÑно" +msgid "Bottom View." +msgstr "Поглед одоздо." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Кључеви Ñу онемогућени (нема убачених кључева)." +msgid "Bottom" +msgstr "Доле" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Ðнимациони кључ убачен." +msgid "Left View." +msgstr "Леви поглед." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "Ðацртани објекти" +msgid "Left" +msgstr "Лево" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Промене материјала" +msgid "Right View." +msgstr "ДеÑни поглед." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Промене шејдера" +msgid "Right" +msgstr "деÑно" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Промене површи" +msgid "Front View." +msgstr "Поглед Ñпреда." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Позиви цртања" +msgid "Front" +msgstr "ИÑпред" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Тачке" +msgid "Rear View." +msgstr "Бочни поглед." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Бок" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5154,6 +5181,10 @@ msgstr "ОК :(" 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 "Display Normal" msgstr "Прикажи нормалу" @@ -5227,15 +5258,12 @@ msgid "Freelook Speed Modifier" msgstr "Брзина Ñлободног погледа" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "преглед" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XForm дијалог" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +#, fuzzy +msgid "Select Mode (Q)" msgstr "Режим Ñелекције (Q)\n" #: editor/plugins/spatial_editor_plugin.cpp @@ -5516,10 +5544,20 @@ msgstr "Помери (иза)" msgid "Move (After)" msgstr "Помери (иÑпред)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "SpriteFrames" +msgstr "Ðалепи оквир" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox преглед:" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Стил" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "ПоÑтави правоугаони регион" @@ -5545,14 +5583,17 @@ msgid "Auto Slice" msgstr "ÐутоматÑки рез" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "ОфÑет:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Корак:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "ОдвојеноÑÑ‚:" @@ -5694,6 +5735,11 @@ msgstr "Фонт" msgid "Color" msgstr "Боја" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Сачувај тему" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Обриши одабрано" @@ -5798,6 +5844,32 @@ msgstr "Споји од Ñцене" msgid "Error" msgstr "Грешка" +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Сачувај тренутно измењени реÑурÑ." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5912,9 +5984,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5926,6 +5996,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +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 "" @@ -5966,14 +6045,29 @@ msgid "Import Existing Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "Увоз" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "Ðаправи емитер" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "ИнÑталирај" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5990,10 +6084,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6039,6 +6129,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Менаџер пројекта" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6165,11 +6259,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6549,10 +6638,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6637,8 +6722,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "РеÑурÑи" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6928,7 +7014,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6937,6 +7023,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Учитај грешке" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7283,10 +7374,57 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "Прављење контура..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "ÐеуÑпех при прављењу ивица!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Грешка при учитавању реÑурÑа." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "Готово!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Грешка при учитавању реÑурÑа." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Ðаправи ивице" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Пројекат" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7632,23 +7770,33 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "" +#, fuzzy +msgid "Could not write file:" +msgstr "ÐеуÑпех при тражењу плочице:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +#, fuzzy +msgid "Could not open template for export:" +msgstr "ÐеуÑпех при прављењу директоријума." #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +#, fuzzy +msgid "Invalid export template:" msgstr "Ðеважећи извозни шаблон:\n" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "" +#, fuzzy +msgid "Could not read custom HTML shell:" +msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Could not read boot splash image file:" +msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +#, fuzzy +msgid "Using default boot splash image." msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n" #: scene/2d/animated_sprite.cpp @@ -7663,6 +7811,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7731,7 +7886,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7790,6 +7945,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7835,8 +7997,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7901,8 +8063,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7929,6 +8091,30 @@ msgstr "" msgid "Invalid font size." msgstr "Ðеважећа величина фонта." +#~ msgid "Next" +#~ msgstr "Следеће" + +#~ msgid "Not found!" +#~ msgstr "Ðије пронађено!" + +#~ msgid "Replace By" +#~ msgstr "Заменити Ñа" + +#~ msgid "Case Sensitive" +#~ msgstr "Разликовање великих и малих Ñлова" + +#~ msgid "Backwards" +#~ msgstr "Ðатраг" + +#~ msgid "Prompt On Replace" +#~ msgstr "Питај за замену" + +#~ msgid "Skip" +#~ msgstr "ПреÑкочи" + +#~ msgid "preview" +#~ msgstr "преглед" + #~ msgid "Move Add Key" #~ msgstr "Помери кључ" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index 6eb50bacf1..5779cb56b1 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -205,8 +205,7 @@ msgstr "Skapa %d NYA spÃ¥r och infoga nycklar?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Skapa" @@ -398,14 +397,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Ersatte %d förekomst(er)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Ersätt" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Ersätt Alla" - -#: editor/code_editor.cpp #, fuzzy msgid "Match Case" msgstr "Matcha gemener/versaler" @@ -415,52 +406,17 @@ msgid "Whole Words" msgstr "Hela Ord" #: editor/code_editor.cpp -#, fuzzy -msgid "Selection Only" -msgstr "Endast Urval" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Sök" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Hitta" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Nästa" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Hittades inte!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Ersätt Med" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Case Sensitive" -msgstr "Skiftlägeskänsligt" +msgid "Replace" +msgstr "Ersätt" #: editor/code_editor.cpp -#, fuzzy -msgid "Backwards" -msgstr "Baklänges" +msgid "Replace All" +msgstr "Ersätt Alla" #: editor/code_editor.cpp #, fuzzy -msgid "Prompt On Replace" -msgstr "FrÃ¥ga vid Ersättning" - -#: editor/code_editor.cpp -msgid "Skip" -msgstr "Hoppa över" +msgid "Selection Only" +msgstr "Endast Urval" #: editor/code_editor.cpp msgid "Zoom In" @@ -590,6 +546,17 @@ msgstr "Signaler" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "Ändra Typ" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change" +msgstr "Ändra" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "Skapa Ny" @@ -716,7 +683,7 @@ msgstr "" #: editor/dependency_editor.cpp #, fuzzy -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "Kan inte ta bort:\n" #: editor/dependency_editor.cpp @@ -814,9 +781,9 @@ msgstr "Projektgrundare" msgid "Lead Developer" msgstr "Lead Developer" -#: editor/editor_about.cpp editor/project_manager.cpp +#: editor/editor_about.cpp #, fuzzy -msgid "Project Manager" +msgid "Project Manager " msgstr "Projektledare" #: editor/editor_about.cpp @@ -919,7 +886,7 @@ msgid "Success!" msgstr "Klart!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Installera" @@ -1285,7 +1252,7 @@ msgstr "Packar" #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "Mallfil hittades inte:\n" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1523,6 +1490,21 @@ msgstr "Beskrivning" #: editor/editor_help.cpp #, fuzzy +msgid "Online Tutorials:" +msgstr "Dokumentation Online" + +#: editor/editor_help.cpp +#, fuzzy +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 "" +"Det finns för närvarande ingen beskrivning för denna metod. Snälla hjälp oss " +"genom att [color=$color][url=$url]bidra med en[/url][/color]!" + +#: editor/editor_help.cpp +#, fuzzy msgid "Properties" msgstr "Egenskaper" @@ -1564,6 +1546,10 @@ msgstr "" msgid "Search Text" msgstr "Söktext" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Hitta" + #: editor/editor_log.cpp #, fuzzy msgid "Output:" @@ -1577,6 +1563,11 @@ msgstr "Output:" msgid "Clear" msgstr "Rensa" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "Output:" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Error saving resource!" @@ -1586,8 +1577,8 @@ msgstr "Fel vid sparande av resurs!" msgid "Save Resource As.." msgstr "Spara Resurs Som.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Jag förstÃ¥r.." @@ -1651,7 +1642,8 @@ msgstr "Ã…tgärden kan inte göras utan en trädrot." #: editor/editor_node.cpp #, fuzzy msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" "Kunde inte spara scenen. Förmodligen kunde inte beroenden (instanser) " "uppfyllas." @@ -2308,6 +2300,13 @@ msgstr "Hjälp" msgid "Classes" msgstr "Klasser" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Sök" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Online Docs" @@ -2710,8 +2709,9 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "" +#, fuzzy +msgid "Error creating path for templates:" +msgstr "Fel vid laddning av mall '%s'" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2879,9 +2879,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2889,21 +2887,23 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +#, fuzzy +msgid "Error moving:" +msgstr "Fel vid laddning:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "Fel vid laddning:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "" +#, fuzzy +msgid "Unable to update dependencies:" +msgstr "Scen '%s' har trasiga beroenden:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -3577,6 +3577,11 @@ msgstr "Redigera Node-Filter" msgid "Filters.." msgstr "Filter.." +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "Animation" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3745,6 +3750,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp #, fuzzy msgid "Preview" msgstr "Förhandsgranska" @@ -4048,6 +4054,14 @@ msgstr "Lägg till %s" msgid "Adding %s..." msgstr "Lägger till %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: 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 #, fuzzy @@ -4060,12 +4074,6 @@ msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -#, fuzzy -msgid "This operation requires a single selected node." -msgstr "Ã…tgärden kräver en enstaka vald Node." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "" @@ -4449,7 +4457,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4842,15 +4850,18 @@ msgstr "Ladda Resurs" msgid "Paste" msgstr "Klistra in" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "Resurs" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp #, fuzzy -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" "Stäng och spara ändringar?\n" "\"" @@ -4937,6 +4948,11 @@ msgid "Copy Script Path" msgstr "Kopiera Sökvägen" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "Visa i Filsystemet" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5395,39 +5411,55 @@ msgid "Rotating %s degrees." msgstr "Roterar %s grader." #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Bottom View." -msgstr "Vy UnderifrÃ¥n" +msgid "Keying is disabled (no key inserted)." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Bottom" -msgstr "Botten" +msgid "Animation Key Inserted." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Top View." -msgstr "Vy OvanifrÃ¥n." +msgid "Objects Drawn" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Rear View." -msgstr "Vy BakifrÃ¥n." +msgid "Material Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Shader Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Surface Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Draw Calls" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Vertices" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Rear" -msgstr "Baksida" +msgid "Top View." +msgstr "Vy OvanifrÃ¥n." #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Front View." -msgstr "Vy FramifrÃ¥n." +msgid "Bottom View." +msgstr "Vy UnderifrÃ¥n" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Front" -msgstr "Framsida" +msgid "Bottom" +msgstr "Botten" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy @@ -5450,40 +5482,24 @@ msgid "Right" msgstr "Höger" #: 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 "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 "" +#, fuzzy +msgid "Front View." +msgstr "Vy FramifrÃ¥n." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "" +#, fuzzy +msgid "Front" +msgstr "Framsida" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "" +#, fuzzy +msgid "Rear View." +msgstr "Vy BakifrÃ¥n." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +#, fuzzy +msgid "Rear" +msgstr "Baksida" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5498,6 +5514,11 @@ msgstr "OK :(" msgid "No parent to instance a child at." msgstr "Ingen förälder att instansiera ett barn till." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#, fuzzy +msgid "This operation requires a single selected node." +msgstr "Ã…tgärden kräver en enstaka vald Node." + #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "" @@ -5573,17 +5594,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "förhandsgranska" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "Välj Node" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5868,10 +5885,19 @@ msgstr "Flytta (före)" msgid "Move (After)" msgstr "Flytta (efter)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +#, fuzzy +msgid "StyleBox" +msgstr "Stil" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5897,14 +5923,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -6052,6 +6081,11 @@ msgstr "Font" msgid "Color" msgstr "Färg" +#: editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Theme" +msgstr "Spara Tema" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -6156,6 +6190,31 @@ msgstr "" msgid "Error" msgstr "Fel" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "Skapa Mapp" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp #, fuzzy msgid "Cancel" @@ -6268,13 +6327,8 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -#, fuzzy -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" -"Ditt projekt kommer att skapas i en icke-tom mapp (du kanske vill skapa en " -"ny mapp)." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -6286,6 +6340,15 @@ msgstr "" #: editor/project_manager.cpp #, fuzzy +msgid "Couldn't create folder." +msgstr "Kunde inte skapa mapp." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "" + +#: editor/project_manager.cpp +#, fuzzy msgid "It would be a good idea to name your project." msgstr "Det vore en bra idé att namnge ditt projekt." @@ -6330,16 +6393,31 @@ msgstr "Importera Befintligt Projekt" #: editor/project_manager.cpp #, fuzzy +msgid "Import & Edit" +msgstr "Importera" + +#: editor/project_manager.cpp +#, fuzzy msgid "Create New Project" msgstr "Skapa Nytt Projekt" #: editor/project_manager.cpp #, fuzzy +msgid "Create & Edit" +msgstr "Skapa Skript" + +#: editor/project_manager.cpp +#, fuzzy msgid "Install Project:" msgstr "Installera Projekt:" #: editor/project_manager.cpp #, fuzzy +msgid "Install & Edit" +msgstr "Installera" + +#: editor/project_manager.cpp +#, fuzzy msgid "Project Name:" msgstr "Projektnamn:" @@ -6357,10 +6435,6 @@ msgid "Browse" msgstr "Bläddra" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "Det är en BINGO!" - -#: editor/project_manager.cpp #, fuzzy msgid "Unnamed Project" msgstr "Namnlöst Projekt" @@ -6409,6 +6483,11 @@ msgstr "" #: editor/project_manager.cpp #, fuzzy +msgid "Project Manager" +msgstr "Projektledare" + +#: editor/project_manager.cpp +#, fuzzy msgid "Project List" msgstr "Projektlista" @@ -6545,12 +6624,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Change" -msgstr "Ändra" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6947,10 +7020,6 @@ msgid "Error loading scene from %s" msgstr "Fel vid laddning av scen frÃ¥n %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -7045,8 +7114,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "Resurser" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -7365,7 +7435,7 @@ msgstr "Funktion:" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "Errors" msgstr "Fel" @@ -7376,6 +7446,11 @@ msgid "Child Process Connected" msgstr "Barnprocess Ansluten" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "Fel" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7740,10 +7815,58 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Generating solution..." +msgstr "Skapar konturer..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "Misslyckades att ladda resurs." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "Misslyckades att ladda resurs." + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Done" +msgstr "Klar!" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "Misslyckades att ladda resurs." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "Skapa Prenumeration" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "Projekt" + +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Warnings" +msgstr "Varning" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -8115,23 +8238,29 @@ msgstr "Kör exporterad HTML i systemets standardwebbläsare." #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "Kunde inte skriva till filen:\n" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +#, fuzzy +msgid "Could not open template for export:" +msgstr "Kunde inte skapa mapp." #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +#, fuzzy +msgid "Could not read boot splash image file:" +msgstr "Kunde inte skriva till filen:\n" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -8146,6 +8275,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp #, fuzzy msgid "" @@ -8231,7 +8367,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -8293,6 +8429,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp #, fuzzy msgid "" @@ -8347,8 +8490,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8418,8 +8561,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -8450,12 +8593,47 @@ msgstr "Fel vid laddning av font." msgid "Invalid font size." msgstr "Ogiltig teckenstorlek." -#~ msgid "Move Add Key" -#~ msgstr "Flytta Lägg Till Nyckel" +#~ msgid "Next" +#~ msgstr "Nästa" + +#~ msgid "Not found!" +#~ msgstr "Hittades inte!" + +#~ msgid "Replace By" +#~ msgstr "Ersätt Med" + +#, fuzzy +#~ msgid "Case Sensitive" +#~ msgstr "Skiftlägeskänsligt" #, fuzzy -#~ msgid "Create Subscription" -#~ msgstr "Skapa Prenumeration" +#~ msgid "Backwards" +#~ msgstr "Baklänges" + +#, fuzzy +#~ msgid "Prompt On Replace" +#~ msgstr "FrÃ¥ga vid Ersättning" + +#~ msgid "Skip" +#~ msgstr "Hoppa över" + +#, fuzzy +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Ditt projekt kommer att skapas i en icke-tom mapp (du kanske vill skapa " +#~ "en ny mapp)." + +#~ msgid "That's a BINGO!" +#~ msgstr "Det är en BINGO!" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "förhandsgranska" + +#~ msgid "Move Add Key" +#~ msgstr "Flytta Lägg Till Nyckel" #~ msgid "List:" #~ msgstr "Lista:" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 30b6f45c0b..16e646b2a0 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -198,8 +198,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -376,14 +375,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -392,47 +383,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -550,6 +509,15 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp msgid "Create New %s" msgstr "" @@ -655,7 +623,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -738,8 +706,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -824,7 +792,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1131,7 +1099,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1343,6 +1311,17 @@ msgid "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 "Properties" msgstr "" @@ -1374,6 +1353,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1385,6 +1368,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1393,8 +1380,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1448,7 +1435,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2001,6 +1989,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2380,7 +2375,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2534,9 +2529,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2544,19 +2537,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +msgid "Error moving:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3194,6 +3187,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3359,6 +3356,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3659,19 +3657,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4042,7 +4043,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4431,14 +4432,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4514,6 +4517,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4945,83 +4952,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5036,6 +5043,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5109,15 +5120,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5392,10 +5399,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5421,14 +5436,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5566,6 +5584,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5666,6 +5688,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5773,9 +5819,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5787,6 +5831,14 @@ msgid "Imported Project" 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 "" @@ -5827,14 +5879,26 @@ 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 "" @@ -5851,10 +5915,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5900,6 +5960,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6026,11 +6090,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6408,10 +6467,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6496,7 +6551,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6787,7 +6842,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6796,6 +6851,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7141,10 +7200,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7490,23 +7589,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +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 "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7521,6 +7624,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7589,7 +7699,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7648,6 +7758,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7693,8 +7810,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7759,8 +7876,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/th.po b/editor/translations/th.po index 69ba3b2279..4f8b834985 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -4,20 +4,20 @@ # This file is distributed under the same license as the Godot source code. # # Kaveeta Vivatchai <goodytong@gmail.com>, 2017. -# Poommetee Ketson (Noshyaar) <poommetee@protonmail.com>, 2017. +# Poommetee Ketson (Noshyaar) <poommetee@protonmail.com>, 2017-2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-03 07:50+0000\n" -"Last-Translator: Kaveeta Vivatchai <katviv@protonmail.com>\n" +"PO-Revision-Date: 2018-01-20 09:49+0000\n" +"Last-Translator: Poommetee Ketson <poommetee@protonmail.com>\n" "Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/" "th/>\n" "Language: th\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -28,9 +28,8 @@ msgid "All Selection" msgstr "เลืà¸à¸à¸—ั้งหมด" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "à¹à¸à¹‰à¹„ขค่าà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" +msgstr "à¹à¸à¹‰à¹„ขเวลาคีย์เฟรมà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -41,9 +40,8 @@ msgid "Anim Change Transform" msgstr "เคลื่à¸à¸™à¸¢à¹‰à¸²à¸¢à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "à¹à¸à¹‰à¹„ขค่าà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" +msgstr "à¹à¸à¹‰à¹„ขค่าคีย์เฟรมà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -199,8 +197,7 @@ msgstr "เพิ่ม %d à¹à¸—ร็à¸à¹ƒà¸«à¸¡à¹ˆà¹à¸¥à¸°à¹€à¸žà¸´à¹ˆà¸¡à¸ #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "สร้าง" @@ -377,14 +374,6 @@ msgid "Replaced %d occurrence(s)." msgstr "à¹à¸—นที่à¹à¸¥à¹‰à¸§ %d ครั้ง" #: editor/code_editor.cpp -msgid "Replace" -msgstr "à¹à¸—นที่" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "à¹à¸—นที่ทั้งหมด" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "ตรงตามà¸à¸±à¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ" @@ -393,48 +382,16 @@ msgid "Whole Words" msgstr "ทั้งคำ" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸à¸" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "ค้นหา" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "ค้นหา" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "ต่à¸à¹„ป" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "ไม่พบ!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "à¹à¸—นที่ด้วย" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ตรงตามà¸à¸±à¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "ย้à¸à¸™à¸à¸¥à¸±à¸š" +msgid "Replace" +msgstr "à¹à¸—นที่" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "เตืà¸à¸™à¸à¹ˆà¸à¸™à¹à¸—นที่" +msgid "Replace All" +msgstr "à¹à¸—นที่ทั้งหมด" #: editor/code_editor.cpp -msgid "Skip" -msgstr "ข้าม" +msgid "Selection Only" +msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸à¸" #: editor/code_editor.cpp msgid "Zoom In" @@ -534,9 +491,8 @@ msgid "Connecting Signal:" msgstr "เชื่à¸à¸¡à¹‚ยงสัà¸à¸à¸²à¸“:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "เชื่à¸à¸¡ '%s' à¸à¸±à¸š '%s'" +msgstr "ลบà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸à¸¡à¹‚ยง '%s' à¸à¸±à¸š '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -552,9 +508,17 @@ msgid "Signals" msgstr "สัà¸à¸à¸²à¸“" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "เปลี่ยนประเภท %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "เปลี่ยน" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "สร้างใหม่" +msgstr "สร้าง %s ใหม่" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -664,8 +628,8 @@ msgstr "" "ยืนยันจะลบหรืà¸à¹„ม่? (ย้à¸à¸™à¸à¸¥à¸±à¸šà¹„ม่ได้)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "ไม่สามารถลบ:\n" +msgid "Cannot remove:" +msgstr "ไม่สามารถลบ:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -741,15 +705,15 @@ msgstr "ผู้ช่วยพัฒนา Godot Engine" #: editor/editor_about.cpp msgid "Project Founders" -msgstr "ผู้บุà¸à¹€à¸šà¸´à¸à¹‚ครงà¸à¸²à¸£" +msgstr "ผู้ริเริ่มโครงà¸à¸²à¸£" #: editor/editor_about.cpp msgid "Lead Developer" msgstr "ผู้พัฒนาหลัà¸" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "ผู้จัดà¸à¸²à¸£à¹‚ครงà¸à¸²à¸£ " #: editor/editor_about.cpp msgid "Developers" @@ -836,7 +800,7 @@ msgid "Success!" msgstr "สำเร็จ!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "ติดตั้ง" @@ -857,9 +821,8 @@ msgid "Rename Audio Bus" msgstr "เปลี่ยนชื่ภAudio Bus" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "สลับ Solo ขà¸à¸‡ Audio Bus" +msgstr "ปรับระดับเสียง Audio Bus" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -924,7 +887,7 @@ msgstr "ลบเà¸à¸Ÿà¹€à¸Ÿà¸à¸•์" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "เสียง" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1099,13 +1062,12 @@ msgid "Updating scene.." msgstr "à¸à¸±à¸žà¹€à¸”ทฉาà¸.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(ว่างเปล่า)" +msgstr "[ว่างเปล่า]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ไฟล์ใหม่]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1145,8 +1107,8 @@ msgid "Packing" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸š:\n" +msgid "Template file not found:" +msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸š:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1357,6 +1319,19 @@ msgid "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 "" +"คลาสนี้ยังไม่มีà¸à¸²à¸£à¸ªà¸à¸™à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ ท่านสามารถ[color=$color][url=$url]ช่วยเขียน[/url][/" +"color] หรืภ[color=$color][url=$url2]ขà¸à¹ƒà¸«à¹‰à¸ˆà¸±à¸”ทำ[/url][/color]" + +#: editor/editor_help.cpp msgid "Properties" msgstr "คุณสมบัติ" @@ -1388,6 +1363,10 @@ msgstr "เมท็à¸à¸”นี้ยังไม่มีคำà¸à¸˜à¸´à¸šà¸² msgid "Search Text" msgstr "ค้นหาคำ" +#: editor/editor_help.cpp +msgid "Find" +msgstr "ค้นหา" + #: editor/editor_log.cpp msgid "Output:" msgstr "ข้à¸à¸„วาม:" @@ -1399,6 +1378,10 @@ msgstr "ข้à¸à¸„วาม:" msgid "Clear" msgstr "ลบ" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "ลบข้à¸à¸„วาม" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "บันทึà¸à¸£à¸µà¸‹à¸à¸£à¹Œà¸ªà¸œà¸´à¸”พลาด!" @@ -1407,8 +1390,8 @@ msgstr "บันทึà¸à¸£à¸µà¸‹à¸à¸£à¹Œà¸ªà¸œà¸´à¸”พลาด!" msgid "Save Resource As.." msgstr "บันทึà¸à¸£à¸µà¸‹à¸à¸£à¹Œà¸ªà¹€à¸›à¹‡à¸™.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "ตà¸à¸¥à¸‡.." @@ -1462,8 +1445,9 @@ msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." -msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ à¸à¸²à¸ˆà¸ˆà¸°à¸¡à¸µà¸à¸²à¸£à¸à¹‰à¸²à¸‡à¸à¸´à¸‡à¹„ม่สมบูรณ์" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ à¸à¸²à¸ˆà¸ˆà¸°à¸¡à¸µà¸à¸²à¸£à¸à¹‰à¸²à¸‡à¸à¸´à¸‡à¹„ม่สมบูรณ์ (à¸à¸´à¸™à¸ªà¹à¸•นซ์หรืà¸à¸à¸²à¸£à¸ªà¸·à¸šà¸—à¸à¸”)" #: editor/editor_node.cpp msgid "Failed to load resource." @@ -2042,6 +2026,13 @@ msgstr "ช่วยเหลืà¸" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "ค้นหา" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "คู่มืà¸" @@ -2313,14 +2304,12 @@ msgid "Frame #:" msgstr "เฟรมที่:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "เวลา:" +msgstr "เวลา" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "เรียà¸" +msgstr "จำนวนครั้ง" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2425,8 +2414,8 @@ msgid "No version.txt found inside templates." msgstr "ไม่พบ version.txt ในà¹à¸¡à¹ˆà¹à¸šà¸š" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸¡à¹ˆà¹à¸šà¸š:\n" +msgid "Error creating path for templates:" +msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸¡à¹ˆà¹à¸šà¸š:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2459,7 +2448,6 @@ msgstr "ไม่มีà¸à¸²à¸£à¸•à¸à¸šà¸à¸¥à¸±à¸š" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "ร้à¸à¸‡à¸‚à¸à¸œà¸´à¸”พลาด" @@ -2507,7 +2495,6 @@ msgid "Connecting.." msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸à¸¡à¸•่à¸.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "เชื่à¸à¸¡à¸•่à¸à¹„ม่ได้" @@ -2581,33 +2568,28 @@ msgid "View items as a list" msgstr "à¹à¸ªà¸”งเป็นรายชื่à¸à¹„ฟล์" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." -msgstr "" -"\n" -"สถานะ: นำเข้าไฟล์ล้มเหลว à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹„ขไฟล์à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าใหม่" +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.\n" -msgstr "ย้ายโฟลเดà¸à¸£à¹Œà¸¡à¸²à¸‚้างในตัวมันเà¸à¸‡à¹„ม่ได้\n" +msgid "Cannot move a folder into itself." +msgstr "ย้ายโฟลเดà¸à¸£à¹Œà¸¡à¸²à¸‚้างในตัวมันเà¸à¸‡à¹„ม่ได้" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "ผิดพลาดขณะย้าย:\n" +msgid "Error moving:" +msgstr "ผิดพลาดขณะย้าย:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "ผิดพลาดขณะโหลด:" +msgid "Error duplicating:" +msgstr "ผิดพลาดขณะทำซ้ำ:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "ไม่สามารถà¸à¸±à¸žà¹€à¸”ทà¸à¸²à¸£à¸à¹‰à¸²à¸‡à¸à¸´à¸‡:\n" +msgid "Unable to update dependencies:" +msgstr "ไม่สามารถà¸à¸±à¸žà¹€à¸”ทà¸à¸²à¸£à¸à¹‰à¸²à¸‡à¸à¸´à¸‡:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2638,14 +2620,12 @@ msgid "Renaming folder:" msgstr "เปลี่ยนชื่à¸à¹‚ฟลเดà¸à¸£à¹Œ:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "ทำซ้ำ" +msgstr "ทำซ้ำไฟล์:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "เปลี่ยนชื่à¸à¹‚ฟลเดà¸à¸£à¹Œ:" +msgstr "ทำซ้ำโฟลเดà¸à¸£à¹Œ:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2664,7 +2644,6 @@ msgid "Move To.." msgstr "ย้ายไป.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" msgstr "เปิดไฟล์ฉาà¸" @@ -2681,9 +2660,8 @@ msgid "View Owners.." msgstr "ดูเจ้าขà¸à¸‡.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "ทำซ้ำ" +msgstr "ทำซ้ำ.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2780,14 +2758,12 @@ msgid "Importing Scene.." msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าฉาà¸.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "ส่งผ่านไปยัง Lightmaps:" +msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ Lightmaps" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "สร้างเส้นà¸à¸£à¸à¸š" +msgstr "สร้างสำหรับพื้นผิว: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3255,6 +3231,10 @@ msgstr "à¹à¸à¹‰à¹„ขตัวà¸à¸£à¸à¸‡à¹‚หนด" msgid "Filters.." msgstr "ตัวà¸à¸£à¸à¸‡.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "ผังà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "ฟรี" @@ -3404,23 +3384,26 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"ไม่สามารถเลืà¸à¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่จะบันทึà¸à¸ าพ 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 "" +"ไม่มีพื้นผิวให้สร้าง lightmap à¸à¸£à¸¸à¸“าตรวจสà¸à¸šà¸§à¹ˆà¸²à¸žà¸·à¹‰à¸™à¸œà¸´à¸§à¸¡à¸µ UV2 à¹à¸¥à¸°à¹„ด้เปิดใช้งาน 'Bake Light'" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." -msgstr "" +msgstr "ผิดพลาดขณะสร้างภาพ lightmap à¸à¸£à¸¸à¸“าตรวจสà¸à¸šà¸§à¹ˆà¸²à¸ªà¸²à¸¡à¸²à¸£à¸–เขียนไฟล์ในตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่บันทึà¸à¹„ด้" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "ส่งผ่านไปยัง Lightmaps:" +msgstr "สร้าง Lightmaps" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "ตัวà¸à¸¢à¹ˆà¸²à¸‡" @@ -3723,6 +3706,14 @@ msgstr "เพิ่ม %s" msgid "Adding %s..." msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡ %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3734,11 +3725,6 @@ msgid "Error instancing scene from %s" msgstr "ผิดพลาดขณะà¸à¸´à¸™à¸ªà¹à¸•นซ์ฉาà¸à¸ˆà¸²à¸ %s" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "ต้à¸à¸‡à¹€à¸¥à¸·à¸à¸à¹€à¸žà¸µà¸¢à¸‡à¹‚หนดเดียว" - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "เปลี่ยนประเภท" @@ -3931,19 +3917,19 @@ msgstr "สร้าง Mesh นำทาง" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Mesh ไม่ได้เป็นประเภท ArrayMesh" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "ผิดพลาดขณะสร้างà¹à¸œà¹ˆà¸™à¸„ลี่ UV พื้นผิวนี้ไม่สามารถคลี่ได้?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "ไม่มีพื้นผิวให้à¹à¸à¹‰à¹„ขจุดบà¸à¸žà¸£à¹ˆà¸à¸‡" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "โมเดลไม่มี UV ในชั้นนี้" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -3986,18 +3972,16 @@ msgid "Create Outline Mesh.." msgstr "สร้างเส้นขà¸à¸š Mesh.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "มุมมà¸à¸‡" +msgstr "à¹à¸ªà¸”ง UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "มุมมà¸à¸‡" +msgstr "à¹à¸ªà¸”ง UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "สร้างà¹à¸œà¹ˆà¸™à¸„ลี่ UV2 สำหรับ Lightmap/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4112,8 +4096,8 @@ msgid "Bake!" msgstr "สร้าง!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "สร้าง Mesh นำทาง\n" +msgid "Bake the navigation mesh." +msgstr "สร้าง Mesh นำทาง" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4501,17 +4485,17 @@ msgstr "โหลดรีซà¸à¸£à¹Œà¸ª" msgid "Paste" msgstr "วาง" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "ตัวโหลดรีซà¸à¸£à¹Œà¸ªà¸¥à¹ˆà¸§à¸‡à¸«à¸™à¹‰à¸²" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "ล้างรายà¸à¸²à¸£à¹„ฟล์ล่าสุด" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"ปิดà¹à¸¥à¸°à¸šà¸±à¸™à¸—ึà¸?\n" -"\"" +msgid "Close and save changes?" +msgstr "ปิดà¹à¸¥à¸°à¸šà¸±à¸™à¸—ึà¸?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4582,9 +4566,12 @@ msgid "Soft Reload Script" msgstr "โหลดสคริปต์ใหม่" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "คัดลà¸à¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡" +msgstr "คัดลà¸à¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸ªà¸„ริปต์" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "เปิดในตัวจัดà¸à¸²à¸£à¹„ฟล์" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4775,9 +4762,8 @@ msgid "Clone Down" msgstr "คัดลà¸à¸à¸šà¸£à¸£à¸—ัดลงมา" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "à¹à¸ªà¸”ง" +msgstr "ซ่à¸à¸™/à¹à¸ªà¸”งบรรทัด" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5021,84 +5007,84 @@ msgid "Rotating %s degrees." msgstr "หมุน %s à¸à¸‡à¸¨à¸²" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "มุมล่าง" +msgid "Keying is disabled (no key inserted)." +msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸„ีย์ (ไม่ได้à¹à¸—รà¸à¸„ีย์)" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "ล่าง" +msgid "Animation Key Inserted." +msgstr "à¹à¸—รà¸à¸„ีย์à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "มุมบน" +msgid "Objects Drawn" +msgstr "จำนวนวัตถุที่วาด" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "มุมหลัง" +msgid "Material Changes" +msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "หลัง" +msgid "Shader Changes" +msgstr "จำนวนครั้งที่เปลี่ยน Shader" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "มุมหน้า" +msgid "Surface Changes" +msgstr "จำนวนครั้งที่เปลี่ยนพื้นผิว" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "หน้า" +msgid "Draw Calls" +msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "มุมซ้าย" +msgid "Vertices" +msgstr "มุมรูปทรง" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "ซ้าย" +msgid "FPS" +msgstr "เฟรมต่à¸à¸§à¸´à¸™à¸²à¸—ี" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "มุมขวา" +msgid "Top View." +msgstr "มุมบน" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "ขวา" +msgid "Bottom View." +msgstr "มุมล่าง" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸„ีย์ (ไม่ได้à¹à¸—รà¸à¸„ีย์)" +msgid "Bottom" +msgstr "ล่าง" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "à¹à¸—รà¸à¸„ีย์à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" +msgid "Left View." +msgstr "มุมซ้าย" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "จำนวนวัตถุที่วาด" +msgid "Left" +msgstr "ซ้าย" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ" +msgid "Right View." +msgstr "มุมขวา" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "จำนวนครั้งที่เปลี่ยน Shader" +msgid "Right" +msgstr "ขวา" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "จำนวนครั้งที่เปลี่ยนพื้นผิว" +msgid "Front View." +msgstr "มุมหน้า" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”" +msgid "Front" +msgstr "หน้า" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "มุมรูปทรง" +msgid "Rear View." +msgstr "มุมหลัง" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "เฟรมต่à¸à¸§à¸´à¸™à¸²à¸—ี" +msgid "Rear" +msgstr "หลัง" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5112,6 +5098,10 @@ msgstr "ตà¸à¸¥à¸‡ :(" 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 "Display Normal" msgstr "à¹à¸ªà¸”งปà¸à¸•ิ" @@ -5185,16 +5175,12 @@ msgid "Freelook Speed Modifier" msgstr "ปรับความเร็วมุมมà¸à¸‡à¸à¸´à¸ªà¸£à¸°" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "ตัวà¸à¸¢à¹ˆà¸²à¸‡" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "เครื่à¸à¸‡à¸¡à¸·à¸à¹€à¸„ลื่à¸à¸™à¸¢à¹‰à¸²à¸¢" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "โหมดเลืà¸à¸ (Q)\n" +msgid "Select Mode (Q)" +msgstr "โหมดเลืà¸à¸ (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5223,14 +5209,12 @@ msgid "Local Coords" msgstr "พิà¸à¸±à¸”ภายใน" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "โหมดปรับขนาด (R)" +msgstr "โหมดพิà¸à¸±à¸”ภายใน (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”:" +msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸” (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5347,7 +5331,7 @@ msgstr "ตัวเลืà¸à¸" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "à¹à¸ªà¸”งโครงà¸à¸£à¸°à¸”ูà¸" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5473,10 +5457,18 @@ msgstr "ย้าย (à¸à¹ˆà¸à¸™)" msgid "Move (After)" msgstr "ย้าย (หลัง)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "SpriteFrames" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "ตัวà¸à¸¢à¹ˆà¸²à¸‡ StyleBox:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StyleBox" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "à¸à¸³à¸«à¸™à¸”ขà¸à¸šà¹€à¸‚ต Texture" @@ -5502,14 +5494,17 @@ msgid "Auto Slice" msgstr "à¹à¸šà¹ˆà¸‡à¸à¸±à¸•โนมัติ" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "เลื่à¸à¸™:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "ขนาด:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "เว้น:" @@ -5647,6 +5642,10 @@ msgstr "ฟà¸à¸™à¸•์" msgid "Color" msgstr "สี" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "ธีม" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "ลบที่เลืà¸à¸" @@ -5732,9 +5731,8 @@ msgid "Merge from scene?" msgstr "รวมจาà¸à¸‰à¸²à¸?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet.." +msgstr "Tile Set" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5748,6 +5746,32 @@ msgstr "รวมจาà¸à¸‰à¸²à¸" msgid "Error" msgstr "ผิดพลาด" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "Autotiles" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "เลืà¸à¸à¸£à¸¹à¸›à¸ าพย่à¸à¸¢à¹€à¸žà¸·à¹ˆà¸à¸—ำเป็นไà¸à¸„à¸à¸™ ภาพนี้จะใช้à¹à¸ªà¸”งเมื่à¸à¸à¸²à¸£" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"คลิà¸à¸‹à¹‰à¸²à¸¢: à¸à¸³à¸«à¸™à¸”ค่าบิต เปิด\n" +"คลิà¸à¸‚วา: à¸à¸³à¸«à¸™à¸”ค่าบิต ปิด" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "เลืà¸à¸à¹„ทล์ย่à¸à¸¢à¸—ี่à¸à¸³à¸¥à¸±à¸‡à¸›à¸£à¸±à¸šà¹à¸•่ง" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "เลืà¸à¸à¹„ทล์ย่à¸à¸¢à¹€à¸žà¸·à¹ˆà¸à¸ˆà¸±à¸”ลำดับความสำคัà¸" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "ยà¸à¹€à¸¥à¸´à¸" @@ -5855,10 +5879,8 @@ msgid "Please choose a 'project.godot' file." msgstr "à¸à¸£à¸¸à¸“าเลืà¸à¸à¹„ฟล์ 'project.godot'" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "จะสร้างโปรเจà¸à¸•์ในโฟลเดà¸à¸£à¹Œà¸—ี่มีไฟล์à¸à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§ (ท่านà¸à¸²à¸ˆà¸•้à¸à¸‡à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ฟลเดà¸à¸£à¹Œà¹ƒà¸«à¸¡à¹ˆ)" +msgid "Please choose an empty folder." +msgstr "à¸à¸£à¸¸à¸“าเลืà¸à¸à¹‚ฟลเดà¸à¸£à¹Œà¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5869,6 +5891,14 @@ msgid "Imported Project" 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 "ควรตั้งชื่à¸à¹‚ปรเจà¸à¸•์" @@ -5909,14 +5939,26 @@ 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 "ชื่à¸à¹‚ปรเจà¸à¸•์:" @@ -5933,10 +5975,6 @@ msgid "Browse" msgstr "เลืà¸à¸" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "บิงโà¸!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "โปรเจà¸à¸•์ไม่มีชื่à¸" @@ -5988,6 +6026,10 @@ msgid "" msgstr "จะทำà¸à¸²à¸£à¸ªà¹à¸à¸™à¸«à¸²à¹‚ปรเจà¸à¸•์ใน %s โฟลเดà¸à¸£à¹Œ ยืนยัน?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์" + +#: editor/project_manager.cpp msgid "Project List" msgstr "รายชื่à¸à¹‚ปรเจà¸à¸•์" @@ -6024,7 +6066,7 @@ msgid "" "You don't currently have any projects.\n" "Would you like to explore the official example projects in the Asset Library?" msgstr "" -"คุณยังไม่มีโปรเจà¸à¸•์ใดๆ\n" +"คุณยังไม่มีโปรเจà¸à¸•์ใด ๆ\n" "ต้à¸à¸‡à¸à¸²à¸£à¸ªà¸³à¸£à¸§à¸ˆà¹‚ปรเจà¸à¸•์ตัวà¸à¸¢à¹ˆà¸²à¸‡à¹ƒà¸™à¹à¸«à¸¥à¹ˆà¸‡à¸£à¸§à¸¡à¸—รัพยาà¸à¸£à¸«à¸£à¸·à¸à¹„ม่?" #: editor/project_settings_editor.cpp @@ -6057,7 +6099,7 @@ msgstr "เปลี่ยนชื่à¸à¸à¸²à¸£à¸à¸£à¸°à¸—ำ" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" -msgstr "เพิ่มà¸à¸²à¸£à¸à¸£à¸°à¸—ำ" +msgstr "เพิ่มปุ่มà¸à¸”ขà¸à¸‡à¸à¸²à¸£à¸à¸£à¸°à¸—ำ" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Shift+" @@ -6116,11 +6158,6 @@ msgid "Button 9" msgstr "ปุ่ม 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "เปลี่ยน" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "คันบังคับจà¸à¸¢:" @@ -6133,13 +6170,12 @@ msgid "Joypad Button Index:" msgstr "ปุ่มจà¸à¸¢:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" -msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ" +msgstr "ลบปุ่มà¸à¸”ขà¸à¸‡à¸à¸²à¸£à¸à¸£à¸°à¸—ำ" #: editor/project_settings_editor.cpp msgid "Add Event" @@ -6383,7 +6419,7 @@ msgstr "สคริปต์ใหม่" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "%s ใหม่" #: editor/property_editor.cpp msgid "Make Unique" @@ -6418,9 +6454,8 @@ msgid "On" msgstr "เปิด" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "เพิ่มà¹à¸šà¸šà¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²" +msgstr "[ว่างเปล่า]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6500,10 +6535,6 @@ msgid "Error loading scene from %s" msgstr "ผิดพลาดขณะโหลดฉาà¸à¸ˆà¸²à¸ %s" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "ตà¸à¸¥à¸‡" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6588,8 +6619,8 @@ msgid "Error duplicating scene to save it." msgstr "ผิดพลาดขณะทำซ้ำฉาà¸à¹€à¸žà¸·à¹ˆà¸à¸šà¸±à¸™à¸—ึà¸" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "รีซà¸à¸£à¹Œà¸ªà¸¢à¹ˆà¸à¸¢:" +msgid "Sub-Resources" +msgstr "รีซà¸à¸£à¹Œà¸ªà¸¢à¹ˆà¸à¸¢" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6889,7 +6920,7 @@ msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™:" msgid "Pick one or more items from the list to display the graph." msgstr "เลืà¸à¸à¸‚้à¸à¸¡à¸¹à¸¥à¸ˆà¸²à¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸à¹€à¸žà¸·à¹ˆà¸à¹à¸ªà¸”งà¸à¸£à¸²à¸Ÿ" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "ข้à¸à¸œà¸´à¸”พลาด" @@ -6898,6 +6929,10 @@ msgid "Child Process Connected" msgstr "เชื่à¸à¸¡à¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¹à¸¥à¹‰à¸§" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "คัดลà¸à¸à¸œà¸´à¸”พลาด" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "ตรวจสà¸à¸šà¸à¸´à¸™à¸ªà¹à¸•นซ์à¸à¹ˆà¸à¸™à¸«à¸™à¹‰à¸²" @@ -6991,7 +7026,7 @@ msgstr "ทางลัด" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "ปุ่มลัด" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7043,43 +7078,39 @@ msgstr "à¹à¸à¹‰à¹„ขขนาด Probe" #: 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 -#, fuzzy msgid "Remove current entry" -msgstr "ลบจุดบนเส้นโค้ง" +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:" -msgstr "" +msgstr "à¹à¸žà¸¥à¸•ฟà¸à¸£à¹Œà¸¡:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "คัดลà¸à¸à¹„ปยังà¹à¸žà¸¥à¸•ฟà¸à¸£à¹Œà¸¡.." +msgstr "à¹à¸žà¸¥à¸•ฟà¸à¸£à¹Œà¸¡" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy 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 -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "GDNativeLibrary" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7247,10 +7278,50 @@ msgstr "à¸à¸²à¸£à¸•ั้งค่า GridMap" msgid "Pick Distance:" msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸à¸:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ solution..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจà¸à¸•์ C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "ผิดพลาดในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡ solution" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "ผิดพลาดในà¸à¸²à¸£à¸šà¸±à¸™à¸—ึภsolution" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "เสร็จสิ้น" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "ผิดพลาดในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจà¸à¸•์ C#" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "โมโน" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "สร้าง C# solution" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "สร้าง" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Build โปรเจà¸à¸•์" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "คำเตืà¸à¸™" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7597,24 +7668,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "รันไฟล์ HTML ที่ส่งà¸à¸à¸à¹ƒà¸™à¹€à¸šà¸£à¸²à¹€à¸‹à¸à¸£à¹Œ" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "เขียนไฟล์ไม่ได้:\n" +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 "Could not open template for export:\n" -msgstr "เปิดà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸žà¸·à¹ˆà¸à¸ªà¹ˆà¸‡à¸à¸à¸à¹„ม่ได้:\n" +msgid "Invalid export template:" +msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸à¹„ม่ถูà¸à¸•้à¸à¸‡:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸à¸à¸à¹„ม่ถูà¸à¸•้à¸à¸‡:\n" +msgid "Could not read custom HTML shell:" +msgstr "ไม่สามารถà¸à¹ˆà¸²à¸™à¹‚ครงสร้าง HTML:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "ไม่สามารถà¸à¹ˆà¸²à¸™à¹‚ครงสร้าง HTML:\n" +msgid "Could not read boot splash image file:" +msgstr "ไม่สามารถà¸à¹ˆà¸²à¸™à¹„ฟล์ภาพขณะเริ่มเà¸à¸¡:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "ไม่สามารถà¸à¹ˆà¸²à¸™à¹„ฟล์ภาพขณะบูต:\n" +msgid "Using default boot splash image." +msgstr "ใช้ภาพขณะเริ่มเà¸à¸¡à¸›à¸£à¸´à¸¢à¸²à¸¢" #: scene/2d/animated_sprite.cpp msgid "" @@ -7630,6 +7705,15 @@ msgstr "" "จะมี CanvasModulate ที่มà¸à¸‡à¹€à¸«à¹‡à¸™à¹„ด้เพียงโหนดเดียวในฉาภ(หรืà¸à¸à¸¥à¸¸à¹ˆà¸¡à¸‚à¸à¸‡à¸‰à¸²à¸à¸—ี่เป็นà¸à¸´à¸™à¸ªà¹à¸•นซ์) " "โหนดà¹à¸£à¸à¹€à¸—่านั้นที่จะทำงานได้ปà¸à¸•ิ ที่เหลืà¸à¸ˆà¸°à¹„ม่ทำงาน" +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"โหนดนี้ไม่มีโหนดรูปทรงเป็นโหนดลูภจึงไม่มีผลทางà¸à¸²à¸¢à¸ าพ\n" +"à¸à¸£à¸¸à¸“าเพิ่ม CollisionShape2D หรืภCollisionPolygon2D เป็นโหนดลูà¸à¹€à¸žà¸·à¹ˆà¸à¹ƒà¸«à¹‰à¸¡à¸µà¸£à¸¹à¸›à¸—รง" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7707,7 +7791,7 @@ msgstr "PathFollow2D จะทำงานได้ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹‚ภ#: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7753,23 +7837,29 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin ต้à¸à¸‡à¸¡à¸µ ARVRCamera เป็นโหนดลูà¸" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "วางà¹à¸™à¸§ meshes" +msgstr "วางà¹à¸™à¸§ meshes: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "วางà¹à¸™à¸§ meshes" +msgstr "วางà¹à¸™à¸§à¹à¸ªà¸‡:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "เสร็จสิ้นà¸à¸²à¸£à¸§à¸²à¸‡à¹à¸™à¸§" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "วางà¹à¸™à¸§ meshes" +msgstr "ส่à¸à¸‡à¹à¸ªà¸‡à¸šà¸™à¸žà¸·à¹‰à¸™à¸œà¸´à¸§: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"โหนดนี้ไม่มีโหนดรูปทรงเป็นโหนดลูภจึงไม่มีผลทางà¸à¸²à¸¢à¸ าพ\n" +"à¸à¸£à¸¸à¸“าเพิ่ม CollisionShape หรืภCollisionPolygon เป็นโหนดลูà¸à¹€à¸žà¸·à¹ˆà¸à¹ƒà¸«à¹‰à¸¡à¸µà¸£à¸¹à¸›à¸—รง" #: scene/3d/collision_polygon.cpp msgid "" @@ -7822,8 +7912,8 @@ msgstr "ไม่มีà¸à¸²à¸£à¹à¸ªà¸”งผลเนื่à¸à¸‡à¸ˆà¸²à¸à¹„ #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "ระบบฟิสิà¸à¸ªà¹Œà¸ˆà¸°à¸ˆà¸±à¸”à¸à¸²à¸£à¸‚นาดขà¸à¸‡ RigidBody (ในโหมด character หรืภrigid) เมื่à¸à¸£à¸±à¸™à¹€à¸à¸¡\n" @@ -7895,11 +7985,11 @@ msgstr "(à¸à¸·à¹ˆà¸™)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" -"ไม่สามารถโหลด Environment ปริยายที่à¸à¸³à¸«à¸™à¸”ในตัวเลืà¸à¸à¹‚ปรเจà¸à¸•์ได้ (Rendering -> Viewport " -"-> Default Environment)" +"ไม่สามารถโหลด Environment ปริยายที่à¸à¸³à¸«à¸™à¸”ในตัวเลืà¸à¸à¹‚ปรเจà¸à¸•์ได้ (Rendering -> " +"Environment -> Default Environment)" #: scene/main/viewport.cpp msgid "" @@ -7928,6 +8018,38 @@ msgstr "ผิดพลาดขณะโหลดฟà¸à¸™à¸•์" msgid "Invalid font size." msgstr "ขนาดฟà¸à¸™à¸•์ผิดพลาด" +#~ msgid "Next" +#~ msgstr "ต่à¸à¹„ป" + +#~ msgid "Not found!" +#~ msgstr "ไม่พบ!" + +#~ msgid "Replace By" +#~ msgstr "à¹à¸—นที่ด้วย" + +#~ msgid "Case Sensitive" +#~ msgstr "ตรงตามà¸à¸±à¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ" + +#~ msgid "Backwards" +#~ msgstr "ย้à¸à¸™à¸à¸¥à¸±à¸š" + +#~ msgid "Prompt On Replace" +#~ msgstr "เตืà¸à¸™à¸à¹ˆà¸à¸™à¹à¸—นที่" + +#~ msgid "Skip" +#~ msgstr "ข้าม" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "จะสร้างโปรเจà¸à¸•์ในโฟลเดà¸à¸£à¹Œà¸—ี่มีไฟล์à¸à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§ (ท่านà¸à¸²à¸ˆà¸•้à¸à¸‡à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ฟลเดà¸à¸£à¹Œà¹ƒà¸«à¸¡à¹ˆ)" + +#~ msgid "That's a BINGO!" +#~ msgstr "บิงโà¸!" + +#~ msgid "preview" +#~ msgstr "ตัวà¸à¸¢à¹ˆà¸²à¸‡" + #~ msgid "Move Add Key" #~ msgstr "เลื่à¸à¸™à¸«à¸£à¸·à¸à¹€à¸žà¸´à¹ˆà¸¡à¸„ีย์à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" @@ -8020,9 +8142,6 @@ msgstr "ขนาดฟà¸à¸™à¸•์ผิดพลาด" #~ msgid "' parsing of config failed." #~ msgstr "' ผิดพลาดขณะà¸à¹ˆà¸²à¸™à¹„ฟล์" -#~ msgid "Theme" -#~ msgstr "ธีม" - #~ msgid "Method List For '%s':" #~ msgstr "รายชื่à¸à¹€à¸¡à¸—็à¸à¸”ขà¸à¸‡ '%s':" @@ -8286,9 +8405,6 @@ msgstr "ขนาดฟà¸à¸™à¸•์ผิดพลาด" #~ msgid "Import Anyway" #~ msgstr "ยืนยันนำเข้า" -#~ msgid "Import & Open" -#~ msgstr "นำเข้าà¹à¸¥à¸°à¹€à¸›à¸´à¸”" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภยืนยันเปิดไฟล์ฉาà¸à¸—ี่นำเข้า?" @@ -8534,9 +8650,6 @@ msgstr "ขนาดฟà¸à¸™à¸•์ผิดพลาด" #~ msgid "Stereo" #~ msgstr "สเตà¸à¸£à¸´à¹‚à¸" -#~ msgid "Mono" -#~ msgstr "โมโน" - #~ msgid "Pitch" #~ msgstr "เสียงสูงต่ำ" @@ -8697,9 +8810,6 @@ msgstr "ขนาดฟà¸à¸™à¸•์ผิดพลาด" #~ msgid "Alerts when an external resource has changed." #~ msgstr "เตืà¸à¸™à¹€à¸¡à¸·à¹ˆà¸à¸¡à¸µà¸à¸²à¸£à¹à¸à¹‰à¹„ขรีซà¸à¸£à¹Œà¸ªà¸ ายนà¸à¸" -#~ msgid "Tutorials" -#~ msgstr "คู่มืà¸" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "เปิดคู่มืà¸à¸ˆà¸²à¸ https://godotengine.org" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 1a80028964..934077d896 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -11,22 +11,22 @@ # hubbyist <hub@legrud.net>, 2017. # M. Yavuz Uzun <myavuzuzun@yandex.com>, 2016. # Orkun Turan <holygatestudio@yandex.com>, 2016-2017. -# razah <icnikerazah@gmail.com>, 2017. -# stnmycri <satenmeycri@gmail.com>, 2017. +# razah <icnikerazah@gmail.com>, 2017-2018. +# stnmycri <satenmeycri@gmail.com>, 2017-2018. # Yavuz Günay <yavuzgunay@gmail.com>, 2017. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-04 20:50+0000\n" +"PO-Revision-Date: 2018-01-24 23:40+0000\n" "Last-Translator: razah <icnikerazah@gmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\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 2.18-dev\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -37,22 +37,20 @@ msgid "All Selection" msgstr "Tüm Seçim" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Animasyon DeÄŸiÅŸikliÄŸi DeÄŸeri" +msgstr "Anim Anahtar-kare Zamanını DeÄŸiÅŸtir" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "Animasyon DeÄŸiÅŸikliÄŸi GeçiÅŸi" +msgstr "Animasyon GeçiÅŸinin DeÄŸiÅŸimi" #: editor/animation_editor.cpp msgid "Anim Change Transform" msgstr "Animasyon DeÄŸiÅŸikliÄŸi Dönüşümü" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Animasyon DeÄŸiÅŸikliÄŸi DeÄŸeri" +msgstr "Anim Anahtar-kare DeÄŸerini DeÄŸiÅŸtir" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -208,8 +206,7 @@ msgstr "%d YENİ izler oluÅŸtur ve anahtarlar gir?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "OluÅŸtur" @@ -388,14 +385,6 @@ msgid "Replaced %d occurrence(s)." msgstr "DeÄŸiÅŸtirildi %d oluÅŸ(sn)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "DeÄŸiÅŸtir" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Tümünü DeÄŸiÅŸtir" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Büyük/Küçük Harf EÅŸleÅŸtir" @@ -404,48 +393,16 @@ msgid "Whole Words" msgstr "Tam Kelimeler" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Yalnızca Seçim" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Ara" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Bul" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Sonraki" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Bulunamadı!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Åžununla DeÄŸiÅŸtir" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "Büyük Küçük Harf Duyarlı" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Tersten" +msgid "Replace" +msgstr "DeÄŸiÅŸtir" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "DeÄŸiÅŸimi Sor" +msgid "Replace All" +msgstr "Tümünü DeÄŸiÅŸtir" #: editor/code_editor.cpp -msgid "Skip" -msgstr "Geç" +msgid "Selection Only" +msgstr "Yalnızca Seçim" #: editor/code_editor.cpp msgid "Zoom In" @@ -547,9 +504,8 @@ msgid "Connecting Signal:" msgstr "BaÄŸlantı Sinyali:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "Bunu '%s' ÅŸuna '%s' baÄŸla" +msgstr "Åžunun: '%s' ÅŸununla: '%s' baÄŸlantısını kes" #: editor/connections_dialog.cpp msgid "Connect.." @@ -565,9 +521,17 @@ msgid "Signals" msgstr "Sinyaller" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "%s Tipini deÄŸiÅŸtir" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "DeÄŸiÅŸtir" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Yeni oluÅŸtur" +msgstr "Yeni %s oluÅŸtur" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -677,8 +641,8 @@ msgstr "" "Yine de kaldırmak istiyor musunuz? (geri alınamaz)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Kaldırılamadı:\n" +msgid "Cannot remove:" +msgstr "Kaldırılamadı:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -760,9 +724,9 @@ msgstr "Projenin Kurucuları" msgid "Lead Developer" msgstr "BaÅŸ GeliÅŸtirici" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Proje Yöneticisi" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Proje Yöneticisi " #: editor/editor_about.cpp msgid "Developers" @@ -850,7 +814,7 @@ msgid "Success!" msgstr "BaÅŸarılı!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Kur" @@ -871,9 +835,8 @@ msgid "Rename Audio Bus" msgstr "Audio Bus'ı Yeniden Adlandır" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Audio Bus'ı Solo Aç/Kapat" +msgstr "Audio Bus Ses Seviyesini DeÄŸiÅŸtir" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -938,7 +901,7 @@ msgstr "Efekt'i Sil" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Ses" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1113,13 +1076,12 @@ msgid "Updating scene.." msgstr "Sahne güncelleniyor.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" msgstr "(boÅŸ)" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[kaydedilmemiÅŸ]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1159,8 +1121,8 @@ msgid "Packing" msgstr "Çıkınla" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Biçem dosyası bulunamadı:\n" +msgid "Template file not found:" +msgstr "Åžablon dosyası bulunamadı:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1371,6 +1333,20 @@ msgid "Description" msgstr "Açıklama" #: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "Çevrimiçi Rehberler:" + +#: 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 "" +"Bu metot için henüz bir rehber yok. Siz de\n" +"[color=$color][url=$url]hazırlayabilir[/url][/color] ya da \n" +"[color=$color][url=$url2]öneride bulunabilirsiniz[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "Özellikler" @@ -1406,6 +1382,10 @@ msgstr "" msgid "Search Text" msgstr "Yazı Ara" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Bul" + #: editor/editor_log.cpp msgid "Output:" msgstr "Çıktı:" @@ -1417,6 +1397,10 @@ msgstr "Çıktı:" msgid "Clear" msgstr "Temizle" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "Çıktıyı Temizle" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Kaynak kaydedilirken hata!" @@ -1425,8 +1409,8 @@ msgstr "Kaynak kaydedilirken hata!" msgid "Save Resource As.." msgstr "Kaynağı Farklı Kaydet.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Anlıyorum.." @@ -1480,8 +1464,11 @@ msgstr "Bu iÅŸlem bir kök sahne olmadan yapılamaz." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." -msgstr "Sahne kaydedilemedi. Anlaşılan bağımlılıklar (örnekler) karşılanamadı." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" +"Sahne kaydedilemedi. Anlaşılan bağımlılıklar (örnekler ve kalıtımlar) " +"karşılanamadı." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1971,7 +1958,7 @@ msgstr "Proje Listesine Çık" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Debug" -msgstr "Kusur Ayıkla" +msgstr "Hata Ayıklama" #: editor/editor_node.cpp msgid "Deploy with Remote Debug" @@ -2088,6 +2075,13 @@ msgstr "Yardım" msgid "Classes" msgstr "Sınıflar" +#: 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/project_settings_editor.cpp +msgid "Search" +msgstr "Ara" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Çevrimiçi Belgeler" @@ -2359,14 +2353,12 @@ msgid "Frame #:" msgstr "Kare #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "Süre:" +msgstr "Zaman" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Çağır" +msgstr "ÇaÄŸrılar" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2473,8 +2465,8 @@ msgid "No version.txt found inside templates." msgstr "Åžablonların içinde version.txt bulunamadı." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Åžablonlar için yol oluÅŸturulurken hata:\n" +msgid "Error creating path for templates:" +msgstr "Åžablonlar için yol oluÅŸturulurken hata:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2509,9 +2501,8 @@ msgstr "Cevap yok." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "İstem BaÅŸarısız." +msgstr "İstek BaÅŸarısız Oldu." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2557,7 +2548,6 @@ msgid "Connecting.." msgstr "BaÄŸlanılıyor.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "BaÄŸlanamadı" @@ -2633,11 +2623,8 @@ msgid "View items as a list" msgstr "Öğeleri liste olarak göster" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "Durum: Dosya içe aktarma baÅŸarısız oldu. Lütfen dosyayı onarın ve tekrar içe " "aktarın." @@ -2646,21 +2633,20 @@ msgid "Cannot move/rename resources root." msgstr "Kaynakların kökü taşınamaz/yeniden adlandırılamaz." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Bir klasör kendisinin içine taşınamaz.\n" +msgid "Cannot move a folder into itself." +msgstr "Bir klasör kendisinin içine taşınamaz." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Taşıma Hatası:\n" +msgid "Error moving:" +msgstr "Taşıma Hatası:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Yüklerken hata:" +msgid "Error duplicating:" +msgstr "ÇoÄŸaltılırken hata:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Bağımlılıklar güncellenemedi:\n" +msgid "Unable to update dependencies:" +msgstr "Bağımlılıklar güncellenemedi:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2691,14 +2677,12 @@ msgid "Renaming folder:" msgstr "Klasör yeniden adlandırma:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "ÇoÄŸalt" +msgstr "Dosya çoÄŸaltılıyor:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "Klasör yeniden adlandırma:" +msgstr "Klasör çoÄŸaltılıyor:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2717,9 +2701,8 @@ msgid "Move To.." msgstr "Åžuraya Taşı.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Sahneyi Aç" +msgstr "Sahne(ler) Aç" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2734,9 +2717,8 @@ msgid "View Owners.." msgstr "Sahipleri Görüntüle.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "ÇoÄŸalt" +msgstr "ÇoÄŸalt.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2833,14 +2815,12 @@ msgid "Importing Scene.." msgstr "Sahneyi İçe Aktarıyor..." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Işık Haritalarına Aktar:" +msgstr "Işık-haritaları Üretiliyor" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "AABB Üretimi" +msgstr "Örüntü için Üretiliyor: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3310,6 +3290,10 @@ msgstr "Düğüm Süzgeçlerini Düzenle" msgid "Filters.." msgstr "Süzgeçler..." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "AnimasyonAÄŸacı" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Ücretsiz" @@ -3459,23 +3443,30 @@ msgid "" "Save your scene (for images to be saved in the same dir), or pick a save " "path from the BakedLightmap properties." msgstr "" +"Lightmap resimleri için kaydetme yolu belirlenemiyor.\n" +"Sahneni kaydet (resimler aynı klasöre kaydedilmeli), ya da BakedLightmap " +"özelliklerinden bir kayıt yolu seçin." #: 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 "" +"PiÅŸirilecek örüntüler yok. Örüntülerin UV2 kanalı içerdiÄŸinden ve 'Bake " +"Light' bayrağınının açık olduÄŸundan emin olun." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed creating lightmap images, make sure path is writable." msgstr "" +"Işık-haritası görüntüleri oluÅŸturma baÅŸarısız oldu, yolun yazılabilir " +"olduÄŸundan emin olun." #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Bake Lightmaps" -msgstr "Işık Haritalarına Aktar:" +msgstr "Işık-Haritalarını PiÅŸir" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Önizleme" @@ -3780,6 +3771,14 @@ msgstr "Ekle %s" msgid "Adding %s..." msgstr "Ekliyor %s.." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Tamam" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "Kök olmadan çoklu düğüm oluÅŸturulamaz." + #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Create Node" @@ -3791,11 +3790,6 @@ msgid "Error instancing scene from %s" msgstr "Åžundan: %s sahne örnekleme hatası" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Bu iÅŸlem, seçilmiÅŸ tek bir düğüm gerektirir." - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "Varsayılan tipi deÄŸiÅŸtir" @@ -3988,19 +3982,19 @@ msgstr "Yönlendirici Örüntüsü OluÅŸtur" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Bulunan Örüntü ArrayMesh tipinde deÄŸil." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "UV Unwrap baÅŸarısız oldu, örüntü manifold olmayabilir?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Hata ayıklaöma için örüntü yok." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Model bu katmanda UV'ye sahip deÄŸil" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4043,18 +4037,16 @@ msgid "Create Outline Mesh.." msgstr "Anahat Örüntüsü OluÅŸtur.." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "Görüş" +msgstr "UV1'i Göster" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "Görüş" +msgstr "UV2'yi Göster" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Lightmap/AO için UV2 paket aç" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -4169,8 +4161,8 @@ msgid "Bake!" msgstr "PiÅŸir!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "Yönlendirici örüntüsünü piÅŸir.\n" +msgid "Bake the navigation mesh." +msgstr "Yönlendirici örüntüsünü piÅŸir." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4558,17 +4550,17 @@ msgstr "Kaynak Yükle" msgid "Paste" msgstr "Yapıştır" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "KaynakÖnyükleyici" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "En Son Dosyaları Temizle" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Kapa ve deÄŸiÅŸiklikleri kaydet?\n" -"\"" +msgid "Close and save changes?" +msgstr "Kapa ve deÄŸiÅŸiklikleri kaydet?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4639,9 +4631,12 @@ msgid "Soft Reload Script" msgstr "BetiÄŸi Yeniden Duyarlı Yükle" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Dosya Yolunu Tıpkıla" +msgstr "Betik Yolunu Kopyala" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Dosya Sisteminde Göster" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4834,9 +4829,8 @@ msgid "Clone Down" msgstr "AÅŸağıya EÅŸle" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "Satırı GeniÅŸlet" +msgstr "Satırı Katla/Aç" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5080,84 +5074,84 @@ msgid "Rotating %s degrees." msgstr "%s Düzey Dönüyor." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "Alttan Görünüm." +msgid "Keying is disabled (no key inserted)." +msgstr "Anahtar ekleme devre dışı (eklenmiÅŸ anahtar yok)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "Alt" +msgid "Animation Key Inserted." +msgstr "Animasyon Anahtarı Eklendi." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "Üstten Görünüm." +msgid "Objects Drawn" +msgstr "ÇizilmiÅŸ Nesneler" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "Arkadan Görünüm." +msgid "Material Changes" +msgstr "Materyal DeÄŸiÅŸiklikleri" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "Arka" +msgid "Shader Changes" +msgstr "Shader DeÄŸiÅŸiklikleri" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "Önden Görünüm." +msgid "Surface Changes" +msgstr "Yüzey DeÄŸiÅŸiklikleri" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "Ön" +msgid "Draw Calls" +msgstr "Çizim ÇaÄŸrıları" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "Soldan Görünüm." +msgid "Vertices" +msgstr "Köşenoktalar" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "Sol" +msgid "FPS" +msgstr "FPS" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "SaÄŸdan Görünüm." +msgid "Top View." +msgstr "Üstten Görünüm." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "SaÄŸ" +msgid "Bottom View." +msgstr "Alttan Görünüm." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "Anahtar ekleme devre dışı (eklenmiÅŸ anahtar yok)." +msgid "Bottom" +msgstr "Alt" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "Animasyon Anahtarı Eklendi." +msgid "Left View." +msgstr "Soldan Görünüm." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "ÇizilmiÅŸ Nesneler" +msgid "Left" +msgstr "Sol" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "Materyal DeÄŸiÅŸiklikleri" +msgid "Right View." +msgstr "SaÄŸdan Görünüm." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "Shader DeÄŸiÅŸiklikleri" +msgid "Right" +msgstr "SaÄŸ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "Yüzey DeÄŸiÅŸiklikleri" +msgid "Front View." +msgstr "Önden Görünüm." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "Çizim ÇaÄŸrıları" +msgid "Front" +msgstr "Ön" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "Köşenoktalar" +msgid "Rear View." +msgstr "Arkadan Görünüm." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "FPS" +msgid "Rear" +msgstr "Arka" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5171,6 +5165,10 @@ msgstr "Tamam :(" msgid "No parent to instance a child at." msgstr "ÇocuÄŸun örnek alacağı bir ebeveyn yok." +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +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 msgid "Display Normal" msgstr "OlaÄŸanı Görüntüle" @@ -5244,16 +5242,12 @@ msgid "Freelook Speed Modifier" msgstr "Serbestbakış Hız DeÄŸiÅŸtirici" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "önizleme" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XForm İletiÅŸim Kutusu" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "Seçim Kipi (Q)\n" +msgid "Select Mode (Q)" +msgstr "Seçim Kipi (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5282,14 +5276,12 @@ msgid "Local Coords" msgstr "Yerel Koordlar" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "Ölçek Biçimi (R)" +msgstr "Yerel Uzay Kipi (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "Yapışma Kipi:" +msgstr "Yapışma Kipi (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5406,7 +5398,7 @@ msgstr "Ayarlar" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "İskelet Gizmo görünürlüğü" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" @@ -5532,10 +5524,18 @@ msgstr "Taşı (Önce)" msgid "Move (After)" msgstr "Taşı (Sonra)" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "GörüntüKareleri" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox Önizleme:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "StilKutusu" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "Dikdörtgen Bölgesini Ayarla" @@ -5561,14 +5561,17 @@ msgid "Auto Slice" msgstr "Otomatik Dilimle" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "Kaydırma:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "Adım:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "Ayrım:" @@ -5706,6 +5709,10 @@ msgstr "Yazı Tipi" msgid "Color" msgstr "Renk" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Kalıp" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "Seçimi Sil" @@ -5791,9 +5798,8 @@ msgid "Merge from scene?" msgstr "Sahneden birleÅŸtirilsin mi?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "TileSet .." +msgstr "Karo Takımı" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5807,6 +5813,34 @@ msgstr "Sahneden BirleÅŸtir" msgid "Error" msgstr "Hata" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +msgstr "Oto-döşemeler" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings." +msgstr "" +"Simge olarak kullanmak iÅŸin alt-karo seç, bu aynı zamanda geçersiz oto-karo " +"baÄŸlantılarında kullanılacaktır." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"LMB: bit'i aç.\n" +"RMB: bit'i kapat." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Åžuanki düzenlenmiÅŸ alt-döşemeyi seç." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "ÖnceliÄŸini deÄŸiÅŸtirmek için alt-karo seçin." + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "Vazgeç" @@ -5918,12 +5952,8 @@ msgid "Please choose a 'project.godot' file." msgstr "Lütfen bir 'proje.godot' dosyası seçin." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" -"Projen boÅŸ olmayan bir klasörde oluÅŸturulacak (yeni bir klasör oluÅŸturmak " -"isteyebilirsin)." +msgid "Please choose an empty folder." +msgstr "Lütfen boÅŸ bir klasör seçin." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5934,6 +5964,14 @@ msgid "Imported Project" msgstr "İçe Aktarılan Proje" #: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "Klasör oluÅŸturulamadı." + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "Yolda bu isimde bir klasör zaten var." + +#: editor/project_manager.cpp msgid "It would be a good idea to name your project." msgstr "Projenizi isimlendirmek iyi bir fikir olabilir." @@ -5974,14 +6012,26 @@ msgid "Import Existing Project" msgstr "Var Olan Projeyi İçe Aktar" #: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "İçe Aktar & Düzenle" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "Yeni Proje OluÅŸtur" #: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "OluÅŸtur & Düzenle" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "Projeyi Kur:" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Kur & Düzenle" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "Proje Adı:" @@ -5998,10 +6048,6 @@ msgid "Browse" msgstr "Gözat" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "YaÅŸa BE!" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Adsız Proje" @@ -6057,6 +6103,10 @@ msgstr "" "musunuz?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Proje Yöneticisi" + +#: editor/project_manager.cpp msgid "Project List" msgstr "Proje Listesi" @@ -6185,11 +6235,6 @@ msgid "Button 9" msgstr "Düğme 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "DeÄŸiÅŸtir" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "Oyun Kolu Ekseni İndeksi:" @@ -6202,9 +6247,8 @@ msgid "Joypad Button Index:" msgstr "Oyun Kolu Düğmesi İndeksi:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" -msgstr "GiriÅŸ Eylemi Olayını Sil" +msgstr "Girdi Eylemini Sil" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" @@ -6452,7 +6496,7 @@ msgstr "Yeni Betik" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Yeni %s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6487,9 +6531,8 @@ msgid "On" msgstr "Açık" #: editor/property_editor.cpp -#, fuzzy msgid "[Empty]" -msgstr "BoÅŸ Ekle" +msgstr "[BoÅŸ]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" @@ -6569,10 +6612,6 @@ msgid "Error loading scene from %s" msgstr "Åžuradan: %s sahne yüklenirken hata" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Tamam" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6660,8 +6699,8 @@ msgid "Error duplicating scene to save it." msgstr "Kaydetmek için sahne çoÄŸaltılırken hata." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "Alt Kaynaklar:" +msgid "Sub-Resources" +msgstr "Alt Kaynaklar" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6963,7 +7002,7 @@ msgstr "Fonksiyon:" msgid "Pick one or more items from the list to display the graph." msgstr "GrafiÄŸi görüntülemek için listeden bir veya daha fazla öğe seçin." -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Hatalar" @@ -6972,6 +7011,10 @@ msgid "Child Process Connected" msgstr "Çocuk Süreç BaÄŸlandı" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "Hatayı Kopyala" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "Önceki ÖrneÄŸi İncele" @@ -7009,7 +7052,7 @@ msgstr "DeÄŸer" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "Görüntülükler" +msgstr "Monitörler" #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" @@ -7065,7 +7108,7 @@ msgstr "Kısayollar" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "BaÄŸlayıcı" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7117,43 +7160,39 @@ msgstr "DeÅŸme GeniÅŸlemesini DeÄŸiÅŸtir" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" -msgstr "" +msgstr "Bu girdi için bir dinamik kütüphane seçin" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select dependencies of the library for this entry" -msgstr "" +msgstr "Bu girdi için kütüphanenin bağımlılıklarını seçin" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Remove current entry" -msgstr "Yol Noktasını Kaldır" +msgstr "Mevcut giriyi kaldır" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" -msgstr "" +msgstr "Yeni girdi oluÅŸturmak için çift tıkla" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform:" -msgstr "" +msgstr "Mecra:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "Düzleme Tıpkıla.." +msgstr "Mecra" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "Kütüphane" +msgstr "Dinamik Kütüphane" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "Bir yapı girdisi ekle" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDYerel" +msgstr "GDYerelKütüphanesi" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7322,10 +7361,50 @@ msgstr "IzgaraHaritası Ayarları" msgid "Pick Distance:" msgstr "Uzaklık Seç:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "solü oluÅŸturuluyor..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "C# projesi üretiliyor..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Çözüm oluÅŸturma baÅŸarısız." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Çözüm kaydetme baÅŸarısız." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Oldu" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "C# projesi oluÅŸturma baÅŸarısız." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Tekli" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "C# Çözümü oluÅŸtur" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "İnÅŸalar" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Projeyi İnÅŸa et" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Uyarılar" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7683,24 +7762,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "Dışa aktarılmış HTML'yi sistemin varsayılan tarayıcısında çalıştır." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Dosya yazılamadı:\n" +msgid "Could not write file:" +msgstr "Dosya yazılamadı:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "Dışa aktarma için ÅŸablon açılamadı:\n" +msgid "Could not open template for export:" +msgstr "Dışa aktarma için ÅŸablon açılamadı:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Geçersiz Dışa Aktarım Åžablonu:\n" +msgid "Invalid export template:" +msgstr "Geçersiz Dışa Aktarım Åžablonu:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "Özel HTML çekirdeÄŸi okunamadı:\n" +msgid "Could not read custom HTML shell:" +msgstr "Özel HTML çekirdeÄŸi okunamadı:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "Açılış ekranı resim dosyası okunamadı:\n" +msgid "Could not read boot splash image file:" +msgstr "Açılış ekranı resim dosyası okunamadı:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "Açılış ekranı resim dosyası okunamadı." #: scene/2d/animated_sprite.cpp msgid "" @@ -7719,6 +7802,16 @@ msgstr "" "CanvasModulate'e izin verilir. İlk oluÅŸturulan çalışırken diÄŸerleri ihmal " "edilecektir." +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"Bu düğüm alt ÅŸekillere sahip deÄŸil, bu yüzden uzayla etkileÅŸime giremez.\n" +"Åžeklini belirlemek için CollisionShape2D ya da CollisionPolygon2D eklemeyi " +"düşünebilirsiniz." + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7809,7 +7902,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7862,23 +7955,30 @@ msgid "ARVROrigin requires an ARVRCamera child node" msgstr "ARVROrigin bir ARVRCamera çocuk düğümü gerektirir" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "Örüntüler Haritalanıyor" +msgstr "Örüntüler Haritalanıyor: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "Örüntüler Haritalanıyor" +msgstr "Örüntüler Haritalanıyor:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "Haritalama Bitiriliyor" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "Örüntüler Haritalanıyor" +msgstr "Örüntüler Haritalanıyor: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"Bu düğüm alt ÅŸekillere sahip deÄŸil, bu yüzden uzayla etkileÅŸime giremez.\n" +"Åžeklini belirlemek için CollisionShape ya da CollisionPolygon eklemeyi " +"düşünebilirsiniz." #: scene/3d/collision_polygon.cpp msgid "" @@ -7939,8 +8039,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" "RigidBody boyut deÄŸiÅŸikliÄŸi(karakter yada rigid kipleri) fizik motoru " @@ -8021,11 +8121,11 @@ msgstr "(DiÄŸer)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" "Proje Ayarlarında tanımlanmış Varsayılan Ortam (İşleme -> Görüntükapısı -> " -"Varsayılan Ortam) Yüklenemedi." +"Varsayılan Ortam) yüklenemedi." #: scene/main/viewport.cpp msgid "" @@ -8055,6 +8155,40 @@ msgstr "Yazıtipi yükleme hatası." msgid "Invalid font size." msgstr "Geçersiz yazıtipi boyutu." +#~ msgid "Next" +#~ msgstr "Sonraki" + +#~ msgid "Not found!" +#~ msgstr "Bulunamadı!" + +#~ msgid "Replace By" +#~ msgstr "Åžununla DeÄŸiÅŸtir" + +#~ msgid "Case Sensitive" +#~ msgstr "Büyük Küçük Harf Duyarlı" + +#~ msgid "Backwards" +#~ msgstr "Tersten" + +#~ msgid "Prompt On Replace" +#~ msgstr "DeÄŸiÅŸimi Sor" + +#~ msgid "Skip" +#~ msgstr "Geç" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "" +#~ "Projen boÅŸ olmayan bir klasörde oluÅŸturulacak (yeni bir klasör oluÅŸturmak " +#~ "isteyebilirsin)." + +#~ msgid "That's a BINGO!" +#~ msgstr "YaÅŸa BE!" + +#~ msgid "preview" +#~ msgstr "önizleme" + #~ msgid "Move Add Key" #~ msgstr "Hareket Anahtar Ekle" @@ -8142,9 +8276,6 @@ msgstr "Geçersiz yazıtipi boyutu." #~ msgid "Filter:" #~ msgstr "Süzgeç:" -#~ msgid "Theme" -#~ msgstr "Kalıp" - #~ msgid "Method List For '%s':" #~ msgstr "'%s' İçin Yöntem Dizelgesi:" @@ -8407,9 +8538,6 @@ msgstr "Geçersiz yazıtipi boyutu." #~ msgid "Import Anyway" #~ msgstr "Yine de İçe Aktar" -#~ msgid "Import & Open" -#~ msgstr "İçe Aktar & Aç" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "" #~ "Düzenlenen sahne kaydedilmedi, yine de içe aktarılan sahne açılsın mı?" @@ -8666,9 +8794,6 @@ msgstr "Geçersiz yazıtipi boyutu." #~ msgid "Stereo" #~ msgstr "Çiftli" -#~ msgid "Mono" -#~ msgstr "Tekli" - #~ msgid "Pitch" #~ msgstr "Perde" @@ -8829,9 +8954,6 @@ msgstr "Geçersiz yazıtipi boyutu." #~ msgid "Alerts when an external resource has changed." #~ msgstr "Dış kaynaklar deÄŸiÅŸince uyarır." -#~ msgid "Tutorials" -#~ msgstr "Öğreticiler" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "https://godotengine.org baÄŸlantısını öğreticiler bölümünde aç." diff --git a/editor/translations/uk.po b/editor/translations/uk.po index de2ab23773..d01686aec4 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -4,14 +4,17 @@ # This file is distributed under the same license as the Godot source code. # # Aleksandr <XpycT.TOP@gmail.com>, 2017. +# Ðндрій Бандура <andriykopanytsia@gmail.com>, 2018. # Гидеон Теон <t.kudely94@gmail.com>, 2017. -# ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>, 2017. +# ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>, 2017-2018. +# ОлекÑандр Пилипчук <pilipchukap@rambler.ru>, 2018. +# Yuri Chornoivan <yurchor@ukr.net>, 2018. # msgid "" msgstr "" -"Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-12-20 15:43+0000\n" -"Last-Translator: ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>\n" +"Project-Id-Version: Ukrainian (Godot Engine)\n" +"PO-Revision-Date: 2018-01-24 17:51+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" @@ -19,20 +22,19 @@ msgstr "" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 2.18\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" -msgstr "Відключено" +msgstr "Вимкнено" #: editor/animation_editor.cpp msgid "All Selection" -msgstr "УÑÑ– вибранні елементи" +msgstr "УÑе позначене" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Змінити значеннÑ" +msgstr "Змінити Ñ‡Ð°Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -43,9 +45,8 @@ msgid "Anim Change Transform" msgstr "Змінити перетвореннÑ" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Змінити значеннÑ" +msgstr "Змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -109,18 +110,16 @@ msgid "Duplicate Selection" msgstr "Дублювати виділене" #: editor/animation_editor.cpp -#, fuzzy msgid "Duplicate Transposed" -msgstr "ПереміÑтити дублікат" +msgstr "Дублювати транÑпоноване" #: editor/animation_editor.cpp msgid "Remove Selection" msgstr "Вилучити виділене" #: editor/animation_editor.cpp -#, fuzzy msgid "Continuous" -msgstr "Ðевгаваючий" +msgstr "Ðеперервна" #: editor/animation_editor.cpp msgid "Discrete" @@ -203,8 +202,7 @@ msgstr "Створити %d нові доріжки Ñ– вÑтавити ключ #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Створити" @@ -229,7 +227,6 @@ msgid "Change Anim Loop" msgstr "Змінити цикл анімації" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Create Typed Value Key" msgstr "Створити типовий ключ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—" @@ -251,7 +248,7 @@ msgstr "МаÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—." #: editor/animation_editor.cpp msgid "Length (s):" -msgstr "Довжина (Ñек.):" +msgstr "ТриваліÑть (Ñек.):" #: editor/animation_editor.cpp msgid "Animation length (in seconds)." @@ -382,14 +379,6 @@ msgid "Replaced %d occurrence(s)." msgstr "Замінено %d випадок(-ів)." #: editor/code_editor.cpp -msgid "Replace" -msgstr "Замінити" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "Замінити вÑÑ–" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "Враховувати регіÑтр" @@ -398,48 +387,16 @@ msgid "Whole Words" msgstr "Цілі Ñлова" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "Тільки виділити" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "Пошук" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "Знайти" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "Далі" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "Ðе знайдено!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "Замінити на" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "ЧутливіÑть регіÑтра" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "Ðазад" +msgid "Replace" +msgstr "Замінити" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "Запитувати при заміні" +msgid "Replace All" +msgstr "Замінити вÑÑ–" #: editor/code_editor.cpp -msgid "Skip" -msgstr "ПропуÑтити" +msgid "Selection Only" +msgstr "Тільки виділити" #: editor/code_editor.cpp msgid "Zoom In" @@ -541,9 +498,8 @@ msgid "Connecting Signal:" msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñигналу:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ '%s' Ð´Ð»Ñ %s'" +msgstr "Від'єднати '%s' від '%s'" #: editor/connections_dialog.cpp msgid "Connect.." @@ -559,9 +515,17 @@ msgid "Signals" msgstr "Сигнали" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "Змінити тип %s" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "Змінити" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Створити новий" +msgstr "Створити новий %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -672,8 +636,8 @@ msgstr "" "Видалити Ñ—Ñ… у будь-Ñкому разі? (ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ)" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "Ðеможливо вилучити:\n" +msgid "Cannot remove:" +msgstr "Ðеможливо вилучити:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -755,9 +719,9 @@ msgstr "ЗаÑновники проекту" msgid "Lead Developer" msgstr "Ведучий розробник" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "Керівник проекту" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "Керівник проектів " #: editor/editor_about.cpp msgid "Developers" @@ -845,7 +809,7 @@ msgid "Success!" msgstr "УÑпіх!" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "Ð’Ñтановити" @@ -866,9 +830,8 @@ msgid "Rename Audio Bus" msgstr "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾ шини" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "Перемкнути аудіо шину Ñоло" +msgstr "Змінити гучніÑть звукової шини" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -933,7 +896,7 @@ msgstr "Видалити ефект" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "Звук" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1007,11 +970,11 @@ msgstr "Зберегти цей макет шини у файлі." #: editor/editor_audio_buses.cpp editor/import_dock.cpp msgid "Load Default" -msgstr "Завантажити за промовчаннÑм" +msgstr "Завантажити типовий" #: editor/editor_audio_buses.cpp msgid "Load the default Bus Layout." -msgstr "Завантажити макет шини за промовчаннÑм." +msgstr "Завантажити типовий макет шини." #: editor/editor_autoload_settings.cpp msgid "Invalid name." @@ -1113,15 +1076,15 @@ msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñцени.." #: editor/editor_data.cpp msgid "[empty]" -msgstr "" +msgstr "[порожньо]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[не збережено]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" -msgstr "БудьлаÑка, виберіть Ñпочатку базову каталог" +msgstr "Будь лаÑка, виберіть Ñпочатку базовий каталог" #: editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1157,8 +1120,8 @@ msgid "Packing" msgstr "ПакуваннÑ" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "Файл шаблону не знайдено:\n" +msgid "Template file not found:" +msgstr "Файл шаблону не знайдено:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1185,7 +1148,6 @@ msgid "Refresh" msgstr "Оновити" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "All Recognized" msgstr "УÑе розпізнано" @@ -1370,6 +1332,20 @@ msgid "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 "" +"ÐаÑтанов щодо цього клаÑу ще немає. Ви можете [color=$color][url=" +"$url]Ñтворити Ñ—Ñ…[/url][/color] або [color=$color][url=$url2]надіÑлати запит " +"щодо їхнього ÑтвореннÑ[/url][/color]." + +#: editor/editor_help.cpp msgid "Properties" msgstr "ВлаÑтивоÑті" @@ -1382,8 +1358,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 "Methods" @@ -1398,13 +1374,17 @@ 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.cpp msgid "Search Text" msgstr "Шукати текÑÑ‚" +#: editor/editor_help.cpp +msgid "Find" +msgstr "Знайти" + #: editor/editor_log.cpp msgid "Output:" msgstr "Вивід:" @@ -1416,6 +1396,10 @@ msgstr "Вивід:" msgid "Clear" msgstr "ОчиÑтити" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "ОчиÑтити вивід" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€ÐµÑурÑу!" @@ -1424,8 +1408,8 @@ msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€ÐµÑурÑу!" msgid "Save Resource As.." msgstr "Зберегти реÑÑƒÑ€Ñ Ñк.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "Бачу.." @@ -1451,7 +1435,7 @@ msgstr "Помилка при ÑинтакÑичному аналізі '%s'." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "Ðеочикуваний кінець Ñ€Ñдку '%s'." +msgstr "Ðеочікуваний кінець Ñ€Ñдка «%s»." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." @@ -1471,7 +1455,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." @@ -1479,9 +1463,11 @@ msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ може бути виконана без кР#: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" -"Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñцену. Вірогідно, залежноÑті (екземплÑри) не задоволені." +"Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñцену. Вірогідно, залежноÑті (екземплÑри або " +"уÑпадковані) не задоволені." #: editor/editor_node.cpp msgid "Failed to load resource." @@ -1509,7 +1495,7 @@ msgstr "Помилка при Ñпробі зберегти макет!" #: editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "Макет редактора за промовчуваннÑм перевизначено." +msgstr "Типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° перевизначено." #: editor/editor_node.cpp msgid "Layout name not found!" @@ -1517,7 +1503,7 @@ msgstr "Ðазву макета не знайдено!" #: editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "Поновити макет за промовчуваннÑм до базових налаштувань." +msgstr "Відновлено типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° базовими параметрами." #: editor/editor_node.cpp msgid "" @@ -1701,7 +1687,7 @@ 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." @@ -1833,7 +1819,7 @@ msgstr "Видалити макет" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp msgid "Default" -msgstr "За промовчаннÑм" +msgstr "Типовий" #: editor/editor_node.cpp msgid "Switch Scene Tab" @@ -2092,6 +2078,13 @@ msgstr "Довідка" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "Пошук" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "Онлайн документаціÑ" @@ -2363,14 +2356,12 @@ msgid "Frame #:" msgstr "Кадр #:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "ЧаÑ:" +msgstr "ЧаÑ" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "Виклик" +msgstr "Виклики" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2381,6 +2372,8 @@ msgid "" "No runnable export preset found for this platform.\n" "Please add a runnable preset in the export menu." msgstr "" +"Ðе знайдено робочий екÑпортер Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи.\n" +"Будь лаÑка, додайте його в меню екÑпорту." #: editor/editor_run_script.cpp msgid "Write your logic in the _run() method." @@ -2408,7 +2401,7 @@ msgstr "Ви забули метод \"_run\"?" #: editor/editor_settings.cpp msgid "Default (Same as Editor)" -msgstr "За промовчаннÑм (так Ñамо, Ñк редактор)" +msgstr "Типовий (так Ñамо, Ñк редактор)" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" @@ -2475,8 +2468,8 @@ msgid "No version.txt found inside templates." msgstr "Файл version.txt не знайдено у шаблонах." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»Ñху Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²:\n" +msgid "Error creating path for templates:" +msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»Ñху Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2511,7 +2504,6 @@ msgstr "Ðемає відповіді." #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." msgstr "Запит не вдавÑÑ." @@ -2556,10 +2548,9 @@ msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ð¸" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connecting.." -msgstr "З’єданнÑ.." +msgstr "З’єднаннÑ.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "Ðе вдаєтьÑÑ Ð·â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ÑÑ" @@ -2637,11 +2628,8 @@ msgid "View items as a list" msgstr "ПереглÑд елементів Ñк ÑпиÑок" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" -"\n" "СтатуÑ: не вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ файл. Виправте файл та повторно імпортуйте " "вручну." @@ -2650,21 +2638,20 @@ msgid "Cannot move/rename resources root." msgstr "Ðеможливо переміÑтити/перейменувати корінь реÑурÑів." #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" -msgstr "Ðе вдаєтьÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити теку в Ñебе.\n" +msgid "Cannot move a folder into itself." +msgstr "Ðе вдаєтьÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити теку в Ñебе." #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "Помилка переміщеннÑ:\n" +msgid "Error moving:" +msgstr "Помилка переміщеннÑ:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "Помилка завантаженнÑ:" +msgid "Error duplicating:" +msgstr "Помилка дублюваннÑ:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "Ðеможливо оновити залежноÑті:\n" +msgid "Unable to update dependencies:" +msgstr "Ðеможливо оновити залежноÑті:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2695,14 +2682,12 @@ msgid "Renaming folder:" msgstr "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "Дублювати" +msgstr "Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸:" +msgstr "Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2721,9 +2706,8 @@ msgid "Move To.." msgstr "ПереміÑтити до..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" -msgstr "Відкрити Ñцену" +msgstr "Відкрити Ñцену(и)" #: editor/filesystem_dock.cpp msgid "Instance" @@ -2738,9 +2722,8 @@ msgid "View Owners.." msgstr "ПереглÑнути влаÑників.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "Дублювати" +msgstr "Дублювати.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2837,14 +2820,12 @@ msgid "Importing Scene.." msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñцени.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— (Ñек):" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚ оÑвітленнÑ" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— (Ñек):" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñітки: " #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3052,7 +3033,6 @@ msgid "Animation position (in seconds)." msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ— (в Ñекундах)." #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Scale animation playback globally for the node." msgstr "Шкала Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾ анімації Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð°." @@ -3137,7 +3117,6 @@ msgid "Force White Modulate" msgstr "ПримуÑово Ñ€Ð¾Ð·Ñ„Ð°Ñ€Ð±Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ñ–Ð»Ð¸Ð¼" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Include Gizmos (3D)" msgstr "Включити ÒÑ–Ð·Ð¼Ð¾Ñ (3D)" @@ -3166,7 +3145,7 @@ msgstr "Далі (автоматична черга):" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" -msgstr "" +msgstr "Ð§Ð°Ñ Ð¼Ñ–Ð¶ анімаціÑми" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -3188,11 +3167,11 @@ msgstr "МаÑштаб:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade In (s):" -msgstr "" +msgstr "ÐароÑÑ‚Ð°Ð½Ð½Ñ (Ñ):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade Out (s):" -msgstr "" +msgstr "Ð—Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð½Ñ (Ñ):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend" @@ -3237,7 +3216,7 @@ msgstr "Ð—Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ 1:" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "" +msgstr "Ð§Ð°Ñ X-Fade (Ñ):" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Current:" @@ -3249,11 +3228,11 @@ msgstr "Додати вхід" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Clear Auto-Advance" -msgstr "" +msgstr "Ðвтоматичне очищеннÑ" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Set Auto-Advance" -msgstr "" +msgstr "Ðвтоматичні параметри" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" @@ -3273,7 +3252,7 @@ msgstr "Ðнімаційний вузол" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "OneShot Node" -msgstr "" +msgstr "Одноразовий вузол" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix Node" @@ -3281,27 +3260,27 @@ msgstr "Змішувати вузол" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend2 Node" -msgstr "" +msgstr "Вузол Blend2" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend3 Node" -msgstr "" +msgstr "Вузол Blend3" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend4 Node" -msgstr "" +msgstr "Вузол Blend4" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeScale Node" -msgstr "" +msgstr "Вузол чаÑової шкали" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "TimeSeek Node" -msgstr "" +msgstr "Вузол пошуку чаÑу" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Transition Node" -msgstr "" +msgstr "Вузол переходу" #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." @@ -3315,6 +3294,10 @@ msgstr "Редагувати фільтри вузла" msgid "Filters.." msgstr "Фільтри..." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "Дерево анімації" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "Вивільнити" @@ -3369,11 +3352,11 @@ msgstr "Помилка перевірки Ñ…ÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ sha256" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°:" +msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð°ÐºÑ‚Ð¸Ð²Ñƒ:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Fetching:" -msgstr "" +msgstr "ВидобуваннÑ:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving.." @@ -3397,7 +3380,7 @@ msgstr "Помилка завантаженнÑ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" -msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ актива вже виконуєтьÑÑ!" +msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ активу вже виконуєтьÑÑ!" #: editor/plugins/asset_library_editor_plugin.cpp msgid "first" @@ -3452,7 +3435,7 @@ msgstr "Офіційний" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Testing" -msgstr "" +msgstr "ТеÑтуваннÑ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -3464,22 +3447,30 @@ 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." #: 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 Ñ– що " +"прапор 'Ð—Ð°Ð¿Ñ–ÐºÐ°Ð½Ð½Ñ Ñвітла' включений." #: 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 "" +msgstr "Запікати карти оÑвітленнÑ" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "Попередній переглÑд" @@ -3490,24 +3481,24 @@ msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð²'Ñзки" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Offset:" -msgstr "" +msgstr "ВідÑтуп Ñітки:" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid Step:" -msgstr "" +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 "Move Pivot" -msgstr "" +msgstr "ПереміÑтити опорну точку" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Action" @@ -3547,19 +3538,19 @@ msgstr "Редагувати ІК-ланцюг" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit CanvasItem" -msgstr "" +msgstr "Редагувати CanvasItem" #: 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 msgid "Paste Pose" @@ -3571,7 +3562,7 @@ msgstr "Режим виділеннÑ" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" -msgstr "" +msgstr "ПеретÑгуваннÑ: Поворот" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+Drag: Move" @@ -3580,6 +3571,8 @@ msgstr "Alt+ПеретÑгнути: переміÑтити" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" +"ÐатиÑніть 'V', щоб змінити Pivot, 'Shift + V' Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚ÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Pivot (під " +"Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ)." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" @@ -3604,7 +3597,7 @@ msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "" +msgstr "ÐšÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ÑŽÑ” центр Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¾Ð±'єкта." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" @@ -3640,31 +3633,31 @@ 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 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 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 @@ -3682,7 +3675,7 @@ msgstr "Гарантує нащадки об'єкта не можуть бути #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Restores the object's children's ability to be selected." -msgstr "" +msgstr "Відновлює можливіÑть вибору нащадків об'єкта." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" @@ -3728,11 +3721,11 @@ 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 "Layout" @@ -3760,11 +3753,11 @@ msgstr "ОчиÑтити позу" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag pivot from mouse position" -msgstr "" +msgstr "ПеретÑгти центр Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð· Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¼Ð¸ÑˆÑ–" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set pivot at mouse position" -msgstr "" +msgstr "Ð’Ñтановити центр Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° міÑці вказівника миші" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Multiply grid step by 2" @@ -3782,6 +3775,15 @@ msgstr "Додати %s" msgid "Adding %s..." msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3790,22 +3792,19 @@ 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 -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” одного обраного вузла." +msgstr "Помилка Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñцени з %s" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" -msgstr "Змінити тип за промовчаннÑм" +msgstr "Змінити типовий тип" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "" "Drag & drop + Shift : Add node as sibling\n" "Drag & drop + Alt : Change node type" msgstr "" +"ПеретÑг + Shift : Додати вузол того ж рівнÑ\n" +"ПеретÑг + Alt : Змінити тип вузла" #: editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" @@ -3813,7 +3812,7 @@ msgstr "Створити полігон3D" #: editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" -msgstr "" +msgstr "Ð’Ñтановити обробник" #: editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" @@ -3839,23 +3838,23 @@ msgstr "Оновити зі Ñцени" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat0" -msgstr "" +msgstr "ПлаÑкий0" #: editor/plugins/curve_editor_plugin.cpp msgid "Flat1" -msgstr "" +msgstr "ПлаÑкий1" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease in" -msgstr "" +msgstr "Перейти в" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease out" -msgstr "" +msgstr "Перейти з" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "" +msgstr "Згладжений" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" @@ -3863,11 +3862,11 @@ 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" @@ -3879,15 +3878,15 @@ msgstr "Вилучити точку" #: editor/plugins/curve_editor_plugin.cpp msgid "Left linear" -msgstr "" +msgstr "Лівий лінійний" #: editor/plugins/curve_editor_plugin.cpp msgid "Right linear" -msgstr "" +msgstr "Правий лінійний" #: editor/plugins/curve_editor_plugin.cpp msgid "Load preset" -msgstr "" +msgstr "Завантажити заготовку" #: editor/plugins/curve_editor_plugin.cpp msgid "Remove Curve Point" @@ -3895,24 +3894,24 @@ 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 "" +msgstr "Утримуйте Shift, щоб змінити дотичні окремо" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "" +msgstr "Запекти пробу GI" #: editor/plugins/gradient_editor_plugin.cpp msgid "Add/Remove Color Ramp Point" -msgstr "" +msgstr "Додати/Видалити точку градієнта" #: editor/plugins/gradient_editor_plugin.cpp #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Modify Color Ramp" -msgstr "" +msgstr "Змінити градієнт" #: editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -3931,10 +3930,12 @@ msgid "" "No OccluderPolygon2D resource on this node.\n" "Create and assign one?" msgstr "" +"Цей вузол не має реÑурÑу OccluderPolygon2D.\n" +"Створити Ñ– призначити?" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" -msgstr "" +msgstr "Створено затінювальний полігон" #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create a new polygon from scratch." @@ -3954,19 +3955,19 @@ msgstr "CTRL+ЛКМ: Розділити Ñегмент." #: editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "RMB: Erase Point." -msgstr "" +msgstr "ПКМ: Стерти точку." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "Сітка порожнÑ!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" -msgstr "" +msgstr "Створіть увігнуте Ñтатичне тіло" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Convex Body" -msgstr "" +msgstr "Створити опукле Ñтатичне тіло" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" @@ -3974,35 +3975,35 @@ msgstr "Це не працює на корінь Ñцени!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" -msgstr "" +msgstr "Створити увігнуту форму" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" -msgstr "" +msgstr "Створити вигнуту форму" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" -msgstr "Створити навигаційну Ñітку" +msgstr "Створити навігаційну Ñітку" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "Вбудована Ñітка не має типу ArrayMesh." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" -msgstr "" +msgstr "UV розгортка не вдалаÑÑ, можливо у поліÑеткі не однозв'Ñзна форма?" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "Ðемає Ñітки Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ." #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "Модель не має UV на цьому шарі" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" -msgstr "" +msgstr "У MeshInstance немає Ñітки!" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh has not surface to create outlines from!" @@ -4022,53 +4023,51 @@ msgstr "Сітка" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Static Body" -msgstr "" +msgstr "Створити увігнуте Ñтатичне тіло" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "" +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" -msgstr "" +msgstr "Створити опуклу облаÑть зіткненнÑ" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "" +msgstr "Створити контурну Ñітку .." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "ПереглÑд" +msgstr "ПереглÑд UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "ПереглÑд" +msgstr "ПереглÑд UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" -msgstr "" +msgstr "Розгорнути UV2 Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‚Ð¸ оÑвітленнÑ/AO" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" -msgstr "" +msgstr "Створити Ñітку обведеннÑ" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Outline Size:" -msgstr "" +msgstr "Розмір обведеннÑ:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." -msgstr "" +msgstr "Ðе вказане джерело Ñітки (й у вузлі не вказано MultiMesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and MultiMesh contains no Mesh)." -msgstr "" +msgstr "Ðе вказане джерело Ñітки (й у вузлі не вказано MultiMesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." @@ -4076,15 +4075,15 @@ msgstr "Джерело Ñітки недійÑне (неправильний шР#: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." -msgstr "" +msgstr "Ðеправильне джерело Ñітки (не MultiMesh)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (contains no Mesh resource)." -msgstr "" +msgstr "Ðеправильне джерело Ñітки (немає реÑурÑу Ñітки)." #: 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)." @@ -4096,15 +4095,15 @@ msgstr "Джерело поверхні недійÑне (без Ð³ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ñ #: editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no faces)." -msgstr "" +msgstr "Ðеправильне джерело поверхні (немає граней)." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Parent has no solid faces to populate." -msgstr "" +msgstr "Предок не має Ñуцільних граней Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Couldn't map area." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ‚Ð¸ ділÑнку." #: editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Source Mesh:" @@ -4120,7 +4119,7 @@ msgstr "Заповнити поверхню" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Populate MultiMesh" -msgstr "" +msgstr "Заповнити мультиÑітку" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Target Surface:" @@ -4128,23 +4127,23 @@ msgstr "Цільова поверхнÑ:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Source Mesh:" -msgstr "" +msgstr "Початкова Ñітка:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "" +msgstr "Ð’Ñ–ÑÑŒ X" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "" +msgstr "Ð’Ñ–ÑÑŒ Y" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" -msgstr "" +msgstr "Ð’Ñ–ÑÑŒ Z" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "" +msgstr "Ð’Ñ–ÑÑŒ вгору Ñітки:" #: editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" @@ -4164,11 +4163,11 @@ msgstr "Заповнити" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Bake!" -msgstr "" +msgstr "Запекти!" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "" +msgid "Bake the navigation mesh." +msgstr "Створити навігаційну Ñітку." #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4184,7 +4183,7 @@ msgstr "Розрахунок розміру Ñітки..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating heightfield..." -msgstr "" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ виÑот..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." @@ -4192,15 +4191,15 @@ msgstr "ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ…Ñ–Ð´Ð½Ð¸Ñ… трикутників..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Constructing compact heightfield..." -msgstr "" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð¾Ñ— карти виÑот..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Eroding walkable area..." -msgstr "" +msgstr "Ð Ð¾Ð·Ð¼Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¾Ñ…Ñ–Ð´Ð½Ð¾Ñ— ділÑнки..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Partitioning..." -msgstr "" +msgstr "РозбиттÑ..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating contours..." @@ -4208,11 +4207,11 @@ msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚ÑƒÑ€Ñ–Ð²..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñітки..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð° влаÑну навігаційну Ñітку..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Navigation Mesh Generator Setup:" @@ -4220,7 +4219,7 @@ msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° навігаційної Ñ #: editor/plugins/navigation_mesh_generator.cpp msgid "Parsing Geometry..." -msgstr "" +msgstr "Ðналіз геометрії..." #: editor/plugins/navigation_mesh_generator.cpp msgid "Done!" @@ -4233,11 +4232,12 @@ msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾ полігону" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" -msgstr "" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ AABB" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Can only set point into a ParticlesMaterial process material" msgstr "" +"ПоÑтавити точку можна тільки в процедурному матеріалі ParticlesMaterial" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Error loading image:" @@ -4245,19 +4245,19 @@ msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ:" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "No pixels with transparency > 128 in image.." -msgstr "" +msgstr "Ð’ зображенні немає пікÑелів з прозоріÑтю > 128.." #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Generate Visibility Rect" -msgstr "" +msgstr "Створити облаÑть видимоÑті" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Load Emission Mask" -msgstr "" +msgstr "Завантажити маÑку випромінюваннÑ" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Clear Emission Mask" -msgstr "" +msgstr "ОчиÑтити маÑку випромінюваннÑ" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -4275,15 +4275,15 @@ msgstr "Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— (Ñек):" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Mask" -msgstr "" +msgstr "МаÑка випромінюваннÑ" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Capture from Pixel" -msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð· пікÑелÑ" +msgstr "Захопити з пікÑелÑ" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Emission Colors" -msgstr "" +msgstr "Кольори випромінюваннÑ" #: editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry." @@ -4291,39 +4291,39 @@ msgstr "Вузол не міÑтить геометрії." #: editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry (faces)." -msgstr "" +msgstr "Вузол не міÑтить геометрії (граней)." #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "" +msgstr "Потрібен матеріал типу 'ParticlesMaterial'." #: editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" -msgstr "" +msgstr "Грані не міÑÑ‚Ñть ділÑнки!" #: editor/plugins/particles_editor_plugin.cpp msgid "No faces!" -msgstr "" +msgstr "Ðемає граней!" #: editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" -msgstr "" +msgstr "Генерувати AABB" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Mesh" -msgstr "" +msgstr "Створити випромінювач з Ñітки" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emission Points From Node" -msgstr "" +msgstr "Створити випромінювач з вузла" #: editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" -msgstr "" +msgstr "Створити випромінювач" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Points:" -msgstr "" +msgstr "Точок випромінюваннÑ:" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points" @@ -4331,7 +4331,7 @@ msgstr "Точки поверхні" #: editor/plugins/particles_editor_plugin.cpp msgid "Surface Points+Normal (Directed)" -msgstr "" +msgstr "Точки поверхні + нормаль (напрÑмлена)" #: editor/plugins/particles_editor_plugin.cpp msgid "Volume" @@ -4339,11 +4339,11 @@ msgstr "Об'єм" #: editor/plugins/particles_editor_plugin.cpp msgid "Emission Source: " -msgstr "" +msgstr "Джерело випромінюваннÑ: " #: editor/plugins/particles_editor_plugin.cpp msgid "Generate Visibility AABB" -msgstr "" +msgstr "Генерувати AABB" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" @@ -4351,11 +4351,11 @@ 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 @@ -4368,11 +4368,11 @@ 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 @@ -4382,7 +4382,7 @@ msgstr "Виберіть пункти" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Shift+Drag: Select Control Points" -msgstr "" +msgstr "Shift+перетÑг: Вибрати керувальні точки" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -4396,7 +4396,7 @@ msgstr "Клацніть правою кнопкою миші: видалити #: editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" -msgstr "" +msgstr "Вибір керувальних точок (Shift+перетÑг)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -4406,7 +4406,7 @@ msgstr "Додати точку (в порожньому проÑторі)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" -msgstr "" +msgstr "Розділити Ñегмент (кривої)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -4424,7 +4424,7 @@ 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" @@ -4432,35 +4432,35 @@ msgstr "Ð’Ñтановити криву в позиції" #: editor/plugins/path_editor_plugin.cpp msgid "Set Curve Out Position" -msgstr "" +msgstr "Ð’Ñтановити Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ кривої" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" -msgstr "" +msgstr "Розділити шлÑÑ…" #: editor/plugins/path_editor_plugin.cpp msgid "Remove Path Point" -msgstr "" +msgstr "Видалити точку шлÑху" #: editor/plugins/path_editor_plugin.cpp msgid "Remove Out-Control Point" -msgstr "" +msgstr "Вилучити вихідну керувальну точку" #: editor/plugins/path_editor_plugin.cpp msgid "Remove In-Control Point" -msgstr "" +msgstr "Вилучити вхідну керувальну точку" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" -msgstr "" +msgstr "Створити UV карту" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" -msgstr "" +msgstr "Перетворити UV карту" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" -msgstr "" +msgstr "Polygon 2D UV редактор" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Point" @@ -4476,7 +4476,7 @@ msgstr "Shift: ПереміÑтити вÑÑ–" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Ctrl: Scale" -msgstr "" +msgstr "Shift+Ctrl: МаÑштаб" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Polygon" @@ -4500,28 +4500,28 @@ msgstr "Редагувати" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" -msgstr "" +msgstr "Полігон -> UV" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "UV->Polygon" -msgstr "" +msgstr "UV -> полігон" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Clear UV" -msgstr "" +msgstr "ОчиÑтити UV" #: editor/plugins/polygon_2d_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap" -msgstr "" +msgstr "ПрилипаннÑ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Enable Snap" -msgstr "" +msgstr "Дозволити прилипаннÑ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Grid" -msgstr "" +msgstr "Сітка" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" @@ -4542,31 +4542,31 @@ msgstr "Вилучити реÑурÑ" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Resource clipboard is empty!" -msgstr "" +msgstr "Ð’ буфері обміну немає реÑурÑу!" #: editor/plugins/resource_preloader_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Load Resource" -msgstr "" +msgstr "Завантажити реÑурÑ" #: editor/plugins/resource_preloader_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 "Paste" -msgstr "" +msgstr "Ð’Ñтавити" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "Передзавантажувач реÑурÑів" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" -msgstr "" +msgstr "ОчиÑтити недавні файли" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"Закрити та зберегти зміни?\n" -"\"" +msgid "Close and save changes?" +msgstr "Закрити та зберегти зміни?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4578,15 +4578,15 @@ msgstr "Помилка збереженнÑ" #: editor/plugins/script_editor_plugin.cpp msgid "Error importing theme" -msgstr "" +msgstr "Помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸" #: editor/plugins/script_editor_plugin.cpp msgid "Error importing" -msgstr "" +msgstr "Помилка імпортуваннÑ" #: editor/plugins/script_editor_plugin.cpp msgid "Import Theme" -msgstr "" +msgstr "Імпортувати тему" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As.." @@ -4594,567 +4594,574 @@ msgstr "Зберегти тему Ñк..." #: editor/plugins/script_editor_plugin.cpp msgid " Class Reference" -msgstr "" +msgstr " ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° клаÑ" #: editor/plugins/script_editor_plugin.cpp msgid "Sort" -msgstr "" +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 "" +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 "" +msgstr "ПереміÑтити вниз" #: editor/plugins/script_editor_plugin.cpp msgid "Next script" -msgstr "" +msgstr "ÐаÑтупний Ñценарій" #: editor/plugins/script_editor_plugin.cpp msgid "Previous script" -msgstr "" +msgstr "Попередній Ñценарій" #: editor/plugins/script_editor_plugin.cpp msgid "File" -msgstr "" +msgstr "Файл" #: editor/plugins/script_editor_plugin.cpp msgid "New" -msgstr "" +msgstr "Ðовий" #: editor/plugins/script_editor_plugin.cpp msgid "Save All" -msgstr "" +msgstr "Зберегти вÑе" #: editor/plugins/script_editor_plugin.cpp msgid "Soft Reload Script" -msgstr "" +msgstr "М'Ñко перезавантажити Ñценарії" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "Копіювати шлÑÑ…" +msgstr "Копіювати шлÑÑ… до Ñкрипту" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "Показати в файловій ÑиÑтемі" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" -msgstr "" +msgstr "Попередній файл" #: editor/plugins/script_editor_plugin.cpp msgid "History Next" -msgstr "" +msgstr "ÐаÑтупний файл" #: editor/plugins/script_editor_plugin.cpp msgid "Reload Theme" -msgstr "" +msgstr "Перезавантажити тему" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme" -msgstr "" +msgstr "Зберегти тему" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As" -msgstr "" +msgstr "Зберегти тему Ñк" #: editor/plugins/script_editor_plugin.cpp msgid "Close Docs" -msgstr "" +msgstr "Закрити документацію" #: editor/plugins/script_editor_plugin.cpp msgid "Close All" -msgstr "" +msgstr "Закрити вÑе" #: editor/plugins/script_editor_plugin.cpp msgid "Close Other Tabs" -msgstr "" +msgstr "Закрити інші вкладки" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp msgid "Run" -msgstr "" +msgstr "ЗапуÑтити" #: editor/plugins/script_editor_plugin.cpp msgid "Toggle Scripts Panel" -msgstr "" +msgstr "Перемкнути панель Ñценаріїв" #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find.." -msgstr "" +msgstr "Знайти.." #: editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp msgid "Find Next" -msgstr "" +msgstr "Знайти наÑтупне" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Over" -msgstr "" +msgstr "Крок через" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Step Into" -msgstr "" +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 msgid "Continue" -msgstr "" +msgstr "Продовжити" #: editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" -msgstr "" +msgstr "Залишити зневаджувач відкритим" #: editor/plugins/script_editor_plugin.cpp msgid "Debug with external editor" -msgstr "" +msgstr "Ð—Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою зовнішнього редактора" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" -msgstr "" +msgstr "Відкрити онлайнову документацію Godot" #: editor/plugins/script_editor_plugin.cpp msgid "Search the class hierarchy." -msgstr "" +msgstr "Пошук в ієрархії клаÑів." #: editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." -msgstr "" +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 "Create Script" -msgstr "" +msgstr "Створити Ñценарій" #: editor/plugins/script_editor_plugin.cpp msgid "" "The following files are newer on disk.\n" "What action should be taken?:" msgstr "" +"Такі файли на диÑку новіші.\n" +"Що робити?:" #: editor/plugins/script_editor_plugin.cpp msgid "Reload" -msgstr "" +msgstr "Перезавантажити" #: editor/plugins/script_editor_plugin.cpp msgid "Resave" -msgstr "" +msgstr "ПерезапиÑати" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Debugger" -msgstr "" +msgstr "Зневаджувач" #: editor/plugins/script_editor_plugin.cpp msgid "" "Built-in scripts can only be edited when the scene they belong to is loaded" msgstr "" +"Вбудовані Ñкрипти можна змінити тільки тоді, коли завантажено Ñцену, до Ñкої " +"вони належать" #: editor/plugins/script_text_editor.cpp msgid "Only resources from filesystem can be dropped." -msgstr "" +msgstr "Можна перетÑгнути тільки реÑÑƒÑ€Ñ Ð· файлової ÑиÑтеми." #: editor/plugins/script_text_editor.cpp msgid "Pick Color" -msgstr "" +msgstr "Вибрати колір" #: editor/plugins/script_text_editor.cpp msgid "Convert Case" -msgstr "" +msgstr "Перемкнути регіÑтр" #: editor/plugins/script_text_editor.cpp msgid "Uppercase" -msgstr "" +msgstr "ВЕРХÐІЙ РЕГІСТР" #: editor/plugins/script_text_editor.cpp msgid "Lowercase" -msgstr "" +msgstr "нижній регіÑтр" #: editor/plugins/script_text_editor.cpp msgid "Capitalize" -msgstr "" +msgstr "З Великої" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Cut" -msgstr "" +msgstr "Вирізати" #: 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 "" +msgstr "Копіювати" #: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp #: scene/gui/text_edit.cpp msgid "Select All" -msgstr "" +msgstr "Вибрати вÑе" #: editor/plugins/script_text_editor.cpp msgid "Delete Line" -msgstr "" +msgstr "Видалити Ñ€Ñдок" #: editor/plugins/script_text_editor.cpp msgid "Indent Left" -msgstr "" +msgstr "Зменшити відÑтуп" #: editor/plugins/script_text_editor.cpp msgid "Indent Right" -msgstr "" +msgstr "Збільшити відÑтуп" #: editor/plugins/script_text_editor.cpp msgid "Toggle Comment" -msgstr "" +msgstr "Перемкнути коментар" #: editor/plugins/script_text_editor.cpp msgid "Clone Down" -msgstr "" +msgstr "Клонувати вниз" #: editor/plugins/script_text_editor.cpp msgid "Fold/Unfold Line" -msgstr "" +msgstr "Згорнути/розгорнути Ñ€Ñдок" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" -msgstr "" +msgstr "Згорнути вÑÑ– Ñ€Ñдки" #: editor/plugins/script_text_editor.cpp msgid "Unfold All Lines" -msgstr "" +msgstr "Розгорнути вÑÑ– Ñ€Ñдки" #: editor/plugins/script_text_editor.cpp msgid "Complete Symbol" -msgstr "" +msgstr "Завершити Ñимвол" #: editor/plugins/script_text_editor.cpp msgid "Trim Trailing Whitespace" -msgstr "" +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" -msgstr "" +msgstr "ÐвтовідÑтуп" #: editor/plugins/script_text_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Toggle Breakpoint" -msgstr "" +msgstr "Перемкнути точку зупинки" #: editor/plugins/script_text_editor.cpp msgid "Remove All Breakpoints" -msgstr "" +msgstr "Вилучити вÑÑ– точки зупинки" #: editor/plugins/script_text_editor.cpp msgid "Goto Next Breakpoint" -msgstr "" +msgstr "Перейти до наÑтупної точки зупинки" #: editor/plugins/script_text_editor.cpp msgid "Goto Previous Breakpoint" -msgstr "" +msgstr "Перейти до попередньої точки зупинки" #: editor/plugins/script_text_editor.cpp msgid "Convert To Uppercase" -msgstr "" +msgstr "Конвертувати у ВЕРХÐІЙ РЕГІСТР" #: editor/plugins/script_text_editor.cpp msgid "Convert To Lowercase" -msgstr "" +msgstr "Конвертувати в нижній регіÑтр" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" -msgstr "" +msgstr "Знайти попереднє" #: editor/plugins/script_text_editor.cpp msgid "Replace.." -msgstr "" +msgstr "Замінити.." #: editor/plugins/script_text_editor.cpp msgid "Goto Function.." -msgstr "" +msgstr "Перейти до функції.." #: editor/plugins/script_text_editor.cpp msgid "Goto Line.." -msgstr "" +msgstr "Перейти до Ñ€Ñдка.." #: editor/plugins/script_text_editor.cpp msgid "Contextual Help" -msgstr "" +msgstr "КонтекÑтна довідка" #: editor/plugins/shader_editor_plugin.cpp msgid "Shader" -msgstr "" +msgstr "Шейдер" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Constant" -msgstr "" +msgstr "Змінити чиÑлову Ñталу" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Constant" -msgstr "" +msgstr "Змінити векторну конÑтанту" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change RGB Constant" -msgstr "" +msgstr "Змінити Ñталу RGB" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Operator" -msgstr "" +msgstr "Змінити чиÑловий оператор" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Operator" -msgstr "" +msgstr "Змінити векторний оператор" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Scalar Operator" -msgstr "" +msgstr "Змінити векторно-чиÑловий оператор" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change RGB Operator" -msgstr "" +msgstr "Змінити оператор RGB" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Toggle Rot Only" -msgstr "" +msgstr "Перемкнути лише поворот" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Function" -msgstr "" +msgstr "Змінити ÑкалÑрну функцію" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Function" -msgstr "" +msgstr "Змінити векторну функцію" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Uniform" -msgstr "" +msgstr "Змінити чиÑлову одиницю" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Vec Uniform" -msgstr "" +msgstr "Змінити векторну одиницю" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change RGB Uniform" -msgstr "" +msgstr "Змінити одиницю RGB" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Default Value" -msgstr "" +msgstr "Змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° промовчаннÑм" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change XForm Uniform" -msgstr "" +msgstr "Змінити одиницю XForm" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Texture Uniform" -msgstr "" +msgstr "Змінити одиницю текÑтури" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Cubemap Uniform" -msgstr "" +msgstr "Змінити одиницю кубічної мапи" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Comment" -msgstr "" +msgstr "Змінити коментар" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Add/Remove to Color Ramp" -msgstr "" +msgstr "Додати до рампи кольорів або вилучити з неї" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Add/Remove to Curve Map" -msgstr "" +msgstr "Додати до карти кривих або вилучити з неї" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Modify Curve Map" -msgstr "" +msgstr "Змінити карту кривої" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Input Name" -msgstr "" +msgstr "Змінити назву входу" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Connect Graph Nodes" -msgstr "" +msgstr "З'єднати вузли графу" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Disconnect Graph Nodes" -msgstr "" +msgstr "Роз'єднати вузли графу" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Remove Shader Graph Node" -msgstr "" +msgstr "Вилучити вузол графу шейдера" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Move Shader Graph Node" -msgstr "" +msgstr "ПереÑунути вузол графу шейдера" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Duplicate Graph Node(s)" -msgstr "" +msgstr "Дублювати вузли графу" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Delete Shader Graph Node(s)" -msgstr "" +msgstr "Вилучити взули графу шейдера" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Error: Cyclic Connection Link" -msgstr "" +msgstr "Помилка: циклічне поÑиланнÑ" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Error: Missing Input Connections" -msgstr "" +msgstr "Помилка: пропущено вхідні з'єднаннÑ" #: editor/plugins/shader_graph_editor_plugin.cpp msgid "Add Shader Graph Node" -msgstr "" +msgstr "Додати вузол графу шейдера" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" -msgstr "" +msgstr "Ортогонально" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective" -msgstr "" +msgstr "ПерÑпектива" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Aborted." -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾." #: editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° віÑÑÑŽ X." #: editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° віÑÑÑŽ Y." #: editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° віÑÑÑŽ Z." #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð»Ð¾Ñ‰Ð¸Ð½Ð¸ переглÑду." #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " -msgstr "" +msgstr "МаÑштаб: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "" +msgstr "ПеренеÑеннÑ: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "" +msgid "Keying is disabled (no key inserted)." +msgstr "Ð’ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° вимкнено (ключ не вÑтавлено)." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "" +msgid "Animation Key Inserted." +msgstr "Ð’Ñтавлено ключ анімації." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "" +msgid "Objects Drawn" +msgstr "Ðамальовано об'єктів" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "" +msgid "Material Changes" +msgstr "Зміни матеріалу" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +msgid "Shader Changes" +msgstr "Зміни шейдерів" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "" +msgid "Surface Changes" +msgstr "Зміни поверхонь" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "" +msgid "Draw Calls" +msgstr "Виклики заÑобу малюваннÑ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "" +msgid "Vertices" +msgstr "Вершини" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "" +msgid "FPS" +msgstr "Кадри за Ñекунду" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "" +msgid "Top View." +msgstr "ВиглÑд згори." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "" +msgid "Bottom View." +msgstr "ВиглÑд знизу." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "" +msgid "Bottom" +msgstr "Знизу" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "" +msgid "Left View." +msgstr "ВиглÑд зліва." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "" +msgid "Left" +msgstr "Зліва" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "" +msgid "Right View." +msgstr "ВиглÑд Ñправа." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "" +msgid "Right" +msgstr "Справа" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "" +msgid "Front View." +msgstr "ВиглÑд Ñпереду." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "" +msgid "Front" +msgstr "Спереду" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "" +msgid "Rear View." +msgstr "ВиглÑд ззаду." #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "" +msgid "Rear" +msgstr "Ззаду" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" -msgstr "" +msgstr "ВирівнÑти з переглÑдом" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "OK :(" @@ -5162,91 +5169,91 @@ msgstr "Гаразд :(" #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "No parent to instance a child at." -msgstr "" +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 "Display Normal" -msgstr "" +msgstr "Ðормальний переглÑд" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Wireframe" -msgstr "" +msgstr "ПереглÑд каркаÑу" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Overdraw" -msgstr "" +msgstr "Режим проÑвічуваннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Display Unshaded" -msgstr "" +msgstr "ПереглÑд без тіней" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Environment" -msgstr "" +msgstr "ПереглÑд Ñередовища" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Gizmos" -msgstr "" +msgstr "ПереглÑд гаджетів" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Information" -msgstr "" +msgstr "ПереглÑд відомоÑтей" #: editor/plugins/spatial_editor_plugin.cpp msgid "View FPS" -msgstr "" +msgstr "ПереглÑд чаÑтоти кадрів" #: editor/plugins/spatial_editor_plugin.cpp msgid "Half Resolution" -msgstr "" +msgstr "Половина роздільноÑті" #: editor/plugins/spatial_editor_plugin.cpp msgid "Audio Listener" -msgstr "" +msgstr "ПроÑÐ»ÑƒÑ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Doppler Enable" -msgstr "" +msgstr "Ефект Доплера" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" -msgstr "" +msgstr "ОглÑд ліворуч" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Right" -msgstr "" +msgstr "ОглÑд праворуч" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Forward" -msgstr "" +msgstr "ОглÑд вперед" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Backwards" -msgstr "" +msgstr "ОглÑд назад" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Up" -msgstr "" +msgstr "ОглÑд вгору" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Down" -msgstr "" +msgstr "ОглÑд вниз" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" +msgstr "Коефіцієнт швидкоÑті оглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" -msgstr "" +msgstr "Вікно XForm" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +msgid "Select Mode (Q)" +msgstr "Режим Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5254,546 +5261,591 @@ msgid "" "Alt+Drag: Move\n" "Alt+RMB: Depth list selection" msgstr "" +"ПеретÑгуваннÑ: Обертати\n" +"Alt+ПеретÑгуваннÑ: ПереÑунути\n" +"Alt+Права кнопка: Вибір у ÑпиÑку за глибиною" #: editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode (W)" -msgstr "" +msgstr "Режим переÑÑƒÐ²Ð°Ð½Ð½Ñ (W)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode (E)" -msgstr "" +msgstr "Режим Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ (E)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode (R)" -msgstr "" +msgstr "Режим маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ (R)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" -msgstr "" +msgstr "Локальні координати" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Space Mode (%s)" -msgstr "" +msgstr "Режим локального проÑтору (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Mode (%s)" -msgstr "" +msgstr "Режим Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" -msgstr "" +msgstr "ВиглÑд знизу" #: editor/plugins/spatial_editor_plugin.cpp msgid "Top View" -msgstr "" +msgstr "ВиглÑд згори" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rear View" -msgstr "" +msgstr "ВиглÑд ззаду" #: editor/plugins/spatial_editor_plugin.cpp msgid "Front View" -msgstr "" +msgstr "ВиглÑд Ñпереду" #: editor/plugins/spatial_editor_plugin.cpp msgid "Left View" -msgstr "" +msgstr "ВиглÑд зліва" #: editor/plugins/spatial_editor_plugin.cpp msgid "Right View" -msgstr "" +msgstr "ВиглÑд Ñправа" #: editor/plugins/spatial_editor_plugin.cpp msgid "Switch Perspective/Orthogonal view" -msgstr "" +msgstr "Перемкнути переглÑд перÑпективи/ортогональний переглÑд" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "" +msgstr "Ð’Ñтавити ключ анімації" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "" +msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° центрі" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" -msgstr "" +msgstr "ФокуÑувати позначене" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align Selection With View" -msgstr "" +msgstr "ВирівнÑти позначене із переглÑдом" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Select" -msgstr "" +msgstr "ІнÑтрумент позначеннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Move" -msgstr "" +msgstr "ІнÑтрумент переÑуваннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Rotate" -msgstr "" +msgstr "ІнÑтрумент обертаннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Tool Scale" -msgstr "" +msgstr "ІнÑтрумент маÑштабуваннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" -msgstr "" +msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¾Ð³Ð»Ñду" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform" -msgstr "" +msgstr "ПеретвореннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." -msgstr "" +msgstr "Ðалаштувати прилипаннÑ..." #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog.." -msgstr "" +msgstr "Вікно перетвореннÑ..." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "" +msgstr "1 панель переглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports" -msgstr "" +msgstr "2 панелі переглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "" +msgstr "2 панелі переглÑду (альт.)" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "" +msgstr "3 панелі переглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "" +msgstr "3 панелі переглÑду (альт.)" #: editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" -msgstr "" +msgstr "4 панелі переглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" -msgstr "" +msgstr "ПереглÑд центра" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Grid" -msgstr "" +msgstr "ПереглÑд ґратки" #: editor/plugins/spatial_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Settings" -msgstr "" +msgstr "Параметри" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "ВидиміÑть каркаÑу гаджетів" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" -msgstr "" +msgstr "Параметри прилипаннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "" +msgstr "ПереÑувне прилипаннÑ:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "" +msgstr "Обертальне Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ (град.):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "" +msgstr "МаÑштабувальне Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ (%):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "" +msgstr "Параметри панелі переглÑду" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" -msgstr "" +msgstr "Поле зору перÑпективи (град.):" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" -msgstr "" +msgstr "Ближнє Z переглÑду:" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Far:" -msgstr "" +msgstr "Дальнє Z переглÑду:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Change" -msgstr "" +msgstr "Зміна перетвореннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Translate:" -msgstr "" +msgstr "ПеренеÑеннÑ:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate (deg.):" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ (град.):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale (ratio):" -msgstr "" +msgstr "МаÑштаб (коеф.):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Type" -msgstr "" +msgstr "Тип перетвореннÑ" #: editor/plugins/spatial_editor_plugin.cpp msgid "Pre" -msgstr "" +msgstr "До" #: editor/plugins/spatial_editor_plugin.cpp msgid "Post" -msgstr "" +msgstr "ПіÑлÑ" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" -msgstr "" +msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑÑƒÑ€Ñ ÐºÐ°Ð´Ñ€Ñƒ!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Frame" -msgstr "" +msgstr "Додати кадр" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Resource clipboard is empty or not a texture!" -msgstr "" +msgstr "Буфер реÑурÑів порожній або не міÑтить текÑтури!" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Paste Frame" -msgstr "" +msgstr "Ð’Ñтавити кадр" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Empty" -msgstr "" +msgstr "Додати порожній" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "" +msgstr "Змінити цикл анімації" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation FPS" -msgstr "" +msgstr "Змінити чаÑтоту кадрів анімації" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "(empty)" -msgstr "" +msgstr "(порожньо)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animations" -msgstr "" +msgstr "Ðнімації" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" -msgstr "" +msgstr "ЧаÑтота (кадри за Ñек.):" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "" +msgstr "Зациклити" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames" -msgstr "" +msgstr "Кадри анімації" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" -msgstr "" +msgstr "Ð’Ñтавити порожній (до)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (After)" -msgstr "" +msgstr "Ð’Ñтавити порожній (піÑлÑ)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move (Before)" -msgstr "" +msgstr "ПереÑунути (до)" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Move (After)" -msgstr "" +msgstr "ПереÑунути (піÑлÑ)" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "Кадри Ñпрайта" #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" -msgstr "" +msgstr "ПереглÑд StyleBox:" + +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "Style Box" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" -msgstr "" +msgstr "Ð’Ñтановити прÑмокутник облаÑті" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Snap Mode:" -msgstr "" +msgstr "Режим прилипаннÑ:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "<None>" -msgstr "" +msgstr "<Ðемає>" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Pixel Snap" -msgstr "" +msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ пікÑелів" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Snap" -msgstr "" +msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ ґратки" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Auto Slice" -msgstr "" +msgstr "ÐвтонарізаннÑ" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" -msgstr "" +msgstr "ЗÑув:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" -msgstr "" +msgstr "Крок:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" -msgstr "" +msgstr "ВідокремленнÑ:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Texture Region" -msgstr "" +msgstr "ОблаÑть текÑтури" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Texture Region Editor" -msgstr "" +msgstr "Редактор облаÑті текÑтури" #: editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ тему до файла:" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All Items" -msgstr "" +msgstr "Додати уÑÑ– елементи" #: editor/plugins/theme_editor_plugin.cpp msgid "Add All" -msgstr "" +msgstr "Додати уÑÑ–" #: editor/plugins/theme_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Item" -msgstr "" +msgstr "Вилучити елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All Items" -msgstr "" +msgstr "Вилучити уÑÑ– елементи" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove All" -msgstr "" +msgstr "Вилучити уÑÑ–" #: editor/plugins/theme_editor_plugin.cpp msgid "Edit theme.." -msgstr "" +msgstr "Редагувати тему..." #: editor/plugins/theme_editor_plugin.cpp msgid "Theme editing menu." -msgstr "" +msgstr "Меню Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸." #: editor/plugins/theme_editor_plugin.cpp msgid "Add Class Items" -msgstr "" +msgstr "Додати елементи клаÑу" #: editor/plugins/theme_editor_plugin.cpp msgid "Remove Class Items" -msgstr "" +msgstr "Вилучити елементи клаÑу" #: editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Template" -msgstr "" +msgstr "Створити порожній шаблон" #: editor/plugins/theme_editor_plugin.cpp msgid "Create Empty Editor Template" -msgstr "" +msgstr "Створити порожній шаблон редактора" #: editor/plugins/theme_editor_plugin.cpp msgid "Create From Current Editor Theme" -msgstr "" +msgstr "Створити на оÑнові поточної теми редактора" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" -msgstr "" +msgstr "Варіант 1" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio2" -msgstr "" +msgstr "Варіант 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "" +msgstr "Елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "" +msgstr "Позначити елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "" +msgstr "Позначений елемент" #: editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "Має" #: editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "Багато" #: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp msgid "Options" -msgstr "" +msgstr "Параметрів" #: editor/plugins/theme_editor_plugin.cpp msgid "Have,Many,Several,Options!" -msgstr "" +msgstr "Має,Багато,Декілька,Параметрів!" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "" +msgstr "Вкладка 1" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "" +msgstr "Вкладка 2" #: editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "" +msgstr "Вкладка 3" #: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp #: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp msgid "Type:" -msgstr "" +msgstr "Тип:" #: editor/plugins/theme_editor_plugin.cpp msgid "Data Type:" -msgstr "" +msgstr "Тип даних:" #: editor/plugins/theme_editor_plugin.cpp msgid "Icon" -msgstr "" +msgstr "Піктограма" #: editor/plugins/theme_editor_plugin.cpp msgid "Style" -msgstr "" +msgstr "Стиль" #: editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "" +msgstr "Шрифт" #: editor/plugins/theme_editor_plugin.cpp msgid "Color" -msgstr "" +msgstr "Колір" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "Тема" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" -msgstr "" +msgstr "Витерти позначене" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" -msgstr "" +msgstr "Ðамалювати карту плиток" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Line Draw" -msgstr "" +msgstr "Ðамалювати лінію" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rectangle Paint" -msgstr "" +msgstr "Ðамалювати прÑмокутник" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Bucket Fill" -msgstr "" +msgstr "ЗалиттÑ" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase TileMap" -msgstr "" +msgstr "Витерти карту плиток" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase selection" -msgstr "" +msgstr "Витерти позначене" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Find tile" -msgstr "" +msgstr "Знайти плитку" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" -msgstr "" +msgstr "ТранÑпонувати" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Mirror X" -msgstr "" +msgstr "Віддзеркалити за X" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Mirror Y" -msgstr "" +msgstr "Віддзеркалити за Y" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint Tile" -msgstr "" +msgstr "Ðамалювати плитку" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Pick Tile" -msgstr "" +msgstr "Вибрати плитку" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 0 градуÑів" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 90 degrees" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 90 градуÑів" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 180 degrees" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 180 градуÑів" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 270 degrees" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 270 градуÑів" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Could not find tile:" -msgstr "" +msgstr "Ðеможливо знайти плитку:" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Item name or ID:" -msgstr "" +msgstr "Ðазва або ідентифікатор елемента:" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene?" -msgstr "" +msgstr "Створити зі Ñцени?" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" -msgstr "" +msgstr "Об'єднати зі Ñцени?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "Ðабір тайлів.." +msgstr "Ðабір плитки" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "" +msgstr "Створити зі Ñцени" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "" +msgstr "Об'єднати зі Ñцени" #: editor/plugins/tile_set_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Error" +msgstr "Помилка" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" +"Виберіть підплитку Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñк піктограми. Її також буде викориÑтано " +"Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… прив'Ñзок у режимі автоплитки." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." msgstr "" +"Ліва кнопка: вÑтановити.\n" +"Права кнопка: знÑти." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "Вибрати поточну редаговану вкладену плитку." + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "Позначте підплитку Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ Ñ—Ñ— пріоритетноÑті." #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" @@ -5801,199 +5853,219 @@ msgstr "СкаÑувати" #: editor/project_export.cpp msgid "Runnable" -msgstr "" +msgstr "Ðктивний" #: editor/project_export.cpp msgid "Delete patch '%s' from list?" -msgstr "" +msgstr "Вилучити латку «%s» зі ÑпиÑку?" #: editor/project_export.cpp msgid "Delete preset '%s'?" -msgstr "" +msgstr "Вилучити набір «%s»?" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted: " msgstr "" +"Ðе виÑтачає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ або шаблони пошкоджено: " #: editor/project_export.cpp msgid "Presets" -msgstr "" +msgstr "Ðабори" #: editor/project_export.cpp editor/project_settings_editor.cpp msgid "Add.." -msgstr "" +msgstr "Додати..." #: editor/project_export.cpp msgid "Resources" -msgstr "" +msgstr "РеÑурÑи" #: editor/project_export.cpp msgid "Export all resources in the project" -msgstr "" +msgstr "ЕкÑпортувати уÑÑ– реÑурÑи у проекті" #: editor/project_export.cpp msgid "Export selected scenes (and dependencies)" -msgstr "" +msgstr "ЕкÑпортувати позначені реÑурÑи (Ñ– залежноÑті)" #: editor/project_export.cpp msgid "Export selected resources (and dependencies)" -msgstr "" +msgstr "ЕкÑпортувати позначені реÑурÑи (Ñ– залежноÑті)" #: editor/project_export.cpp msgid "Export Mode:" -msgstr "" +msgstr "Режим екÑпортуваннÑ:" #: editor/project_export.cpp msgid "Resources to export:" -msgstr "" +msgstr "ЕкÑпортовані реÑурÑи:" #: editor/project_export.cpp msgid "" "Filters to export non-resource files (comma separated, e.g: *.json, *.txt)" msgstr "" +"Фільтри екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², Ñкі не міÑÑ‚Ñть реÑурÑів (з відокремленнÑм " +"комами, приклад: *.json, *.txt)" #: editor/project_export.cpp msgid "" "Filters to exclude files from project (comma separated, e.g: *.json, *.txt)" msgstr "" +"Фільтри Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з проекту (з відокремленнÑм комами, приклад: *." +"json, *.txt)" #: editor/project_export.cpp msgid "Patches" -msgstr "" +msgstr "Латки" #: editor/project_export.cpp msgid "Make Patch" -msgstr "" +msgstr "Створити латку" #: editor/project_export.cpp msgid "Features" -msgstr "" +msgstr "МожливоÑті" #: editor/project_export.cpp msgid "Custom (comma-separated):" -msgstr "" +msgstr "Ðетипове (з відокремленнÑм комами):" #: editor/project_export.cpp msgid "Feature List:" -msgstr "" +msgstr "СпиÑок можливоÑтей:" #: editor/project_export.cpp msgid "Export PCK/Zip" -msgstr "" +msgstr "ЕкÑпортувати PCK/Zip" #: editor/project_export.cpp msgid "Export templates for this platform are missing:" -msgstr "" +msgstr "Ðемає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи:" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted:" msgstr "" +"Ðе виÑтачає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ або шаблони пошкоджено:" #: editor/project_export.cpp msgid "Export With Debug" -msgstr "" +msgstr "ЕкÑпортувати із діагноÑтикою" #: editor/project_manager.cpp msgid "The path does not exist." -msgstr "" +msgstr "ШлÑху не Ñ–Ñнує." #: editor/project_manager.cpp msgid "Please choose a 'project.godot' file." -msgstr "" +msgstr "Будь лаÑка, виберіть файл «project.godot»." #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "" +msgid "Please choose an empty folder." +msgstr "Будь лаÑка, виберіть порожню теку." #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." -msgstr "" +msgstr "Будь лаÑка, виберіть теку, у Ñкій не міÑтитьÑÑ Ñ„Ð°Ð¹Ð»Ð° «project.godot»." #: editor/project_manager.cpp msgid "Imported Project" -msgstr "" +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 "" +msgstr "Вам варто дати назву вашому проекту." #: editor/project_manager.cpp msgid "Invalid project path (changed anything?)." -msgstr "" +msgstr "Ðекоректний шлÑÑ… до проекту (щоÑÑŒ змінилоÑÑ?)." #: editor/project_manager.cpp msgid "Couldn't get project.godot in project path." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot з каталогу проекту." #: editor/project_manager.cpp msgid "Couldn't edit project.godot in project path." -msgstr "" +msgstr "Ðе вдалоÑÑ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ñ‚Ð¸ project.godot у каталозі проекту." #: editor/project_manager.cpp msgid "Couldn't create project.godot in project path." -msgstr "" +msgstr "Ðе вдалоÑÑ Ñтворити project.godot у каталозі проекту." #: editor/project_manager.cpp msgid "The following files failed extraction from package:" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ такі файли з пакунка:" #: editor/project_manager.cpp msgid "Rename Project" -msgstr "" +msgstr "Перейменувати проект" #: editor/project_manager.cpp msgid "Couldn't get project.godot in the project path." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot у каталозі проекту." #: editor/project_manager.cpp msgid "New Game Project" -msgstr "" +msgstr "Ðовий проект гри" #: editor/project_manager.cpp msgid "Import Existing Project" -msgstr "" +msgstr "Імпортувати наÑвний проект" + +#: editor/project_manager.cpp +msgid "Import & Edit" +msgstr "Імпортувати та редагувати" #: editor/project_manager.cpp msgid "Create New Project" -msgstr "" +msgstr "Створити новий проект" + +#: editor/project_manager.cpp +msgid "Create & Edit" +msgstr "Створити та змінити" #: editor/project_manager.cpp msgid "Install Project:" -msgstr "" +msgstr "Ð’Ñтановити проект:" + +#: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "Ð’Ñтановити та змінити" #: editor/project_manager.cpp msgid "Project Name:" -msgstr "" +msgstr "Ðазва проекту:" #: editor/project_manager.cpp msgid "Create folder" -msgstr "" +msgstr "Створити теку" #: editor/project_manager.cpp msgid "Project Path:" -msgstr "" +msgstr "ШлÑÑ… проекту:" #: editor/project_manager.cpp msgid "Browse" -msgstr "" - -#: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" +msgstr "Вибрати" #: editor/project_manager.cpp msgid "Unnamed Project" -msgstr "" +msgstr "Проект без назви" #: editor/project_manager.cpp msgid "Can't open project" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ проект" #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" -msgstr "" +msgstr "Ви Ñправді хочете відкрити декілька проектів одразу?" #: editor/project_manager.cpp msgid "" @@ -6001,52 +6073,66 @@ msgid "" "Please edit the project and set the main scene in \"Project Settings\" under " "the \"Application\" category." msgstr "" +"Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити проект: не визначено головної Ñцени.\n" +"Будь лаÑка, змініть проект, вÑтановивши головну Ñцену у категорії «Програма» " +"Ñторінки «Параметри проекту»." #: 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" +"Будь лаÑка, змініть проект так, щоб увімкнути початкове імпортуваннÑ." #: editor/project_manager.cpp msgid "Are you sure to run more than one project?" -msgstr "" +msgstr "Ви Ñправді хочете запуÑтити декілька проектів одночаÑно?" #: editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" -msgstr "" +msgstr "Вилучити проект зі ÑпиÑку? (ВміÑÑ‚ теки не буде змінено)" #: editor/project_manager.cpp msgid "" "Language changed.\n" "The UI will update next time the editor or project manager starts." msgstr "" +"Змінено мову.\n" +"Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±ÑƒÐ´Ðµ оновлено під Ñ‡Ð°Ñ Ð½Ð°Ñтупного запуÑку редактора або заÑобу " +"ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°Ð¼Ð¸." #: editor/project_manager.cpp msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" msgstr "" +"Ви наказали розпочати ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ %s тек у пошуках наÑвних проектів Godot. " +"Підтверджуєте ÑкануваннÑ?" + +#: editor/project_manager.cpp +msgid "Project Manager" +msgstr "Керівник проекту" #: editor/project_manager.cpp msgid "Project List" -msgstr "" +msgstr "СпиÑок проектів" #: editor/project_manager.cpp msgid "Scan" -msgstr "" +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 "Templates" -msgstr "" +msgstr "Шаблони" #: editor/project_manager.cpp msgid "Exit" @@ -6065,6 +6151,8 @@ msgid "" "You don't currently have any projects.\n" "Would you like to explore the official example projects in the Asset Library?" msgstr "" +"Зараз проектів немає.\n" +"Хочете вивчити проекти офіційних прикладів з бібліотеки даних?" #: editor/project_settings_editor.cpp msgid "Key " @@ -6072,11 +6160,11 @@ msgstr "Клавіша " #: editor/project_settings_editor.cpp msgid "Joy Button" -msgstr "" +msgstr "Кнопка джойÑтика" #: editor/project_settings_editor.cpp msgid "Joy Axis" -msgstr "" +msgstr "Ð’Ñ–ÑÑŒ джойÑтика" #: editor/project_settings_editor.cpp msgid "Mouse Button" @@ -6084,31 +6172,31 @@ msgstr "Кнопка миші" #: editor/project_settings_editor.cpp msgid "Invalid action (anything goes but '/' or ':')." -msgstr "" +msgstr "Ðекоректна Ð´Ñ–Ñ (можна уÑе, окрім «/» або «:»)." #: editor/project_settings_editor.cpp msgid "Action '%s' already exists!" -msgstr "" +msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ñ–Ñ— «%s» вже Ñ–Ñнує!" #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" -msgstr "" +msgstr "Перейменувати подію за вхідною дією" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" -msgstr "" +msgstr "Додати подію за вхідною дією" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "" +msgstr "Shift+" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Alt+" -msgstr "" +msgstr "Alt+" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Control+" -msgstr "" +msgstr "Ctrl+" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key.." @@ -6116,27 +6204,27 @@ msgstr "ÐатиÑніть клавішу,..." #: editor/project_settings_editor.cpp msgid "Mouse Button Index:" -msgstr "" +msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ миші:" #: editor/project_settings_editor.cpp msgid "Left Button" -msgstr "" +msgstr "Ліва кнопка" #: editor/project_settings_editor.cpp msgid "Right Button" -msgstr "" +msgstr "Права кнопка" #: editor/project_settings_editor.cpp msgid "Middle Button" -msgstr "" +msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°" #: editor/project_settings_editor.cpp msgid "Wheel Up Button" -msgstr "" +msgstr "Кнопка коліщатка вгору" #: editor/project_settings_editor.cpp msgid "Wheel Down Button" -msgstr "" +msgstr "Кнопка коліщатка вниз" #: editor/project_settings_editor.cpp msgid "Button 6" @@ -6155,93 +6243,88 @@ msgid "Button 9" msgstr "Кнопка 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" -msgstr "" +msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð²Ñ–ÑÑ– джойÑтика:" #: editor/project_settings_editor.cpp msgid "Axis" -msgstr "" +msgstr "Ð’Ñ–ÑÑŒ" #: editor/project_settings_editor.cpp msgid "Joypad Button Index:" -msgstr "" +msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ джойÑтика:" #: editor/project_settings_editor.cpp msgid "Erase Input Action" -msgstr "" +msgstr "Витерти Ð·Ð°Ð¿Ð¸Ñ Ð´Ñ–Ñ—" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" -msgstr "" +msgstr "Витерти подію за дією" #: editor/project_settings_editor.cpp msgid "Add Event" -msgstr "" +msgstr "Додати подію" #: editor/project_settings_editor.cpp msgid "Device" -msgstr "" +msgstr "ПриÑтрій" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "" +msgstr "Кнопка" #: editor/project_settings_editor.cpp msgid "Left Button." -msgstr "" +msgstr "Ліва кнопка." #: editor/project_settings_editor.cpp msgid "Right Button." -msgstr "" +msgstr "Права кнопка." #: editor/project_settings_editor.cpp msgid "Middle Button." -msgstr "" +msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°." #: editor/project_settings_editor.cpp msgid "Wheel Up." -msgstr "" +msgstr "Коліщатко вгору." #: editor/project_settings_editor.cpp msgid "Wheel Down." -msgstr "" +msgstr "Коліщатко вниз." #: editor/project_settings_editor.cpp msgid "Add Global Property" -msgstr "" +msgstr "Додати загальну влаÑтивіÑть" #: editor/project_settings_editor.cpp msgid "Select a setting item first!" -msgstr "" +msgstr "Спочатку виберіть елемент параметра!" #: editor/project_settings_editor.cpp msgid "No property '%s' exists." -msgstr "" +msgstr "ВлаÑтивоÑті «%s» не Ñ–Ñнує." #: editor/project_settings_editor.cpp msgid "Setting '%s' is internal, and it can't be deleted." -msgstr "" +msgstr "Параметр «%s» Ñ” внутрішнім. Його не можна вилучати." #: editor/project_settings_editor.cpp msgid "Delete Item" -msgstr "" +msgstr "Вилучити елемент" #: editor/project_settings_editor.cpp msgid "Can't contain '/' or ':'" -msgstr "" +msgstr "Ðе може міÑтити «/» або «:»" #: editor/project_settings_editor.cpp msgid "Already existing" -msgstr "" +msgstr "Вже Ñ–Ñнує" #: editor/project_settings_editor.cpp msgid "Add Input Action" -msgstr "" +msgstr "Додати дію" #: editor/project_settings_editor.cpp msgid "Error saving settings." @@ -6249,11 +6332,11 @@ msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ." #: editor/project_settings_editor.cpp msgid "Settings saved OK." -msgstr "" +msgstr "Параметри уÑпішно збережено." #: editor/project_settings_editor.cpp msgid "Override for Feature" -msgstr "" +msgstr "Перевизначено Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті" #: editor/project_settings_editor.cpp msgid "Add Translation" @@ -6261,67 +6344,67 @@ msgstr "Додати переклад" #: editor/project_settings_editor.cpp msgid "Remove Translation" -msgstr "" +msgstr "Вилучити переклад" #: editor/project_settings_editor.cpp msgid "Add Remapped Path" -msgstr "" +msgstr "Додати переÑпрÑмований шлÑÑ…" #: editor/project_settings_editor.cpp msgid "Resource Remap Add Remap" -msgstr "" +msgstr "ПереÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу додає переÑпрÑмуваннÑ" #: editor/project_settings_editor.cpp msgid "Change Resource Remap Language" -msgstr "" +msgstr "Змінити мову переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap" -msgstr "" +msgstr "Вилучити переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу" #: editor/project_settings_editor.cpp msgid "Remove Resource Remap Option" -msgstr "" +msgstr "Вилучити параметр переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter" -msgstr "" +msgstr "Змінено фільтр локалі" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter Mode" -msgstr "" +msgstr "Змінено режим Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ñ–" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" -msgstr "" +msgstr "Параметри проекту (project.godot)" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" -msgstr "" +msgstr "Загальне" #: editor/project_settings_editor.cpp editor/property_editor.cpp msgid "Property:" -msgstr "" +msgstr "ВлаÑтивіÑть:" #: editor/project_settings_editor.cpp msgid "Override For.." -msgstr "" +msgstr "Перевизначити на..." #: editor/project_settings_editor.cpp msgid "Input Map" -msgstr "" +msgstr "Карта введеннÑ" #: editor/project_settings_editor.cpp msgid "Action:" -msgstr "" +msgstr "ДіÑ:" #: editor/project_settings_editor.cpp msgid "Device:" -msgstr "" +msgstr "ПриÑтрій:" #: editor/project_settings_editor.cpp msgid "Index:" -msgstr "" +msgstr "ІндекÑ:" #: editor/project_settings_editor.cpp msgid "Localization" @@ -6337,67 +6420,67 @@ msgstr "Переклади:" #: editor/project_settings_editor.cpp msgid "Remaps" -msgstr "" +msgstr "ПереÑпрÑмуваннÑ" #: editor/project_settings_editor.cpp msgid "Resources:" -msgstr "" +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 msgid "Show only selected locales" -msgstr "" +msgstr "Показати лише позначені локалі" #: editor/project_settings_editor.cpp msgid "Filter mode:" -msgstr "" +msgstr "Режим фільтруваннÑ:" #: editor/project_settings_editor.cpp msgid "Locales:" -msgstr "" +msgstr "Локалі:" #: editor/project_settings_editor.cpp msgid "AutoLoad" -msgstr "" +msgstr "ÐвтозавантаженнÑ" #: editor/property_editor.cpp msgid "Pick a Viewport" -msgstr "" +msgstr "Виберіть панель переглÑду" #: editor/property_editor.cpp msgid "Ease In" -msgstr "" +msgstr "Перейти в" #: editor/property_editor.cpp msgid "Ease Out" -msgstr "" +msgstr "Перейти з" #: editor/property_editor.cpp msgid "Zero" -msgstr "" +msgstr "Ðуль" #: editor/property_editor.cpp msgid "Easing In-Out" -msgstr "" +msgstr "Перейти у-з" #: editor/property_editor.cpp msgid "Easing Out-In" -msgstr "" +msgstr "Перейти з-у" #: editor/property_editor.cpp msgid "File.." @@ -6405,15 +6488,15 @@ msgstr "Файл..." #: editor/property_editor.cpp msgid "Dir.." -msgstr "" +msgstr "Каталог..." #: editor/property_editor.cpp msgid "Assign" -msgstr "" +msgstr "Призначити" #: editor/property_editor.cpp msgid "Select Node" -msgstr "" +msgstr "Позначити вузол" #: editor/property_editor.cpp msgid "New Script" @@ -6421,91 +6504,92 @@ msgstr "Ðовий Ñкрипт" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Ðовий %s" #: editor/property_editor.cpp msgid "Make Unique" -msgstr "" +msgstr "Зробити унікальним" #: editor/property_editor.cpp msgid "Show in File System" -msgstr "" +msgstr "Показати в файловій ÑиÑтемі" #: editor/property_editor.cpp msgid "Convert To %s" -msgstr "" +msgstr "Перетворити на %s" #: editor/property_editor.cpp msgid "Error loading file: Not a resource!" -msgstr "" +msgstr "Помилка при завантаженні файла: не Ñ” реÑурÑом!" #: editor/property_editor.cpp msgid "Selected node is not a Viewport!" -msgstr "" +msgstr "Позначений вузол не Ñ” панеллю переглÑду!" #: editor/property_editor.cpp msgid "Pick a Node" -msgstr "" +msgstr "Вибрати вузол" #: editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "" +msgstr "Біт %d, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %d." #: editor/property_editor.cpp msgid "On" -msgstr "" +msgstr "Увімкнено" #: editor/property_editor.cpp msgid "[Empty]" -msgstr "" +msgstr "[Порожньо]" #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Set" -msgstr "" +msgstr "Ð’Ñтановити" #: editor/property_editor.cpp msgid "Properties:" -msgstr "" +msgstr "ВлаÑтивоÑті:" #: editor/property_selector.cpp msgid "Select Property" -msgstr "" +msgstr "Вибір влаÑтивоÑті" #: editor/property_selector.cpp msgid "Select Virtual Method" -msgstr "" +msgstr "Вибір віртуального методу" #: editor/property_selector.cpp msgid "Select Method" -msgstr "" +msgstr "Вибір методу" #: editor/pvrtc_compress.cpp msgid "Could not execute PVRTC tool:" -msgstr "" +msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ інÑтрумент PVRTC:" #: editor/pvrtc_compress.cpp msgid "Can't load back converted image using PVRTC tool:" msgstr "" +"Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ перетворене Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою заÑобу PVRTC:" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent Node" -msgstr "" +msgstr "Змінити батьківÑький вузол" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "" +msgstr "Змінити Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ (вибрати новий батьківÑький вузол):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" -msgstr "" +msgstr "Зберегти загальне перетвореннÑ" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "" +msgstr "Змінити батьківÑький" #: editor/run_settings_dialog.cpp msgid "Run Mode:" -msgstr "" +msgstr "Режим виконаннÑ:" #: editor/run_settings_dialog.cpp msgid "Current Scene" @@ -6513,15 +6597,15 @@ msgstr "Поточна Ñцена" #: editor/run_settings_dialog.cpp msgid "Main Scene" -msgstr "" +msgstr "Головна Ñцена" #: editor/run_settings_dialog.cpp msgid "Main Scene Arguments:" -msgstr "" +msgstr "Ðргументи головної Ñцени:" #: editor/run_settings_dialog.cpp msgid "Scene Run Settings" -msgstr "" +msgstr "Параметри запуÑку Ñцени" #: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp #: scene/gui/dialogs.cpp @@ -6530,53 +6614,51 @@ 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" -msgstr "" - -#: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Гаразд" +msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби завантажити Ñцену з %s" #: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." msgstr "" +"Ðе можна Ñтворити екземплÑÑ€ Ñцени «%s», оÑкільки поточна Ñцена Ñ–Ñнує у " +"одному з Ñ—Ñ— вузлів." #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" -msgstr "" +msgstr "Сцени екземплÑра" #: editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." -msgstr "" +msgstr "Цю операцію не може бути виконано над коренем дерева." #: editor/scene_tree_dock.cpp msgid "Move Node In Parent" -msgstr "" +msgstr "ПереÑунути вузол у батьківÑький" #: editor/scene_tree_dock.cpp msgid "Move Nodes In Parent" -msgstr "" +msgstr "ПереÑунути вузли у батьківÑький" #: editor/scene_tree_dock.cpp msgid "Duplicate Node(s)" -msgstr "" +msgstr "Дублювати вузли" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" -msgstr "" +msgstr "Вилучити вузли?" #: editor/scene_tree_dock.cpp msgid "Can not perform with the root node." -msgstr "" +msgstr "Ðе можна виконувати із кореневим вузлом." #: editor/scene_tree_dock.cpp msgid "This operation can't be done on instanced scenes." -msgstr "" +msgstr "Цю дію не можна виконувати над Ñценами з екземплÑрами." #: editor/scene_tree_dock.cpp msgid "Save New Scene As.." @@ -6584,37 +6666,39 @@ msgstr "Зберегти нову Ñцену Ñк..." #: editor/scene_tree_dock.cpp msgid "Editable Children" -msgstr "" +msgstr "Редагований дочірній елемент" #: editor/scene_tree_dock.cpp msgid "Load As Placeholder" -msgstr "" +msgstr "Завантажити Ñк заповнювач" #: editor/scene_tree_dock.cpp msgid "Discard Instancing" -msgstr "" +msgstr "Відкинути екземплÑри" #: editor/scene_tree_dock.cpp msgid "Makes Sense!" -msgstr "" +msgstr "У цьому Ñ” ÑенÑ!" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" -msgstr "" +msgstr "Ðе можна працювати із вузлами зі Ñторонньої Ñцени!" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes the current scene inherits from!" -msgstr "" +msgstr "Ðе можна працювати з вузлами, Ñпадкоємцем Ñких Ñ” поточна Ñцена!" #: editor/scene_tree_dock.cpp msgid "Remove Node(s)" -msgstr "" +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." @@ -6622,15 +6706,15 @@ msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñцени." #: editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." -msgstr "" +msgstr "Помилка під Ñ‡Ð°Ñ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñцени Ð´Ð»Ñ Ñ—Ñ— збереженнÑ." #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +msgid "Sub-Resources" +msgstr "ПідреÑурÑи" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" -msgstr "" +msgstr "УÑунути уÑпадкуваннÑ" #: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp msgid "Open in Editor" @@ -6638,35 +6722,35 @@ msgstr "Відкрити в редакторі" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" -msgstr "" +msgstr "Вилучити вузли" #: editor/scene_tree_dock.cpp msgid "Add Child Node" -msgstr "" +msgstr "Додати дочірній вузол" #: editor/scene_tree_dock.cpp msgid "Instance Child Scene" -msgstr "" +msgstr "Створити екземплÑÑ€ дочірньої Ñцени" #: editor/scene_tree_dock.cpp msgid "Change Type" -msgstr "" +msgstr "Змінити тип" #: editor/scene_tree_dock.cpp msgid "Attach Script" -msgstr "" +msgstr "Долучити Ñкрипт" #: editor/scene_tree_dock.cpp msgid "Clear Script" -msgstr "" +msgstr "Вилучити Ñкрипт" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" -msgstr "" +msgstr "Об'єднати зі Ñцени" #: editor/scene_tree_dock.cpp msgid "Save Branch as Scene" -msgstr "" +msgstr "Зберегти гілку Ñк Ñцену" #: editor/scene_tree_dock.cpp msgid "Copy Node Path" @@ -6674,79 +6758,87 @@ msgstr "Копіювати вузол шлÑху" #: editor/scene_tree_dock.cpp msgid "Delete (No Confirm)" -msgstr "" +msgstr "Вилучити (без підтвердженнÑ)" #: editor/scene_tree_dock.cpp msgid "Add/Create a New Node" -msgstr "" +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 "Filter nodes" -msgstr "" +msgstr "Фільтрувати вузли" #: editor/scene_tree_dock.cpp msgid "Attach a new or existing script for the selected node." -msgstr "" +msgstr "Долучити новий або наÑвний Ñкрипт до позначеного вузла." #: editor/scene_tree_dock.cpp msgid "Clear a script for the selected node." -msgstr "" +msgstr "Вилучити Ñкрипт Ð´Ð»Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ вузла." #: editor/scene_tree_dock.cpp msgid "Remote" -msgstr "" +msgstr "Віддалений" #: editor/scene_tree_dock.cpp msgid "Local" -msgstr "" +msgstr "Локальний" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance? (No Undo!)" -msgstr "" +msgstr "Вилучити уÑпадковуваннÑ? (Без можливоÑті ÑкаÑувати!)" #: editor/scene_tree_dock.cpp msgid "Clear!" -msgstr "" +msgstr "Вилучено!" #: editor/scene_tree_editor.cpp msgid "Toggle Spatial Visible" -msgstr "" +msgstr "Перемкнути проÑторову видиміÑть" #: editor/scene_tree_editor.cpp msgid "Toggle CanvasItem Visible" -msgstr "" +msgstr "Перемкнути видиміÑть CanvasItem" #: editor/scene_tree_editor.cpp msgid "Node configuration warning:" -msgstr "" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÑƒÐ·Ð»Ð°:" #: editor/scene_tree_editor.cpp msgid "" "Node has connection(s) and group(s)\n" "Click to show signals dock." msgstr "" +"Вузол міÑтить з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ– групи\n" +"Клацніть, щоб переглÑнути панель Ñигналів." #: editor/scene_tree_editor.cpp msgid "" "Node has connections.\n" "Click to show signals dock." msgstr "" +"Вузол міÑтить з'єднаннÑ\n" +"Клацніть, щоб переглÑнути панель Ñигналів." #: editor/scene_tree_editor.cpp msgid "" "Node is in group(s).\n" "Click to show groups dock." msgstr "" +"Вузол належить групам.\n" +"Клацніть, щоб переглÑнути панель груп." #: editor/scene_tree_editor.cpp msgid "Instance:" -msgstr "" +msgstr "ЕкземплÑÑ€:" #: editor/scene_tree_editor.cpp msgid "Open script" @@ -6765,14 +6857,16 @@ msgid "" "Children are not selectable.\n" "Click to make selectable" msgstr "" +"Дочірні об'єкти не можна позначити.\n" +"Клацніть, щоб зробити Ñ—Ñ… придатними до позначеннÑ" #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" -msgstr "" +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" @@ -6780,11 +6874,11 @@ msgstr "Перейменувати вузол" #: editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" -msgstr "" +msgstr "Дерево Ñцени (вузли):" #: editor/scene_tree_editor.cpp msgid "Node Configuration Warning!" -msgstr "" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÑƒÐ·Ð»Ñ–Ð²!" #: editor/scene_tree_editor.cpp msgid "Select a Node" @@ -6792,15 +6886,15 @@ msgstr "Виберіть вузол" #: editor/script_create_dialog.cpp msgid "Error loading template '%s'" -msgstr "" +msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби завантажити шаблон «%s»" #: editor/script_create_dialog.cpp msgid "Error - Could not create script in filesystem." -msgstr "" +msgstr "Помилка: не вдалоÑÑ Ñтворити Ñкрипт у файловій ÑиÑтемі." #: editor/script_create_dialog.cpp msgid "Error loading script from %s" -msgstr "" +msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби завантажити Ñкрипт з %s" #: editor/script_create_dialog.cpp msgid "N/A" @@ -6808,31 +6902,31 @@ msgstr "Ð/З" #: editor/script_create_dialog.cpp msgid "Path is empty" -msgstr "" +msgstr "Порожній шлÑÑ…" #: editor/script_create_dialog.cpp msgid "Path is not local" -msgstr "" +msgstr "ШлÑÑ… не Ñ” локальним" #: editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "" +msgstr "Ðекоректний базовий шлÑÑ…" #: editor/script_create_dialog.cpp msgid "Directory of the same name exists" -msgstr "" +msgstr "Каталог із такою назвою вже Ñ–Ñнує" #: editor/script_create_dialog.cpp msgid "File exists, will be reused" -msgstr "" +msgstr "Файл вже Ñ–Ñнує, його буде викориÑтано повторно" #: editor/script_create_dialog.cpp msgid "Invalid extension" -msgstr "" +msgstr "Ðекоректний ÑуфікÑ" #: editor/script_create_dialog.cpp msgid "Wrong extension chosen" -msgstr "" +msgstr "Вибрано некоректний ÑуфікÑ" #: editor/script_create_dialog.cpp msgid "Invalid Path" @@ -6840,23 +6934,23 @@ msgstr "Ðеправильний шлÑÑ…" #: editor/script_create_dialog.cpp msgid "Invalid class name" -msgstr "" +msgstr "Ðекоректна назва клаÑу" #: editor/script_create_dialog.cpp msgid "Invalid inherited parent name or path" -msgstr "" +msgstr "Ðекоректна назва або шлÑÑ… до уÑпадкованого батьківÑького елемента" #: editor/script_create_dialog.cpp msgid "Script valid" -msgstr "" +msgstr "Скрипт Ñ” коректним" #: editor/script_create_dialog.cpp msgid "Allowed: a-z, A-Z, 0-9 and _" -msgstr "" +msgstr "Можна викориÑтовувати: a-z, A-Z, 0-9 Ñ– _" #: editor/script_create_dialog.cpp msgid "Built-in script (into scene file)" -msgstr "" +msgstr "Вбудований (до файла Ñцени) Ñкрипт" #: editor/script_create_dialog.cpp msgid "Create new script file" @@ -6872,31 +6966,31 @@ msgstr "Мова" #: editor/script_create_dialog.cpp msgid "Inherits" -msgstr "" +msgstr "УÑпадковує" #: editor/script_create_dialog.cpp msgid "Class Name" -msgstr "" +msgstr "Ðазва клаÑу" #: editor/script_create_dialog.cpp msgid "Template" -msgstr "" +msgstr "Шаблон" #: editor/script_create_dialog.cpp msgid "Built-in Script" -msgstr "" +msgstr "Вбудований Ñкрипт" #: editor/script_create_dialog.cpp msgid "Attach Node Script" -msgstr "" +msgstr "Долучити Ñкрипт вузла" #: editor/script_editor_debugger.cpp msgid "Remote " -msgstr "" +msgstr "Віддалений " #: editor/script_editor_debugger.cpp msgid "Bytes:" -msgstr "" +msgstr "Байтів:" #: editor/script_editor_debugger.cpp msgid "Warning" @@ -6916,27 +7010,31 @@ 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 +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "Помилки" #: editor/script_editor_debugger.cpp msgid "Child Process Connected" -msgstr "" +msgstr "З'єднано дочірній процеÑ" + +#: editor/script_editor_debugger.cpp +msgid "Copy Error" +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" -msgstr "" +msgstr "СтоÑувати кадри" #: editor/script_editor_debugger.cpp msgid "Variable" @@ -6948,91 +7046,91 @@ msgstr "Помилки:" #: editor/script_editor_debugger.cpp msgid "Stack Trace (if applicable):" -msgstr "" +msgstr "ТраÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтека (Ñкщо заÑтоÑовне):" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "" +msgstr "ЗаÑіб профілюваннÑ" #: editor/script_editor_debugger.cpp msgid "Monitor" -msgstr "" +msgstr "Монітор" #: editor/script_editor_debugger.cpp msgid "Value" -msgstr "" +msgstr "ЗначеннÑ" #: editor/script_editor_debugger.cpp msgid "Monitors" -msgstr "" +msgstr "Монітори" #: editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" -msgstr "" +msgstr "СпиÑок викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾Ð¿Ð°Ð¼'Ñті за реÑурÑами:" #: editor/script_editor_debugger.cpp msgid "Total:" -msgstr "" +msgstr "Загалом:" #: editor/script_editor_debugger.cpp msgid "Video Mem" -msgstr "" +msgstr "Відеопам'Ñть" #: editor/script_editor_debugger.cpp msgid "Resource Path" -msgstr "" +msgstr "ШлÑÑ… до реÑурÑу" #: editor/script_editor_debugger.cpp msgid "Type" -msgstr "" +msgstr "Тип" #: editor/script_editor_debugger.cpp msgid "Format" -msgstr "" +msgstr "Формат" #: editor/script_editor_debugger.cpp msgid "Usage" -msgstr "" +msgstr "ВикориÑтаннÑ" #: editor/script_editor_debugger.cpp msgid "Misc" -msgstr "" +msgstr "Інше" #: editor/script_editor_debugger.cpp msgid "Clicked Control:" -msgstr "" +msgstr "ÐатиÑнутий елемент керуваннÑ:" #: editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "" +msgstr "ÐатиÑнутий тип керуваннÑ:" #: editor/script_editor_debugger.cpp msgid "Live Edit Root:" -msgstr "" +msgstr "Корінь інтерактивного редагуваннÑ:" #: editor/script_editor_debugger.cpp msgid "Set From Tree" -msgstr "" +msgstr "Ð’Ñтановити з дерева" #: editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Клавіатурні ÑкороченнÑ" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "Палітурка" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" -msgstr "" +msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ð¾ÑвітленнÑ" #: editor/spatial_editor_gizmos.cpp msgid "Change AudioStreamPlayer3D Emission Angle" -msgstr "" +msgstr "Змінити кут Ð²Ð¸Ð¿Ñ€Ð¾Ð¼Ñ–Ð½ÑŽÐ²Ð°Ð½Ð½Ñ AudioStreamPlayer3D" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera FOV" -msgstr "" +msgstr "Змінити поле зору камери" #: editor/spatial_editor_gizmos.cpp msgid "Change Camera Size" @@ -7040,74 +7138,71 @@ msgstr "Змінити розмір камери" #: editor/spatial_editor_gizmos.cpp msgid "Change Sphere Shape Radius" -msgstr "" +msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñферичної форми" #: editor/spatial_editor_gizmos.cpp msgid "Change Box Shape Extents" -msgstr "" +msgstr "Змінити розміри кубічної форми" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "" +msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñ„Ð¾Ñ€Ð¼Ð¸ капÑули" #: editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "" +msgstr "Змінити виÑоту форми капÑули" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "" +msgstr "Змінити довжину форми променÑ" #: editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" -msgstr "" +msgstr "Змінити розміри заÑобу ÑповіщеннÑ" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" -msgstr "" +msgstr "Змінити AABB чаÑток" #: editor/spatial_editor_gizmos.cpp msgid "Change Probe Extents" -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 -#, fuzzy msgid "Remove current entry" -msgstr "Видалити точку кривої" +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:" -msgstr "" +msgstr "Платформа:" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Platform" -msgstr "" +msgstr "Платформа" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy 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 -#, fuzzy msgid "GDNativeLibrary" -msgstr "Бібліотека" +msgstr "Бібліотека GDNative" #: modules/gdnative/gdnative_library_singleton_editor.cpp msgid "Library" @@ -7123,25 +7218,26 @@ msgstr "Бібліотеки: " #: modules/gdnative/register_types.cpp msgid "GDNative" -msgstr "" +msgstr "GD Native" #: modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." msgstr "" +"Ðекоректний аргумент типу у convert(), Ñлід викориÑтовувати Ñталі TYPE_*." #: modules/gdscript/gdscript_functions.cpp modules/mono/glue/glue_header.h #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "" +msgstr "ÐедоÑтатньо байтів Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ вказано некоректний формат." #: modules/gdscript/gdscript_functions.cpp msgid "step argument is zero!" -msgstr "" +msgstr "аргумент кроку дорівнює нулеві!" #: modules/gdscript/gdscript_functions.cpp msgid "Not a script with an instance" -msgstr "" +msgstr "Ðе Ñкрипт з екземплÑром" #: modules/gdscript/gdscript_functions.cpp msgid "Not based on a script" @@ -7153,181 +7249,229 @@ msgstr "Ðе заÑнований на файлі реÑурÑів" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (missing @path)" -msgstr "" +msgstr "Ðекоректний формат Ñловника екземплÑра (пропущено @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (can't load script at @path)" msgstr "" +"Ðекоректний формат Ñловника екземплÑра (не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñкрипт у " +"@path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (invalid script at @path)" -msgstr "" +msgstr "Ðекоректний формат Ñловника екземплÑра (некоректний Ñкрипт у @path)" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary (invalid subclasses)" -msgstr "" +msgstr "Ðекоректний Ñловник екземплÑра (некоректні підклаÑи)" #: modules/gdscript/gdscript_functions.cpp msgid "Object can't provide a length." -msgstr "" +msgstr "Об'єкт не може надавати довжину." #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Delete Selection" -msgstr "" +msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Duplicate Selection" -msgstr "" +msgstr "Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "" +msgstr "Поверх:" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Grid Map" -msgstr "" +msgstr "Карта Ñітки" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Snap View" -msgstr "" +msgstr "Миттєвий переглÑд" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Previous Floor" -msgstr "" +msgstr "Попередній поверх" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "" +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" -msgstr "" +msgstr "Редагувати віÑÑŒ X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Y Axis" -msgstr "" +msgstr "Редагувати віÑÑŒ Y" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Edit Z Axis" -msgstr "" +msgstr "Редагувати віÑÑŒ Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate X" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Y" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Y" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Rotate Z" -msgstr "" +msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate X" -msgstr "" +msgstr "Зворотне Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо X" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Y" -msgstr "" +msgstr "Зворотне Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Y" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Back Rotate Z" -msgstr "" +msgstr "Зворотне Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Z" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Cursor Clear Rotation" -msgstr "" +msgstr "ЗнÑти Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð· вказівника" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Create Area" -msgstr "" +msgstr "Створити облаÑть" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Create Exterior Connector" -msgstr "" +msgstr "Створити зовнішнє з'єднаннÑ" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Erase Area" -msgstr "" +msgstr "Витерти облаÑть" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clear Selection" -msgstr "ОчиÑтити виділене" +msgstr "ОчиÑтити позначене" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" -msgstr "" +msgstr "Параметри GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Pick Distance:" -msgstr "" +msgstr "ВідÑтань вибору:" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð²'Ñзку..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "Створюємо проект C#..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "Ðе вдалоÑÑ Ñтворити розв'Ñзок." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ розв'Ñзок." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "Зроблено" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "Ðе вдалоÑÑ Ñтворити проект C#." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Моно" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "Створити розв'Ñзок C#" #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" -msgstr "" +msgstr "ЗбираннÑ" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "Зібрати проект" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +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 "" +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 "" +msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтека, глибина Ñтека: " #: modules/visual_script/visual_script_editor.cpp msgid "Change Signal Arguments" -msgstr "" +msgstr "Змірити аргументи Ñигналу" #: modules/visual_script/visual_script_editor.cpp msgid "Change Argument Type" -msgstr "" +msgstr "Змінити тип аргументу" #: modules/visual_script/visual_script_editor.cpp msgid "Change Argument name" -msgstr "" +msgstr "Змінити назву аргументу" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Default Value" -msgstr "" +msgstr "Ð’Ñтановити типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—" #: modules/visual_script/visual_script_editor.cpp msgid "Set Variable Type" -msgstr "" +msgstr "Ð’Ñтановити тип змінної" #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" @@ -7339,11 +7483,11 @@ 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:" -msgstr "" +msgstr "Ðазва вже викориÑтовуєтьÑÑ Ñ–Ð½ÑˆÐ¾ÑŽ функцією, змінною чи Ñигналом:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" @@ -7379,35 +7523,39 @@ msgstr "Додати вузол" #: modules/visual_script/visual_script_editor.cpp msgid "Remove VisualScript Nodes" -msgstr "" +msgstr "Вилучити вузли VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Duplicate VisualScript Nodes" -msgstr "" +msgstr "Дублювати вузли VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." msgstr "" +"Утримуйте натиÑнутою %s, щоб Ñкинути отримувач. Утримуйте натиÑнутою Shift, " +"щоб Ñкинути Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð´Ð¶ÐµÐ½ÐµÑ€Ñ–ÐºÐ°." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "" +"Утримуйте натиÑнутою Ctrl, щоб Ñкинути отримувач. Утримуйте натиÑнутою " +"Shift, щоб Ñкинути Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð´Ð¶ÐµÐ½ÐµÑ€Ñ–ÐºÐ°." #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a simple reference to the node." -msgstr "" +msgstr "Утримуйте натиÑнутою %s, щоб Ñкинути проÑте поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вузол." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a simple reference to the node." -msgstr "" +msgstr "Утримуйте натиÑнутою Ctrl, щоб Ñкинути проÑте поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вузол." #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Variable Setter." -msgstr "" +msgstr "Утримуйте натиÑнутою %s, щоб Ñкинути вÑтановлювач змінної." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." -msgstr "" +msgstr "Утримуйте натиÑнутою Ctrl, щоб Ñкинути вÑтановлювач змінної." #: modules/visual_script/visual_script_editor.cpp msgid "Add Preload Node" @@ -7415,15 +7563,15 @@ msgstr "Додати попередньо завантажений вузол" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "" +msgstr "Додати вузли з дерева" #: 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" @@ -7431,11 +7579,11 @@ msgstr "Змінити базовий тип" #: modules/visual_script/visual_script_editor.cpp msgid "Move Node(s)" -msgstr "" +msgstr "ПереÑунути вузли" #: modules/visual_script/visual_script_editor.cpp msgid "Remove VisualScript Node" -msgstr "" +msgstr "Вилучити вузол VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Connect Nodes" @@ -7443,11 +7591,11 @@ msgstr "Приєднати вузли" #: modules/visual_script/visual_script_editor.cpp msgid "Condition" -msgstr "" +msgstr "Умова" #: modules/visual_script/visual_script_editor.cpp msgid "Sequence" -msgstr "" +msgstr "ПоÑлідовніÑть" #: modules/visual_script/visual_script_editor.cpp msgid "Switch" @@ -7475,7 +7623,7 @@ msgstr "Отримати" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" -msgstr "" +msgstr "Скрипт уже має функцію '%s'" #: modules/visual_script/visual_script_editor.cpp msgid "Change Input Value" @@ -7487,11 +7635,11 @@ 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 "" +msgstr "Ð’Ñтавити вузли (Візуального Ñкриптингу) VisualScript" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Function" @@ -7587,7 +7735,7 @@ msgstr "ШлÑÑ… не веде до вузла!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." -msgstr "" +msgstr "Ðекоректна назва влаÑтивоÑті індекÑу, «%s», у вузлі %s." #: modules/visual_script/visual_script_nodes.cpp msgid ": Invalid argument of type: " @@ -7599,21 +7747,23 @@ msgstr ": ÐеприпуÑтимі аргументи: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableGet not found in script: " -msgstr "" +msgstr "Ðе знайдено VariableGet у Ñкрипті: " #: modules/visual_script/visual_script_nodes.cpp msgid "VariableSet not found in script: " -msgstr "" +msgstr "Ðе знайдено VariableSet у Ñкрипті: " #: modules/visual_script/visual_script_nodes.cpp msgid "Custom node has no _step() method, can't process graph." -msgstr "" +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)." #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -7624,36 +7774,55 @@ msgid "Run exported HTML in the system's default browser." msgstr "Виконати екÑпортований HTML у браузері за умовчаннÑм ÑиÑтеми." #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:\n" +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 "Could not open template for export:\n" -msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:\n" +msgid "Invalid export template:" +msgstr "Ðеправильний шаблон екÑпорту:" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "Ðеправильний шаблон екÑпорту:\n" +msgid "Could not read custom HTML shell:" +msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñпеціальну оболонку HTML:" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñпеціальну оболонку HTML:\n" +msgid "Could not read boot splash image file:" +msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки:" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" -msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки:\n" +msgid "Using default boot splash image." +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 "" +"Щоб AnimatedSprite могла показувати кадри, має бути Ñтворено або вÑтановлено " +"у влаÑтивоÑті «Frames» реÑÑƒÑ€Ñ SpriteFrames." #: scene/2d/canvas_modulate.cpp msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" +"У Ñцені (або наборі екземплÑрів Ñцен) може бути лише один видимий " +"CanvasModulate. Працюватиме перший зі Ñтворених, решту буде проігноровано." + +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"У цього вузла немає дочірніх форм, отже він не може взаємодіÑти із " +"проÑтором.\n" +"Спробуйте додати дочірні вузли CollisionShape2D або CollisionPolygon2D Ð´Ð»Ñ " +"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ форми." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -7661,10 +7830,13 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionPolygon2D призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному " +"вузлу CollisionObject2D. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент " +"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D тощо, щоб надати їм форми." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." -msgstr "" +msgstr "Порожній CollisionPolygon2D ніÑк не вплине на зіткненнÑ." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -7672,118 +7844,155 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionShape2D призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному " +"вузлу CollisionObject2D. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент " +"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D тощо, щоб надати їм форми." #: scene/2d/collision_shape_2d.cpp msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" +"Ð”Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾Ñті CollisionShape2D Ñлід надати форму. Будь " +"лаÑка, Ñтворіть реÑÑƒÑ€Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ елемента!" #: scene/2d/light_2d.cpp msgid "" "A texture with the shape of the light must be supplied to the 'texture' " "property." -msgstr "" +msgstr "Ð”Ð»Ñ Ð²Ð»Ð°ÑтивоÑті «texture» Ñлід надати текÑтуру із формою оÑвітленнÑ." #: scene/2d/light_occluder_2d.cpp msgid "" "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 "" +"Щоб забезпечити працездатніÑть цього вузла, Ñлід вÑтановити або Ñтворити " +"реÑÑƒÑ€Ñ NavigationPolygon. Будь лаÑка, вÑтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті або " +"намалюйте багатокутник." #: scene/2d/navigation_polygon.cpp msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" +"NavigationPolygonInstance має бути дочірнім елементом вузла Navigation2D або " +"елементом ще нижчої підпорÑдкованоÑті. Він надає лише навігаційні дані." #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +"Вузол ParallaxLayer працює, лише Ñкщо його вÑтановлено Ñк дочірній Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð° " +"ParallaxBackground." #: 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/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." -msgstr "" +msgstr "PathFollow2D працюватиме лише Ñк дочірній елемент вузла Path2D." #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" +"Зміни розмірів RigidBody2D (у режимах character або rigid) буде " +"перевизначено фізичним рушієм під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n" +"ЗаміÑть цієї зміни, вам варто змінити розміри дочірніх форм зіткненнÑ." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." msgstr "" +"Щоб уÑе працювало Ñк Ñлід, влаÑтивіÑть шлÑху (path) має вказувати на " +"коректний вузол Node2D." #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" +"VisibilityEnable2D найкраще працюватиме, Ñкщо його викориÑтано із " +"безпоÑереднім батьківÑьким елементом — редагованим коренем Ñцени." #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRCamera повинен мати батьківÑьким вузлом вузол ARVROrigin" #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRController повинен мати батьківÑьким вузлом вузол ARVROrigin" #: scene/3d/arvr_nodes.cpp msgid "" "The controller id must not be 0 or this controller will not be bound to an " "actual controller" msgstr "" +"Ідентифікатором контролера має бути значеннÑ, Ñке Ñ” відмінним від 0, інакше " +"цей контролер не буде пов'Ñзано із Ñправжнім елементом керуваннÑ" #: scene/3d/arvr_nodes.cpp msgid "ARVRAnchor must have an ARVROrigin node as its parent" -msgstr "" +msgstr "ARVRAnchor повинен мати батьківÑьким вузлом вузол ARVROrigin" #: scene/3d/arvr_nodes.cpp msgid "" "The anchor id must not be 0 or this anchor will not be bound to an actual " "anchor" msgstr "" +"Ідентифікатором прив'Ñзки має бути значеннÑ, Ñке Ñ” відмінним від 0, інакше " +"цю прив'Ñзку не буде пов'Ñзано із Ñправжньою прив'Ñзкою" #: scene/3d/arvr_nodes.cpp msgid "ARVROrigin requires an ARVRCamera child node" -msgstr "" +msgstr "ARVROrigin повинен мати дочірній вузол ARVRCamera" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Meshes: " -msgstr "Побудова Ñітки" +msgstr "Побудова Ñітки: " #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Plotting Lights:" -msgstr "Побудова Ñітки" +msgstr "Побудова Ñвітла:" #: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp msgid "Finishing Plot" msgstr "Завершальна ділÑнка" #: scene/3d/baked_lightmap.cpp -#, fuzzy msgid "Lighting Meshes: " -msgstr "Побудова Ñітки" +msgstr "ОÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ Ñітки: " + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"У цього вузла немає дочірніх форм, отже він не може взаємодіÑти із " +"проÑтором.\n" +"Спробуйте додати дочірні вузли CollisionShape або CollisionPolygon Ð´Ð»Ñ " +"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ форми." #: scene/3d/collision_polygon.cpp msgid "" @@ -7791,10 +8000,13 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" +"CollisionPolygon призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному " +"вузлу CollisionObject. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент " +"Area, StaticBody, RigidBody, KinematicBody тощо, щоб надати їм форми." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." -msgstr "" +msgstr "Порожній CollisionPolygon ніÑк не вплине на зіткненнÑ." #: scene/3d/collision_shape.cpp msgid "" @@ -7802,12 +8014,17 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" +"CollisionShape призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному " +"вузлу CollisionObject. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент " +"Area, StaticBody, RigidBody, KinematicBody тощо, щоб надати їм форми." #: scene/3d/collision_shape.cpp msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it!" msgstr "" +"Ð”Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾Ñті CollisionShape Ñлід надати форму. Будь " +"лаÑка, Ñтворіть реÑÑƒÑ€Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ елемента!" #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -7824,39 +8041,53 @@ msgid "" "NavigationMeshInstance must be a child or grandchild to a Navigation node. " "It only provides navigation data." msgstr "" +"NavigationMeshInstance має бути дочірнім елементом вузла Navigation або " +"елементом ще нижчої підпорÑдкованоÑті. Він надає лише навігаційні дані." #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" +"Ðічого не видно, оÑкільки Ñітки не було пов'Ñзано із проходами малюваннÑ." #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" +"Зміни розмірів RigidBody (у режимах character або rigid) буде перевизначено " +"фізичним рушієм під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n" +"ЗаміÑть цієї зміни, вам варто змінити розміри дочірніх форм зіткненнÑ." #: scene/3d/remote_transform.cpp msgid "Path property must point to a valid Spatial node to work." msgstr "" +"Щоб уÑе працювало Ñк Ñлід, влаÑтивіÑть шлÑху (path) має вказувати на " +"коректний вузол Spatial." #: scene/3d/scenario_fx.cpp msgid "" "Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." msgstr "" +"У Ñцені (або наборі екземплÑрів Ñцен) може бути лише один елемент " +"WorldEnvironment." #: 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 "" +"Щоб AnimatedSprite могла показувати кадри, має бути Ñтворено або вÑтановлено " +"у влаÑтивоÑті «Frames» реÑÑƒÑ€Ñ SpriteFrames." #: 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 Ñлугує Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ ÑиÑтеми ÐºÐ¾Ð»Ñ–Ñ Ñƒ VehicleBody. " +"Будь лаÑка, викориÑтовуйте цей елемент Ñк дочірній елемент вузла VehicleBody." #: scene/gui/color_picker.cpp msgid "Raw Mode" @@ -7864,15 +8095,15 @@ msgstr "Raw (Ñирий) режим" #: scene/gui/color_picker.cpp msgid "Add current color as a preset" -msgstr "" +msgstr "Додати поточний колір в ÑкоÑті преÑету" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "СповіщеннÑ!" +msgstr "Увага!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "Будь-лаÑка підтвердіть..." +msgstr "Будь лаÑка, підтвердьте..." #: scene/gui/file_dialog.cpp msgid "Select this Folder" @@ -7884,6 +8115,9 @@ msgid "" "functions. Making them visible for editing is fine though, but they will " "hide upon running." msgstr "" +"КонтекÑтні підказки типово буде приховано, Ñкщо ви не викличете popup() або " +"ÑкуÑÑŒ із функцій popup*(). Втім, робити Ñ—Ñ… видимими Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ â€” звична " +"практика. Втім, Ñлід пам'Ñтати, що під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку Ñ—Ñ… буде приховано." #: scene/gui/scroll_container.cpp msgid "" @@ -7891,6 +8125,10 @@ msgid "" "Use a container as child (VBox,HBox,etc), or a Control and set the custom " "minimum size manually." msgstr "" +"ScrollContainer призначено Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ із одинарним дочірнім заÑобом " +"керуваннÑ.\n" +"СкориÑтайтеÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð¾Ð¼ Ñк дочірнім об'єктом (VBox, HBox тощо) або вузлом " +"Control Ñ– вÑтановіть нетиповий мінімальний розмір вручну." #: scene/gui/tree.cpp msgid "(Other)" @@ -7898,9 +8136,11 @@ msgstr "(Інші)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" +"Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ типове Ñередовище, Ñк його визначено у параметрах " +"проекту (Обробка -> Середовище -> Типове Ñередовище)." #: scene/main/viewport.cpp msgid "" @@ -7909,6 +8149,10 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" +"Ð¦Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ показу не Ñ” ціллю обробки зображеннÑ. Якщо ви хочете, щоб Ñ—Ñ— вміÑÑ‚ " +"було безпоÑередньо показано на екрані, зробіть Ñ—Ñ— дочірньою Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð° " +"Control, щоб у неї був розмір. Крім того, можна зробити Ñ—Ñ— RenderTarget Ñ– " +"пов'Ñзати Ñ—Ñ— внутрішню текÑтуру з одним із вузлів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ." #: scene/resources/dynamic_font.cpp msgid "Error initializing FreeType." @@ -7924,7 +8168,28 @@ msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ." #: scene/resources/dynamic_font.cpp msgid "Invalid font size." -msgstr "ÐедійÑний розмір шрифту." +msgstr "Ðекоректний розмір шрифту." + +#~ msgid "Next" +#~ msgstr "Далі" + +#~ msgid "Not found!" +#~ msgstr "Ðе знайдено!" + +#~ msgid "Replace By" +#~ msgstr "Замінити на" + +#~ msgid "Case Sensitive" +#~ msgstr "ЧутливіÑть регіÑтра" + +#~ msgid "Backwards" +#~ msgstr "Ðазад" + +#~ msgid "Prompt On Replace" +#~ msgstr "Запитувати при заміні" + +#~ msgid "Skip" +#~ msgstr "ПропуÑтити" #~ msgid "Move Add Key" #~ msgstr "ПоÑунути ключ" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 8876d52ace..9fae520b55 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -197,8 +197,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "" @@ -375,14 +374,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -391,47 +382,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -549,6 +508,15 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp #, fuzzy msgid "Create New %s" msgstr "سب سکریپشن بنائیں" @@ -655,7 +623,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -738,8 +706,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -824,7 +792,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1136,7 +1104,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1351,6 +1319,17 @@ msgid "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 "Properties" msgstr "" @@ -1383,6 +1362,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1394,6 +1377,11 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "سب سکریپشن بنائیں" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1402,8 +1390,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1457,7 +1445,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2011,6 +2000,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2391,7 +2387,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2548,9 +2544,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2558,19 +2552,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" +msgid "Error moving:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3209,6 +3203,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3374,6 +3372,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3679,19 +3678,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4065,7 +4067,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4458,14 +4460,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4542,6 +4546,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4973,83 +4981,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5064,6 +5072,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5137,15 +5149,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5425,10 +5433,18 @@ msgstr "ایکشن منتقل کریں" msgid "Move (After)" msgstr "ایکشن منتقل کریں" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5454,14 +5470,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5601,6 +5620,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5702,6 +5725,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5809,9 +5856,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5823,6 +5868,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +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 "" @@ -5864,14 +5918,27 @@ 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 +#, fuzzy +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 "" @@ -5888,10 +5955,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5937,6 +6000,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6064,11 +6131,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6448,10 +6510,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6536,7 +6594,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6836,7 +6894,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6845,6 +6903,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7195,10 +7257,51 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "سب سکریپشن بنائیں" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7548,23 +7651,28 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +#, fuzzy +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 "Could not open template for export:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read boot splash image file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7579,6 +7687,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7647,7 +7762,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7706,6 +7821,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7751,8 +7873,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7817,8 +7939,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7845,8 +7967,5 @@ msgstr "" msgid "Invalid font size." msgstr "" -#~ msgid "Create Subscription" -#~ msgstr "سب سکریپشن بنائیں" - #~ msgid "Samples" #~ msgstr "نمونے" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 89b1200f6b..018883dc91 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -3,6 +3,7 @@ # Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. # +# Dlean Jeans <dleanjeans@gmail.com>, 2018. # Hai Le <dark.hades.1102@gmail.com>, 2017. # Nguyá»…n Tuấn Anh <anhnt.fami@gmail.com>, 2017. # Tung Le <tungkradle@gmail.com>, 2017. @@ -10,18 +11,17 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2017-11-25 13:51+0000\n" -"Last-Translator: Hai Le <dark.hades.1102@gmail.com>\n" +"PO-Revision-Date: 2018-01-24 12:35+0000\n" +"Last-Translator: Dlean Jeans <dleanjeans@gmail.com>\n" "Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/" "godot/vi/>\n" "Language: vi\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp -#, fuzzy msgid "Disabled" msgstr "Tắt" @@ -30,34 +30,32 @@ msgid "All Selection" msgstr "Chá»n tất cả" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "Äổi giá trị" +msgstr "Äổi thá»i gian khung hình" #: editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "Äổi Transition Animation" #: editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "" +msgstr "Äổi Transform Animation" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "Äổi giá trị" +msgstr "Äổi giá trị khung hình" #: editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "Äổi Function Gá»i Animation" #: editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "" +msgstr "Thêm Track Animation" #: editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "" +msgstr "Nhân đôi Các Key cá»§a Animation" #: editor/animation_editor.cpp msgid "Move Anim Track Up" @@ -73,7 +71,7 @@ msgstr "Xóa Anim Track" #: editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "" +msgstr "Äặt Transtions thà nh:" #: editor/animation_editor.cpp msgid "Anim Track Rename" @@ -106,7 +104,7 @@ msgstr "Xóa phÃm Anim" #: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "" +msgstr "Nhân đôi lá»±a chá»n" #: editor/animation_editor.cpp msgid "Duplicate Transposed" @@ -163,7 +161,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "In" -msgstr "" +msgstr "Trong" #: editor/animation_editor.cpp msgid "Out" @@ -201,8 +199,7 @@ msgstr "" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "Tạo" @@ -240,7 +237,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "" +msgstr "Thêm Track Gá»i Function" #: editor/animation_editor.cpp msgid "Animation zoom." @@ -248,7 +245,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Length (s):" -msgstr "" +msgstr "Äá»™ dà i (giây):" #: editor/animation_editor.cpp msgid "Animation length (in seconds)." @@ -292,7 +289,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "Tối ưu hóa Animation" #: editor/animation_editor.cpp msgid "Max. Linear Error:" @@ -312,7 +309,7 @@ msgstr "" #: editor/animation_editor.cpp msgid "Select an AnimationPlayer from the Scene Tree to edit animations." -msgstr "" +msgstr "Chá»n má»™t AnimationPlayer từ Scene Tree để chỉnh sá»a animation." #: editor/animation_editor.cpp msgid "Key" @@ -379,14 +376,6 @@ msgid "Replaced %d occurrence(s)." msgstr "" #: editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "" @@ -395,47 +384,15 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "" - -#: editor/code_editor.cpp -msgid "Backwards" +msgid "Replace" msgstr "" #: editor/code_editor.cpp -msgid "Prompt On Replace" +msgid "Replace All" msgstr "" #: editor/code_editor.cpp -msgid "Skip" +msgid "Selection Only" msgstr "" #: editor/code_editor.cpp @@ -553,9 +510,17 @@ msgid "Signals" msgstr "" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "Tạo" +msgstr "Tạo %s Má»›i" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -641,7 +606,7 @@ msgstr "" #: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp #: editor/quick_open.cpp scene/gui/file_dialog.cpp msgid "Open" -msgstr "" +msgstr "Mở" #: editor/dependency_editor.cpp msgid "Owners Of:" @@ -659,7 +624,7 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -712,7 +677,7 @@ msgstr "" #: editor/project_export.cpp editor/project_settings_editor.cpp #: editor/scene_tree_dock.cpp msgid "Delete" -msgstr "" +msgstr "Xóa" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" @@ -728,7 +693,7 @@ msgstr "" #: editor/editor_about.cpp msgid "Thanks!" -msgstr "" +msgstr "Cảm Æ¡n!" #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -742,8 +707,8 @@ msgstr "" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" +#: editor/editor_about.cpp +msgid "Project Manager " msgstr "" #: editor/editor_about.cpp @@ -828,7 +793,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1135,7 +1100,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1347,6 +1312,17 @@ msgid "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 "Properties" msgstr "" @@ -1378,6 +1354,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1389,6 +1369,10 @@ msgstr "" msgid "Clear" msgstr "" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1397,8 +1381,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "" @@ -1452,7 +1436,8 @@ msgstr "" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -1588,7 +1573,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." -msgstr "" +msgstr "Scene hiện tại chưa được lưu, hãy lưu nó trước khi chạy." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -1620,7 +1605,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "Lưu Scene vá»›i tên.." #: editor/editor_node.cpp msgid "No" @@ -1632,7 +1617,7 @@ msgstr "" #: editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "" +msgstr "Scene nà y chưa được lưu. Lưu trước khi chạy?" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." @@ -1692,11 +1677,11 @@ msgstr "" #: editor/editor_node.cpp msgid "Save changes to the following scene(s) before quitting?" -msgstr "" +msgstr "Lưu thay đổi trong các scene sau trước khi thoát?" #: editor/editor_node.cpp msgid "Save changes the following scene(s) before opening Project Manager?" -msgstr "" +msgstr "Lưu thay đổi trong các scene sau trước khi mở Project Manager?" #: editor/editor_node.cpp msgid "" @@ -1734,6 +1719,8 @@ 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' được load tá»± động, vì váºy không thể chỉnh sá»a.\n" +"Tạo má»™t scene con để chỉnh sá»a." #: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -1797,7 +1784,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Add a new scene." -msgstr "" +msgstr "Thêm má»™t scene má»›i." #: editor/editor_node.cpp msgid "Scene" @@ -1825,11 +1812,11 @@ msgstr "" #: editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Tạo Scene Má»›i" #: editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "" +msgstr "Tạo Scene Con.." #: editor/editor_node.cpp msgid "Open Scene.." @@ -2005,6 +1992,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2124,7 +2118,7 @@ msgstr "" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "Nháºp từ bên ngoà i" #: editor/editor_node.cpp msgid "Node" @@ -2144,7 +2138,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +msgstr "Nháºp Template từ file ZIP" #: editor/editor_node.cpp editor/project_export.cpp msgid "Export Project" @@ -2323,7 +2317,7 @@ msgstr "" #: editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" -msgstr "" +msgstr "Chá»n Node để Nháºp" #: editor/editor_sub_scene.cpp msgid "Scene Path:" @@ -2331,7 +2325,7 @@ msgstr "" #: editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "" +msgstr "Nháºp từ Node:" #: editor/export_template_manager.cpp msgid "Re-Download" @@ -2363,7 +2357,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Remove template version '%s'?" -msgstr "" +msgstr "Xóa template phiên bản '%s'?" #: editor/export_template_manager.cpp msgid "Can't open export templates zip." @@ -2384,7 +2378,7 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" +msgid "Error creating path for templates:" msgstr "" #: editor/export_template_manager.cpp @@ -2538,9 +2532,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2548,19 +2540,19 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "" +msgid "Error moving:" +msgstr "Lá»—i di chuyển:" #: editor/filesystem_dock.cpp -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -2577,79 +2569,79 @@ msgstr "" #: editor/filesystem_dock.cpp msgid "Name contains invalid characters." -msgstr "" +msgstr "Tên có kà tá»± không hợp lệ." #: editor/filesystem_dock.cpp msgid "A file or folder with this name already exists." -msgstr "" +msgstr "Äã có má»™t file hoặc folder trùng tên." #: editor/filesystem_dock.cpp msgid "Renaming file:" -msgstr "" +msgstr "Äổi tên file:" #: editor/filesystem_dock.cpp msgid "Renaming folder:" -msgstr "" +msgstr "Äổi tên folder:" #: editor/filesystem_dock.cpp msgid "Duplicating file:" -msgstr "" +msgstr "Tạo bản sao file:" #: editor/filesystem_dock.cpp msgid "Duplicating folder:" -msgstr "" +msgstr "Tạo bản sao folder:" #: editor/filesystem_dock.cpp msgid "Expand all" -msgstr "" +msgstr "Mở rá»™ng tất cả" #: editor/filesystem_dock.cpp msgid "Collapse all" -msgstr "" +msgstr "Thu gá»n tất cả" #: editor/filesystem_dock.cpp msgid "Rename.." -msgstr "" +msgstr "Äổi tên..." #: editor/filesystem_dock.cpp msgid "Move To.." -msgstr "" +msgstr "Di chuyển đến..." #: editor/filesystem_dock.cpp msgid "Open Scene(s)" -msgstr "" +msgstr "Mở Scene" #: editor/filesystem_dock.cpp msgid "Instance" -msgstr "" +msgstr "Thêm và o scene" #: editor/filesystem_dock.cpp msgid "Edit Dependencies.." -msgstr "" +msgstr "Chỉnh sá»a các File phụ thuá»™c.." #: editor/filesystem_dock.cpp msgid "View Owners.." -msgstr "" +msgstr "Xem các scene sở hữu.." #: editor/filesystem_dock.cpp msgid "Duplicate.." -msgstr "" +msgstr "Nhân đôi..." #: editor/filesystem_dock.cpp msgid "Previous Directory" -msgstr "" +msgstr "Thư mục trước" #: editor/filesystem_dock.cpp msgid "Next Directory" -msgstr "" +msgstr "Thư mục tiếp theo" #: editor/filesystem_dock.cpp msgid "Re-Scan Filesystem" -msgstr "" +msgstr "Quét lại hệ thống táºp tin" #: editor/filesystem_dock.cpp msgid "Toggle folder status as Favorite" -msgstr "" +msgstr "(Bá») Chá»n thư mục Hay sá» dụng" #: editor/filesystem_dock.cpp msgid "Instance the selected scene(s) as child of the selected node." @@ -2660,23 +2652,25 @@ msgid "" "Scanning Files,\n" "Please Wait.." msgstr "" +"Äang quét file,\n" +"Chá» môt chút.." #: editor/filesystem_dock.cpp msgid "Move" -msgstr "" +msgstr "Di chuyển" #: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp #: editor/project_manager.cpp msgid "Rename" -msgstr "" +msgstr "Äổi tên" #: editor/groups_editor.cpp msgid "Add to Group" -msgstr "" +msgstr "Thêm và o Nhóm" #: editor/groups_editor.cpp msgid "Remove from Group" -msgstr "" +msgstr "Xóa khá»i Nhóm" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" @@ -2684,31 +2678,31 @@ msgstr "" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Animations" -msgstr "" +msgstr "Load vá»›i các Animation riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials" -msgstr "" +msgstr "Load vá»›i các Material riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects" -msgstr "" +msgstr "Load vá»›i các Object riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials" -msgstr "" +msgstr "Load vá»›i các Object+Material riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Animations" -msgstr "" +msgstr "Load vá»›i các Object+Animation riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" -msgstr "" +msgstr "Load vá»›i Material+Animation riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "" +msgstr "Load vá»›i các Object+Material+Animation riêng biệt" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" @@ -2855,85 +2849,85 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Xóa Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "" +msgstr "Lá»–I: Tên animation không hợp lệ!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" -msgstr "" +msgstr "Lá»–I: Tên animation trùng lặp!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "Äổi tên Animation" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "" +msgstr "Thêm Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "" +msgstr "Chuyển đổi animation Tiếp theo Thay đổi" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "" +msgstr "Äổi Thá»i gian Chuyển Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "" +msgstr "Load Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "" +msgstr "Tạo Animation bản sao" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" -msgstr "" +msgstr "Lá»–I: Không có animation để copy!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation resource on clipboard!" -msgstr "" +msgstr "Lá»–I: Không có animation trên clipboard!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "" +msgstr "Animation đã Dán" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "" +msgstr "Dán Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" -msgstr "" +msgstr "Lá»–I: Không có animation để chỉnh!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" -msgstr "" +msgstr "Chạy animation ngược lại từ vị trà hiện tại. (A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "" +msgstr "Chạy animation ngược lại từ cuối. (Shift+A)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "" +msgstr "Ngưng chạy animation. (S)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "" +msgstr "Chạy animation từ đầu. (Shift+D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" -msgstr "" +msgstr "Chạy animation từ vị trà hiện tại. (D)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "" +msgstr "Vị trà animation (đơn vị giây)." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." @@ -2941,35 +2935,35 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create new animation in player." -msgstr "" +msgstr "Tạo animation má»›i trong player." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load animation from disk." -msgstr "" +msgstr "Load animation từ disk." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." -msgstr "" +msgstr "Load má»™t animation từ disk." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" -msgstr "" +msgstr "Lưu animation nà y" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "" +msgstr "Hiển thị danh sách các animation trong player." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "" +msgstr "Tá»± động chạy khi Load" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Target Blend Times" -msgstr "" +msgstr "Chỉnh Thá»i gian Chuyển Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "" +msgstr "Các Công cụ Animation" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Copy Animation" @@ -2977,11 +2971,11 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Onion Skinning" -msgstr "" +msgstr "Khung hình Liên tiếp" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Enable Onion Skinning" -msgstr "" +msgstr "Xem Khung hình Liên tiếp" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Directions" @@ -3197,6 +3191,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3362,6 +3360,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3662,19 +3661,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4045,7 +4047,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4434,14 +4436,16 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" +msgid "Close and save changes?" msgstr "" #: editor/plugins/script_editor_plugin.cpp @@ -4517,6 +4521,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -4933,7 +4941,7 @@ msgstr "" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Plane Transform." -msgstr "" +msgstr "Xem Transform cá»§a Plane." #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " @@ -4948,83 +4956,83 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." +msgid "Material Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" +msgid "Right View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5039,6 +5047,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5112,15 +5124,11 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5395,10 +5403,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5424,14 +5440,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5569,6 +5588,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "" @@ -5669,6 +5692,30 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5776,9 +5823,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5790,6 +5835,14 @@ msgid "Imported Project" 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 "" @@ -5830,14 +5883,26 @@ 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 "Tạo & Sá»a" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +msgid "Install & Edit" +msgstr "" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -5854,10 +5919,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5903,42 +5964,48 @@ msgid "" msgstr "" #: editor/project_manager.cpp -msgid "Project List" +msgid "Project Manager" msgstr "" #: editor/project_manager.cpp +msgid "Project List" +msgstr "List Project" + +#: editor/project_manager.cpp msgid "Scan" -msgstr "" +msgstr "Quét" #: editor/project_manager.cpp msgid "Select a Folder to Scan" -msgstr "" +msgstr "Chá»n má»™t Folder để Quét" #: editor/project_manager.cpp msgid "New Project" -msgstr "" +msgstr "Tạo Project" #: editor/project_manager.cpp msgid "Templates" -msgstr "" +msgstr "Khung project" #: editor/project_manager.cpp msgid "Exit" -msgstr "" +msgstr "Thoát" #: editor/project_manager.cpp msgid "Restart Now" -msgstr "" +msgstr "Restart ngay" #: editor/project_manager.cpp msgid "Can't run project" -msgstr "" +msgstr "Không thể chạy project" #: editor/project_manager.cpp msgid "" "You don't currently have any projects.\n" "Would you like to explore the official example projects in the Asset Library?" msgstr "" +"Hiện giá» bạn không có project nà o.\n" +"Bạn có muốn xem các project official và dụ trên Asset Library không?" #: editor/project_settings_editor.cpp msgid "Key " @@ -6029,11 +6096,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6411,10 +6473,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6499,7 +6557,7 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "" #: editor/scene_tree_dock.cpp @@ -6790,7 +6848,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6799,6 +6857,10 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7144,10 +7206,50 @@ msgstr "" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7452,7 +7554,7 @@ msgstr "" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "" +msgstr "Path không chỉ đến Node!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." @@ -7493,23 +7595,27 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." msgstr "" #: scene/2d/animated_sprite.cpp @@ -7524,6 +7630,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7592,7 +7705,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7651,6 +7764,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7696,8 +7816,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7740,7 +7860,7 @@ msgstr "Xin hãy xác nháºn..." #: scene/gui/file_dialog.cpp msgid "Select this Folder" -msgstr "" +msgstr "Chá»n folder nà y" #: scene/gui/popup.cpp msgid "" @@ -7748,6 +7868,9 @@ msgid "" "functions. Making them visible for editing is fine though, but they will " "hide upon running." msgstr "" +"Các popup sẽ mặc định là ẩn trừ khi bạn gá»i popup() hoặc bất kì function nà o " +"có dạng popup*(). Có thể để popup nhìn thấy được để chỉnh sá»a, nhưng chúng " +"sẽ ẩn khi chạy." #: scene/gui/scroll_container.cpp msgid "" @@ -7762,8 +7885,8 @@ msgstr "(Khác)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index e1ee53bf94..debb1d60f3 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -1,4 +1,4 @@ -# Chinese (China) translation of the Godot Engine editor +# Chinese (Simplified) translation of the Godot Engine editor # Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. # Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. @@ -9,7 +9,7 @@ # ageazrael <ageazrael@gmail.com>, 2016. # Bruce Guo <guoboism@hotmail.com>, 2016. # dragonandy <dragonandy@foxmail.com>, 2017. -# Geequlim <geequlim@gmail.com>, 2016-2017. +# Geequlim <geequlim@gmail.com>, 2016-2018. # lalalaring <783482203@qq.com>, 2017. # Luo Jun <vipsbpig@gmail.com>, 2016-2017. # oberon-tonya <360119124@qq.com>, 2016. @@ -21,9 +21,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Godot Engine editor\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-12-10 10:33+0000\n" +"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" +"POT-Creation-Date: 2018-01-20 12:15+0200\n" +"PO-Revision-Date: 2018-01-20 12:54+0000\n" "Last-Translator: Geequlim <geequlim@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" @@ -32,7 +32,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 2.18-dev\n" +"X-Generator: Weblate 2.19-dev\n" #: editor/animation_editor.cpp msgid "Disabled" @@ -43,9 +43,8 @@ msgid "All Selection" msgstr "所有选ä¸é¡¹" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Time" -msgstr "修改动画值" +msgstr "修改动画关键帧的时间" #: editor/animation_editor.cpp msgid "Anim Change Transition" @@ -56,9 +55,8 @@ msgid "Anim Change Transform" msgstr "ä¿®æ”¹å˜æ¢" #: editor/animation_editor.cpp -#, fuzzy msgid "Anim Change Keyframe Value" -msgstr "修改动画值" +msgstr "修改动画关键帧的值" #: editor/animation_editor.cpp msgid "Anim Change Call" @@ -214,8 +212,7 @@ msgstr "创建%d个新轨é“å¹¶æ’入关键帧?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "创建" @@ -392,14 +389,6 @@ msgid "Replaced %d occurrence(s)." msgstr "替æ¢äº†%d项。" #: editor/code_editor.cpp -msgid "Replace" -msgstr "替æ¢" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "全部替æ¢" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "大å°å†™åŒ¹é…" @@ -408,48 +397,16 @@ msgid "Whole Words" msgstr "å…¨å—匹é…" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "仅选ä¸" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "æœç´¢" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "查找" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "下一项" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "未找到ï¼" - -#: editor/code_editor.cpp -msgid "Replace By" +msgid "Replace" msgstr "替æ¢" #: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "区分大å°å†™" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "å‘åŽ" - -#: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "æ›´æ¢æ—¶æç¤º" +msgid "Replace All" +msgstr "全部替æ¢" #: editor/code_editor.cpp -msgid "Skip" -msgstr "跳过" +msgid "Selection Only" +msgstr "仅选ä¸" #: editor/code_editor.cpp msgid "Zoom In" @@ -546,30 +503,37 @@ msgstr "连接'%s'到'%s'" #: editor/connections_dialog.cpp msgid "Connecting Signal:" -msgstr "连接事件:" +msgstr "连接信å·:" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect '%s' from '%s'" -msgstr "连接'%s'到'%s'" +msgstr "å–æ¶ˆ'%s'的连接'%s'" #: editor/connections_dialog.cpp msgid "Connect.." -msgstr "连接事件。" +msgstr "连接信å·.." #: editor/connections_dialog.cpp #: editor/plugins/animation_tree_editor_plugin.cpp msgid "Disconnect" -msgstr "åˆ é™¤äº‹ä»¶è¿žæŽ¥" +msgstr "åˆ é™¤ä¿¡å·è¿žæŽ¥" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" msgstr "ä¿¡å·" #: editor/create_dialog.cpp -#, fuzzy +msgid "Change %s Type" +msgstr "更改%s类型" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "更改" + +#: editor/create_dialog.cpp msgid "Create New %s" -msgstr "新建" +msgstr "创建新的 %s" #: editor/create_dialog.cpp editor/editor_file_dialog.cpp #: editor/filesystem_dock.cpp @@ -673,8 +637,8 @@ msgid "" msgstr "è¦åˆ é™¤çš„æ–‡ä»¶è¢«å…¶ä»–èµ„æºæ‰€ä¾èµ–,ä»ç„¶è¦åˆ 除å—ï¼Ÿï¼ˆæ— æ³•æ’¤é”€ï¼‰" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" -msgstr "æ— æ³•ç§»é™¤:\n" +msgid "Cannot remove:" +msgstr "æ— æ³•ç§»é™¤:" #: editor/dependency_editor.cpp msgid "Error loading:" @@ -756,9 +720,9 @@ msgstr "项目创始人" msgid "Lead Developer" msgstr "主è¦å¼€å‘者" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "项目管ç†å‘˜" +#: editor/editor_about.cpp +msgid "Project Manager " +msgstr "项目管ç†å‘˜ " #: editor/editor_about.cpp msgid "Developers" @@ -844,7 +808,7 @@ msgid "Success!" msgstr "完æˆï¼" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "安装" @@ -865,9 +829,8 @@ msgid "Rename Audio Bus" msgstr "é‡å‘½å音频总线(Audio Bus)" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Change Audio Bus Volume" -msgstr "切æ¢éŸ³é¢‘独å¥" +msgstr "修改音频Bus音é‡" #: editor/editor_audio_buses.cpp msgid "Toggle Audio Bus Solo" @@ -932,7 +895,7 @@ msgstr "åˆ é™¤æ•ˆæžœ" #: editor/editor_audio_buses.cpp msgid "Audio" -msgstr "" +msgstr "音频" #: editor/editor_audio_buses.cpp msgid "Add Audio Bus" @@ -1107,13 +1070,12 @@ msgid "Updating scene.." msgstr "更新场景ä¸.." #: editor/editor_data.cpp -#, fuzzy msgid "[empty]" -msgstr "(空)" +msgstr "[空]" #: editor/editor_data.cpp msgid "[unsaved]" -msgstr "" +msgstr "[ä½ä¿å˜]" #: editor/editor_dir_dialog.cpp msgid "Please select a base directory first" @@ -1153,8 +1115,8 @@ msgid "Packing" msgstr "打包ä¸" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:\n" +msgid "Template file not found:" +msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1338,7 +1300,7 @@ msgstr "GUI主题:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" -msgstr "事件:" +msgstr "ä¿¡å·:" #: editor/editor_help.cpp msgid "Enumerations" @@ -1365,6 +1327,19 @@ msgid "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 "" +"暂时没有æ¤ç±»åž‹çš„说明。请帮通过[color=$color][url=$url] 补充文档或æäº¤è¯·æ±‚ [/" +"url][/color]的方å¼å¸®åŠ©æˆ‘ä»¬å®Œå–„æ–‡æ¡£!" + +#: editor/editor_help.cpp msgid "Properties" msgstr "属性" @@ -1400,6 +1375,10 @@ msgstr "" msgid "Search Text" msgstr "æœç´¢æ–‡æœ¬" +#: editor/editor_help.cpp +msgid "Find" +msgstr "查找" + #: editor/editor_log.cpp msgid "Output:" msgstr "输出:" @@ -1411,6 +1390,10 @@ msgstr "输出:" msgid "Clear" msgstr "清除" +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "清空输出" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "ä¿å˜èµ„æºå‡ºé”™ï¼" @@ -1419,8 +1402,8 @@ msgstr "ä¿å˜èµ„æºå‡ºé”™ï¼" msgid "Save Resource As.." msgstr "资æºå¦å˜ä¸º.." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "好å§.." @@ -1474,8 +1457,9 @@ msgstr "æ¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." -msgstr "æ— æ³•ä¿å˜åœºæ™¯ï¼Œä¾èµ–项(实例)验è¯å¤±è´¥ã€‚" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "æ— æ³•ä¿å˜åœºæ™¯ï¼Œä¾èµ–项(实例或基类)验è¯å¤±è´¥ã€‚" #: editor/editor_node.cpp msgid "Failed to load resource." @@ -2055,6 +2039,13 @@ msgstr "帮助" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "æœç´¢" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "在线文档" @@ -2326,14 +2317,12 @@ msgid "Frame #:" msgstr "帧åºå·:" #: editor/editor_profiler.cpp -#, fuzzy msgid "Time" -msgstr "æ—¶é—´:" +msgstr "æ—¶é—´" #: editor/editor_profiler.cpp -#, fuzzy msgid "Calls" -msgstr "调用到" +msgstr "调用次数" #: editor/editor_run_native.cpp msgid "Select device from the list" @@ -2438,8 +2427,8 @@ msgid "No version.txt found inside templates." msgstr "模æ¿ä¸æ²¡æœ‰æ‰¾åˆ°version.txt文件。" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "æ— æ³•å°†æ¨¡æ¿ä¿å˜åˆ°ä»¥ä¸‹æ–‡ä»¶:\n" +msgid "Error creating path for templates:" +msgstr "åˆ›å»ºæ¨¡æ¿æ–‡ä»¶è·¯å¾„出错:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2472,9 +2461,8 @@ msgstr "æ— å“应。" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Request Failed." -msgstr "请求失败." +msgstr "请求失败。" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2520,7 +2508,6 @@ msgid "Connecting.." msgstr "连接ä¸.." #: editor/export_template_manager.cpp -#, fuzzy msgid "Can't Connect" msgstr "æ— æ³•è¿žæŽ¥" @@ -2594,33 +2581,28 @@ msgid "View items as a list" msgstr "将项目作为列表查看" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." -msgstr "" -"\n" -"状æ€: å¯¼å…¥æ–‡ä»¶å¤±è´¥ã€‚è¯·æ‰‹åŠ¨ä¿®å¤æ–‡ä»¶å’Œå¯¼å…¥ã€‚" +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.\n" -msgstr "æ— æ³•å°†æ–‡ä»¶å¤¹ç§»åŠ¨åˆ°å…¶è‡ªèº«ã€‚\n" +msgid "Cannot move a folder into itself." +msgstr "æ— æ³•å°†æ–‡ä»¶å¤¹ç§»åŠ¨åˆ°å…¶è‡ªèº«ã€‚" #: editor/filesystem_dock.cpp -msgid "Error moving:\n" -msgstr "移动时出错:\n" +msgid "Error moving:" +msgstr "移动出错:" #: editor/filesystem_dock.cpp -#, fuzzy -msgid "Error duplicating:\n" -msgstr "åŠ è½½å‡ºé”™:" +msgid "Error duplicating:" +msgstr "å¤åˆ¶å‡ºé”™:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" -msgstr "æ— æ³•æ›´æ–°ä¾èµ–关系:\n" +msgid "Unable to update dependencies:" +msgstr "æ— æ³•æ›´æ–°ä¾èµ–:" #: editor/filesystem_dock.cpp msgid "No name provided" @@ -2651,14 +2633,12 @@ msgid "Renaming folder:" msgstr "é‡å‘½å文件夹:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating file:" -msgstr "æ‹·è´" +msgstr "æ‹·è´æ–‡ä»¶:" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicating folder:" -msgstr "é‡å‘½å文件夹:" +msgstr "å¤åˆ¶æ–‡ä»¶å¤¹:" #: editor/filesystem_dock.cpp msgid "Expand all" @@ -2677,7 +2657,6 @@ msgid "Move To.." msgstr "移动.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Open Scene(s)" msgstr "打开场景" @@ -2694,9 +2673,8 @@ msgid "View Owners.." msgstr "查看所有者.." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Duplicate.." -msgstr "æ‹·è´" +msgstr "æ‹·è´.." #: editor/filesystem_dock.cpp msgid "Previous Directory" @@ -2793,14 +2771,12 @@ msgid "Importing Scene.." msgstr "导入场景.." #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating Lightmaps" -msgstr "转移到光照贴图:" +msgstr "æ£åœ¨ç”Ÿæˆå…‰ç…§è´´å›¾" #: editor/import/resource_importer_scene.cpp -#, fuzzy msgid "Generating for Mesh: " -msgstr "æ£åœ¨ç”ŸæˆAABB" +msgstr "æ£åœ¨ç”ŸæˆMesh" #: editor/import/resource_importer_scene.cpp msgid "Running Custom Script.." @@ -3063,9 +3039,8 @@ msgid "Past" msgstr "穿过" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Future" -msgstr "功能" +msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Depth" @@ -3085,7 +3060,7 @@ msgstr "3æ¥" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Differences Only" -msgstr "" +msgstr "ä»…ä¸åŒ" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Force White Modulate" @@ -3093,7 +3068,7 @@ msgstr "" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Include Gizmos (3D)" -msgstr "" +msgstr "包括3D控制器" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -3269,6 +3244,10 @@ msgstr "编辑节点ç›é€‰" msgid "Filters.." msgstr "ç›é€‰.." +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "åŠ¨ç”»æ ‘" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "释放" @@ -3418,23 +3397,26 @@ 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` 属性。" #: 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 "" +msgstr "没有å¯çƒ˜ç„™çš„Mesh。请确ä¿Mesh包å«UV2通é“并且勾选'Bake Light'选项。" #: 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 -#, fuzzy msgid "Bake Lightmaps" -msgstr "转移到光照贴图:" +msgstr "烘焙光照贴图" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "预览" @@ -3469,12 +3451,10 @@ msgid "Move Action" msgstr "移动动作" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move vertical guide" msgstr "ç§»åŠ¨åž‚ç›´æ ‡å°º" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Create new vertical guide" msgstr "åˆ›å»ºæ–°çš„åž‚ç›´æ ‡å°º" @@ -3670,7 +3650,6 @@ msgid "Show Grid" msgstr "æ˜¾ç¤ºç½‘æ ¼" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Show helpers" msgstr "显示辅助线" @@ -3679,9 +3658,8 @@ msgid "Show rulers" msgstr "æ˜¾ç¤ºæ ‡å°º" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Show guides" -msgstr "æ˜¾ç¤ºæ ‡å°º" +msgstr "æ˜¾ç¤ºæ ‡å°º " #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -3739,6 +3717,14 @@ msgstr "æ·»åŠ (Add) %s" msgid "Adding %s..." msgstr "æ·»åŠ (Adding) %s..." +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +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" @@ -3750,11 +3736,6 @@ msgid "Error instancing scene from %s" msgstr "从%s实例化场景出错" #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." -msgstr "æ¤æ“作åªèƒ½åº”用于å•个选ä¸èŠ‚ç‚¹ã€‚" - -#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" msgstr "修改默认值" @@ -3802,9 +3783,8 @@ msgid "Flat0" msgstr "Flat0" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Flat1" -msgstr "Flat1" +msgstr "" #: editor/plugins/curve_editor_plugin.cpp msgid "Ease in" @@ -3815,9 +3795,8 @@ msgid "Ease out" msgstr "æ¸å‡º" #: editor/plugins/curve_editor_plugin.cpp -#, fuzzy msgid "Smoothstep" -msgstr "圆滑级别" +msgstr "圆滑级别 " #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" @@ -3950,7 +3929,7 @@ msgstr "创建导航Mesh(ç½‘æ ¼)" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Contained Mesh is not of type ArrayMesh." -msgstr "" +msgstr "包å«çš„Mesh䏿˜¯ArrayMesh类型。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "UV Unwrap failed, mesh may not be manifold?" @@ -3958,11 +3937,11 @@ msgstr "" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "No mesh to debug." -msgstr "" +msgstr "没有è¦è°ƒè¯•çš„mesh。" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Model has no UV in this layer" -msgstr "" +msgstr "模型在æ¤å±‚上没有UV图" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "MeshInstance lacks a Mesh!" @@ -4005,14 +3984,12 @@ msgid "Create Outline Mesh.." msgstr "åˆ›å»ºè½®å»“ç½‘æ ¼(Outline Mesh).." #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV1" -msgstr "视图" +msgstr "查看UV1" #: editor/plugins/mesh_instance_editor_plugin.cpp -#, fuzzy msgid "View UV2" -msgstr "视图" +msgstr "查看UV2" #: editor/plugins/mesh_instance_editor_plugin.cpp msgid "Unwrap UV2 for Lightmap/AO" @@ -4128,11 +4105,11 @@ msgstr "å¡«å……" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Bake!" -msgstr "烘培ï¼" +msgstr "烘焙ï¼" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" -msgstr "çƒ˜ç„™å¯¼èˆªç½‘æ ¼(mesh).\n" +msgid "Bake the navigation mesh." +msgstr "çƒ˜ç„™å¯¼èˆªç½‘æ ¼(mesh)。" #: editor/plugins/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -4147,50 +4124,42 @@ msgid "Calculating grid size..." msgstr "æ£åœ¨è®¡ç®—ç½‘æ ¼å¤§å°..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Creating heightfield..." -msgstr "创建高度图..." +msgstr "æ£åœ¨åˆ›å»ºé«˜åº¦å›¾..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Marking walkable triangles..." msgstr "æ ‡è®°å¯ç§»åŠ¨ä¸‰è§’å½¢..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Constructing compact heightfield..." -msgstr "构建紧凑高度图..." +msgstr "构建紧凑高度图... " #: editor/plugins/navigation_mesh_generator.cpp msgid "Eroding walkable area..." msgstr "æ£åœ¨è®¡ç®—å¯è¡ŒåŒºåŸŸ..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Partitioning..." -msgstr "分区ä¸..." +msgstr "分区ä¸... " #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Creating contours..." -msgstr "æ£åœ¨åˆ›å»ºè½®å»“..." +msgstr "æ£åœ¨åˆ›å»ºè½®å»“... " #: editor/plugins/navigation_mesh_generator.cpp msgid "Creating polymesh..." msgstr "åˆ›å»ºå¤šè¾¹å½¢ç½‘æ ¼..." #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Converting to native navigation mesh..." -msgstr "转æ¢ä¸ºå¯¼èˆªç½‘æ ¼(mesh)..." +msgstr "转æ¢ä¸ºå¯¼èˆªç½‘æ ¼(mesh)... " #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Navigation Mesh Generator Setup:" -msgstr "å¯¼èˆªç½‘æ ¼ç”Ÿæˆè®¾ç½®:" +msgstr "å¯¼èˆªç½‘æ ¼(Mesh)生æˆè®¾ç½®:" #: editor/plugins/navigation_mesh_generator.cpp -#, fuzzy msgid "Parsing Geometry..." msgstr "è§£æžå¤šè¾¹å½¢ä¸..." @@ -4395,19 +4364,16 @@ msgid "Curve Point #" msgstr "曲线定点 #" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Set Curve Point Position" -msgstr "è®¾ç½®æ›²çº¿é¡¶ç‚¹åæ ‡" +msgstr "è®¾ç½®æ›²çº¿çš„é¡¶ç‚¹åæ ‡" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Set Curve In Position" -msgstr "设置的曲线开始ä½ç½®ï¼ˆPos)" +msgstr "设置曲线的内控制点" #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Set Curve Out Position" -msgstr "设置曲线结æŸä½ç½®ï¼ˆPos)" +msgstr "设置曲线外控制点" #: editor/plugins/path_editor_plugin.cpp msgid "Split Path" @@ -4531,17 +4497,17 @@ msgstr "åŠ è½½èµ„æº" msgid "Paste" msgstr "粘贴" +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "é¢„åŠ è½½èµ„æº" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "清ç†å½“剿–‡ä»¶" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" -"å…³é—å¹¶ä¿å˜æ›´æ”¹å—?\n" -"\"" +msgid "Close and save changes?" +msgstr "å…³é—å¹¶ä¿å˜æ›´æ”¹å—?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4612,9 +4578,13 @@ msgid "Soft Reload Script" msgstr "软é‡è½½è„šæœ¬" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Copy Script Path" -msgstr "æ‹·è´è·¯å¾„" +msgstr "æ‹·è´è„šæœ¬è·¯å¾„" + +#: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "在资æºç®¡ç†å™¨ä¸å±•示" #: editor/plugins/script_editor_plugin.cpp msgid "History Prev" @@ -4645,7 +4615,6 @@ msgid "Close All" msgstr "å…³é—全部" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Close Other Tabs" msgstr "å…³é—å…¶ä»–æ ‡ç¾é¡µ" @@ -4806,9 +4775,8 @@ msgid "Clone Down" msgstr "æ‹·è´åˆ°ä¸‹ä¸€è¡Œ" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Fold/Unfold Line" -msgstr "å–æ¶ˆæŠ˜å 行" +msgstr "切æ¢å 行" #: editor/plugins/script_text_editor.cpp msgid "Fold All Lines" @@ -5044,7 +5012,6 @@ msgid "Scaling: " msgstr "缩放: " #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Translating: " msgstr "è¯è¨€:" @@ -5053,84 +5020,84 @@ msgid "Rotating %s degrees." msgstr "旋转%s度。" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." -msgstr "仰视图(Bottom View)。" +msgid "Keying is disabled (no key inserted)." +msgstr "键控被ç¦ç”¨ï¼ˆæœªæ’入键)。" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" -msgstr "底部" +msgid "Animation Key Inserted." +msgstr "æ’入动画键。" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." -msgstr "俯视图(Top View)。" +msgid "Objects Drawn" +msgstr "绘制的对象" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "åŽè§†å›¾ã€‚" +msgid "Material Changes" +msgstr "æè´¨å˜æ›´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "åŽæ–¹" +msgid "Shader Changes" +msgstr "ç€è‰²å™¨å˜æ›´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "æ£è§†å›¾ã€‚" +msgid "Surface Changes" +msgstr "表é¢å˜æ›´" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" -msgstr "å‰é¢" +msgid "Draw Calls" +msgstr "绘制调用(Draw Calls)" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." -msgstr "左视图。" +msgid "Vertices" +msgstr "顶点" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" -msgstr "左方" +msgid "FPS" +msgstr "帧数" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." -msgstr "å³è§†å›¾ã€‚" +msgid "Top View." +msgstr "俯视图(Top View)。" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" -msgstr "峿–¹" +msgid "Bottom View." +msgstr "仰视图(Bottom View)。" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." -msgstr "键控被ç¦ç”¨ï¼ˆæœªæ’入键)。" +msgid "Bottom" +msgstr "底部" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." -msgstr "æ’入动画键。" +msgid "Left View." +msgstr "左视图。" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" -msgstr "绘制的对象" +msgid "Left" +msgstr "左方" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Material Changes" -msgstr "æè´¨å˜æ›´" +msgid "Right View." +msgstr "å³è§†å›¾ã€‚" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" -msgstr "ç€è‰²å™¨å˜æ›´" +msgid "Right" +msgstr "峿–¹" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" -msgstr "表é¢å˜æ›´" +msgid "Front View." +msgstr "æ£è§†å›¾ã€‚" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" -msgstr "绘制调用(Draw Calls)" +msgid "Front" +msgstr "å‰é¢" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" -msgstr "顶点" +msgid "Rear View." +msgstr "åŽè§†å›¾ã€‚" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" -msgstr "帧数" +msgid "Rear" +msgstr "åŽæ–¹" #: editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -5144,6 +5111,10 @@ msgstr "好å§" 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 "Display Normal" msgstr "显示法线" @@ -5177,7 +5148,6 @@ msgid "View FPS" msgstr "查看帧率" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Half Resolution" msgstr "一åŠåˆ†è¾¨çއ" @@ -5218,16 +5188,12 @@ msgid "Freelook Speed Modifier" msgstr "自由视图速度调整" #: editor/plugins/spatial_editor_plugin.cpp -msgid "preview" -msgstr "预览" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "XFormå¯¹è¯æ¡†" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "é€‰æ‹©æ¨¡å¼ (Q)\n" +msgid "Select Mode (Q)" +msgstr "é€‰æ‹©æ¨¡å¼ (Q)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5256,14 +5222,12 @@ msgid "Local Coords" msgstr "æœ¬åœ°åæ ‡" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Local Space Mode (%s)" -msgstr "缩放模å¼ï¼ˆR)" +msgstr "æœ¬åœ°ç©ºé—´æ¨¡å¼ (%s)" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Snap Mode (%s)" -msgstr "å¸é™„模å¼:" +msgstr "å¸é™„æ¨¡å¼ (%s)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View" @@ -5326,9 +5290,8 @@ msgid "Tool Scale" msgstr "缩放工具" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Toggle Freelook" -msgstr "开关自由观察模å¼" +msgstr "切æ¢è‡ªç”±è§‚察模å¼" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform" @@ -5381,21 +5344,19 @@ msgstr "设置" #: editor/plugins/spatial_editor_plugin.cpp msgid "Skeleton Gizmo visibility" -msgstr "" +msgstr "骨骼控制器å¯è§" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Settings" msgstr "å¸é™„设置" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Translate Snap:" msgstr "移动å¸é™„:" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Rotate Snap (deg.):" -msgstr "旋转å¸é™„(度):" +msgstr "旋转å¸é™„(度):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" @@ -5509,10 +5470,18 @@ msgstr "å¾€å‰ç§»åЍ" msgid "Move (After)" msgstr "å¾€åŽç§»åЍ" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "动画帧" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "StyleBox预览:" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "æ ·å¼" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "设置纹ç†åŒºåŸŸ" @@ -5538,14 +5507,17 @@ msgid "Auto Slice" msgstr "自动è£å‰ª" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "ç½‘æ ¼åç§»é‡:" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "æ¥é•¿ï¼ˆç§’):" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "分隔:" @@ -5607,9 +5579,8 @@ msgid "Create Empty Editor Template" msgstr "创建空编辑器主题模æ¿" #: editor/plugins/theme_editor_plugin.cpp -#, fuzzy msgid "Create From Current Editor Theme" -msgstr "从现有编辑器主题模æ¿åˆ›å»º" +msgstr "从当å‰ç¼–辑器主题创建" #: editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -5684,6 +5655,10 @@ msgstr "å—体" msgid "Color" msgstr "颜色" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "主题" + #: editor/plugins/tile_map_editor_plugin.cpp msgid "Erase Selection" msgstr "擦除选ä¸" @@ -5769,9 +5744,8 @@ msgid "Merge from scene?" msgstr "确定è¦åˆå¹¶åœºæ™¯ï¼Ÿ" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Tile Set" -msgstr "ç –å—集.." +msgstr "ç –å—集" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -5785,26 +5759,52 @@ msgstr "从场景ä¸åˆå¹¶" msgid "Error" msgstr "错误" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" +"请选择一个ååœ°ç –(sub-tile)ä½œä¸ºå›¾æ ‡ï¼Œæ¤å›¾æ ‡è¿˜ä¼šè¢«ç»‘å®šä¸ºæ— æ•ˆçš„åœ°ç –(autotile)。" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" +"é¼ æ ‡å·¦é”®ï¼š å¯ç”¨bit.\n" +"é¼ æ ‡å³é”®ï¼š ç¦ç”¨bit" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select current edited sub-tile." +msgstr "ä¿å˜å½“å‰ç¼–辑的ååœ°ç –(sub-tile)。" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "选择è¦ä¿®æ”¹ä¼˜å…ˆçº§çš„ååœ°ç –ï¼ˆsub-tile)。" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "å–æ¶ˆ" #: editor/project_export.cpp msgid "Runnable" -msgstr "å¯ç”¨" +msgstr "坿‰§è¡Œçš„" #: editor/project_export.cpp -#, fuzzy msgid "Delete patch '%s' from list?" -msgstr "åˆ é™¤Patch''%s'" +msgstr "确认è¦ä»Žåˆ—表ä¸åˆ 除Patch '%s' å—?" #: editor/project_export.cpp msgid "Delete preset '%s'?" -msgstr "åˆ é™¤é€‰ä¸çš„ '%s'?" +msgstr "åˆ é™¤å½“å‰çš„ '%s' ?" #: editor/project_export.cpp msgid "Export templates for this platform are missing/corrupted: " -msgstr "没有下列平å°çš„导出模æ¿: " +msgstr "该平å°çš„导出模æ¿ç¼ºå¤±æˆ–å·²ç»æŸå: " #: editor/project_export.cpp msgid "Presets" @@ -5893,10 +5893,8 @@ msgid "Please choose a 'project.godot' file." msgstr "请选择一个'project.godot'文件。" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." -msgstr "您的工程在éžç©ºæ–‡ä»¶å¤¹ä¸åˆ›å»º (您å¯èƒ½éœ€è¦å»ºç«‹ä¸€ä¸ªæ–°æ–‡ä»¶å¤¹)。" +msgid "Please choose an empty folder." +msgstr "请选择一个空目录。" #: editor/project_manager.cpp msgid "Please choose a folder that does not contain a 'project.godot' file." @@ -5907,6 +5905,14 @@ msgid "Imported Project" 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 "ä¸ºé¡¹ç›®å‘½åæ˜¯ä¸€ä¸ªå¥½ä¸»æ„。" @@ -5947,14 +5953,26 @@ 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 "项目åç§°:" @@ -5971,10 +5989,6 @@ msgid "Browse" msgstr "æµè§ˆ" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "ç¢‰å ¡äº†ï¼" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "未命å项目" @@ -6026,6 +6040,10 @@ msgid "" msgstr "æ‚¨ç¡®è®¤è¦æ‰«æ%s目录下现有的Godot项目å—?" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "项目管ç†å‘˜" + +#: editor/project_manager.cpp msgid "Project List" msgstr "项目列表" @@ -6154,11 +6172,6 @@ msgid "Button 9" msgstr "按键 9" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "更改" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "手柄摇æ†åºå·:" @@ -6171,7 +6184,6 @@ msgid "Joypad Button Index:" msgstr "手柄按钮:" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Erase Input Action" msgstr "移除输入事件" @@ -6229,7 +6241,7 @@ msgstr "'%s'是内置设定,ä¸èƒ½åˆ 除。" #: editor/project_settings_editor.cpp msgid "Delete Item" -msgstr "åˆ é™¤è¾“å…¥äº‹ä»¶" +msgstr "åˆ é™¤æ¡ç›®" #: editor/project_settings_editor.cpp msgid "Can't contain '/' or ':'" @@ -6284,9 +6296,8 @@ msgid "Remove Resource Remap Option" msgstr "移除资æºé‡å®šå‘选项" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Changed Locale Filter" -msgstr "更改区域设置ç›é€‰æ¨¡å¼" +msgstr "修改区域设置ç›é€‰æ¨¡å¼" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter Mode" @@ -6353,12 +6364,10 @@ msgid "Locale" msgstr "地区" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Locales Filter" msgstr "区域ç›é€‰å™¨" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Show all locales" msgstr "显示所有区域设置" @@ -6412,11 +6421,11 @@ msgstr "目录.." #: editor/property_editor.cpp msgid "Assign" -msgstr "分é…(Assign)" +msgstr "分é…" #: editor/property_editor.cpp msgid "Select Node" -msgstr "选择一个节点" +msgstr "选择节点" #: editor/property_editor.cpp msgid "New Script" @@ -6424,7 +6433,7 @@ msgstr "新建脚本" #: editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "新建%s" #: editor/property_editor.cpp msgid "Make Unique" @@ -6476,9 +6485,8 @@ msgid "Select Property" msgstr "选择属性" #: editor/property_selector.cpp -#, fuzzy msgid "Select Virtual Method" -msgstr "选择虚拟方法" +msgstr "选择虚拟方法 " #: editor/property_selector.cpp msgid "Select Method" @@ -6498,7 +6506,7 @@ msgstr "é‡è®¾çˆ¶èŠ‚ç‚¹" #: editor/reparent_dialog.cpp msgid "Reparent Location (Select new Parent):" -msgstr "é‡è®¾ä½ç½®ï¼ˆé€‰æ‹©çˆ¶èŠ‚ç‚¹ï¼‰:" +msgstr "é‡è®¾ä½ç½®ï¼ˆé€‰æ‹©æ–°çš„父节点):" #: editor/reparent_dialog.cpp msgid "Keep Global Transform" @@ -6542,10 +6550,6 @@ msgid "Error loading scene from %s" msgstr "从%såŠ è½½åœºæ™¯å‡ºé”™" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "好的" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6597,7 +6601,7 @@ msgstr "åŠ è½½ä¸ºå ä½ç¬¦" #: editor/scene_tree_dock.cpp msgid "Discard Instancing" -msgstr "废弃实例化" +msgstr "放弃实例化" #: editor/scene_tree_dock.cpp msgid "Makes Sense!" @@ -6630,8 +6634,8 @@ msgid "Error duplicating scene to save it." msgstr "å¤åˆ¶åœºæ™¯å‡ºé”™ã€‚" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "å资æº:" +msgid "Sub-Resources" +msgstr "å资æº" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6826,7 +6830,7 @@ msgstr "文件路径为空" #: editor/script_create_dialog.cpp msgid "Path is not local" -msgstr "必须是项目路径" +msgstr "必须是项目内的路径" #: editor/script_create_dialog.cpp msgid "Invalid base path" @@ -6837,9 +6841,8 @@ msgid "Directory of the same name exists" msgstr "å˜åœ¨åŒå目录" #: editor/script_create_dialog.cpp -#, fuzzy msgid "File exists, will be reused" -msgstr "文件å˜åœ¨, 将被é‡ç”¨" +msgstr "文件å˜åœ¨,将被é‡ç”¨" #: editor/script_create_dialog.cpp msgid "Invalid extension" @@ -6934,7 +6937,7 @@ msgstr "函数:" msgid "Pick one or more items from the list to display the graph." msgstr "从列表ä¸é€‰å–一个或多个项目以显示图形。" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "错误" @@ -6943,6 +6946,10 @@ msgid "Child Process Connected" msgstr "å进程已连接" #: editor/script_editor_debugger.cpp +msgid "Copy Error" +msgstr "å¤åˆ¶é”™è¯¯ä¿¡æ¯" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "编辑上一个实例" @@ -6952,7 +6959,7 @@ msgstr "编辑下一个实例" #: editor/script_editor_debugger.cpp msgid "Stack Frames" -msgstr "å †æ ˆå¸§ï¼ˆFrames)" +msgstr "å †æ ˆå¸§ï¼ˆStack Frames)" #: editor/script_editor_debugger.cpp msgid "Variable" @@ -6964,7 +6971,7 @@ msgstr "错误:" #: editor/script_editor_debugger.cpp msgid "Stack Trace (if applicable):" -msgstr "è°ƒç”¨å †æ ˆ:" +msgstr "è°ƒç”¨å †æ ˆ(若适用):" #: editor/script_editor_debugger.cpp msgid "Profiler" @@ -7036,7 +7043,7 @@ msgstr "å¿«æ·é”®" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "" +msgstr "绑定" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -7088,46 +7095,41 @@ msgstr "修改探针(Probe)范围" #: 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 -#, fuzzy msgid "Remove current entry" -msgstr "移除路径顶点" +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:" -msgstr "" +msgstr "å¹³å°:" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Platform" -msgstr "å¤åˆ¶åˆ°å¹³å°.." +msgstr "å¹³å°" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "Dynamic Library" -msgstr "库" +msgstr "动æ€é“¾æŽ¥åº“" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Add an architecture entry" -msgstr "" +msgstr "æ·»åŠ CPU架构项" #: modules/gdnative/gdnative_library_editor_plugin.cpp -#, fuzzy msgid "GDNativeLibrary" -msgstr "GDNative" +msgstr "动æ€é“¾æŽ¥åº“" #: modules/gdnative/gdnative_library_singleton_editor.cpp -#, fuzzy msgid "Library" msgstr "库" @@ -7167,7 +7169,7 @@ msgstr "没有基于脚本" #: modules/gdscript/gdscript_functions.cpp msgid "Not based on a resource file" -msgstr "æ²¡æœ‰åŸºäºŽä¸€ä¸ªèµ„æºæ–‡ä»¶" +msgstr "æ²¡æœ‰åŸºäºŽèµ„æºæ–‡ä»¶" #: modules/gdscript/gdscript_functions.cpp msgid "Invalid instance dictionary format (missing @path)" @@ -7187,11 +7189,11 @@ msgstr "éžæ³•çš„å—å…¸å®žä¾‹ï¼ˆæ´¾ç”Ÿç±»éžæ³•)" #: modules/gdscript/gdscript_functions.cpp msgid "Object can't provide a length." -msgstr "对象ä¸èƒ½æä¾›é•¿åº¦ã€‚" +msgstr "å¯¹è±¡æ— æ³•æä¾›é•¿åº¦ã€‚" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Delete Selection" -msgstr "åˆ é™¤é€‰æ‹©çš„æ …æ ¼å›¾" +msgstr "åˆ é™¤é€‰æ‹©çš„GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Duplicate Selection" @@ -7199,7 +7201,7 @@ msgstr "å¤åˆ¶é€‰ä¸é¡¹" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Floor:" -msgstr "地æ¿:" +msgstr "层:" #: modules/gridmap/grid_map_editor_plugin.cpp #, fuzzy @@ -7217,7 +7219,7 @@ msgstr "上一个目录" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Next Floor" -msgstr "下一个目录" +msgstr "下一层" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Clip Disabled" @@ -7284,22 +7286,61 @@ msgid "Erase Area" msgstr "擦除区域" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Clear Selection" -msgstr "清除选ä¸" +msgstr "清空选ä¸" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" -msgstr "æ …æ ¼å›¾è®¾ç½®" +msgstr "GridMap设置" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "Pick Distance:" msgstr "拾å–è·ç¦»:" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "æ£åœ¨åˆ›ç”Ÿæˆå†³æ–¹æ¡ˆ... " + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "æ£åœ¨ç”ŸæˆC#项目..." + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create solution." +msgstr "创建解决方案失败。" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "ä¿å˜è§£å†³æ–¹æ¡ˆå¤±è´¥ã€‚" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "完æˆ" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "创建C#项目失败" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "Mono" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "创建C#解决方案" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "构建" +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Build Project" +msgstr "构建项目" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "è¦å‘Š" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7365,7 +7406,7 @@ msgstr "åç§°ä¸æ˜¯æœ‰æ•ˆçš„æ ‡è¯†ç¬¦ï¼š" #: modules/visual_script/visual_script_editor.cpp msgid "Name already in use by another func/var/signal:" -msgstr "åç§°å·²ç»è¢«å…¶ä»–的函数/å˜é‡/事件å 用:" +msgstr "åç§°å·²ç»è¢«å…¶ä»–的函数/å˜é‡/ä¿¡å·å 用:" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Function" @@ -7377,7 +7418,7 @@ msgstr "é‡å‘½åå˜é‡" #: modules/visual_script/visual_script_editor.cpp msgid "Rename Signal" -msgstr "é‡å‘½å事件" +msgstr "é‡å‘½åä¿¡å·" #: modules/visual_script/visual_script_editor.cpp msgid "Add Function" @@ -7389,7 +7430,7 @@ msgstr "æ·»åŠ å˜é‡" #: modules/visual_script/visual_script_editor.cpp msgid "Add Signal" -msgstr "æ·»åŠ äº‹ä»¶" +msgstr "æ·»åŠ ä¿¡å·" #: modules/visual_script/visual_script_editor.cpp msgid "Change Expression" @@ -7408,27 +7449,24 @@ msgid "Duplicate VisualScript Nodes" msgstr "å¤åˆ¶ VisualScript 节点" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." -msgstr "按ä½%s放置一个Getter节点,按ä½Shift键放置一个通用ç¾å。" +msgstr "æŒ‰ä½ %s 放置一个Getter节点,按ä½Shift键放置一个通用ç¾å。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." msgstr "按ä½Ctrl键放置一个Getter节点。按ä½Shift键放置一个通用ç¾å。" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a simple reference to the node." -msgstr "按ä½%s放置一个场景节点的引用节点。" +msgstr "æŒ‰ä½ %s 放置一个场景节点的引用节点。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a simple reference to the node." msgstr "按ä½Ctrl键放置一个场景节点的引用节点。" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Hold %s to drop a Variable Setter." -msgstr "按ä½%s放置å˜é‡çš„Setter节点。" +msgstr "æŒ‰ä½ %s 放置å˜é‡çš„Setter节点。" #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." @@ -7440,15 +7478,15 @@ msgstr "æ·»åŠ Preload节点" #: modules/visual_script/visual_script_editor.cpp msgid "Add Node(s) From Tree" -msgstr "从场景导入节点" +msgstr "ä»Žæ ‘ä¸æ·»åŠ èŠ‚ç‚¹" #: modules/visual_script/visual_script_editor.cpp msgid "Add Getter Property" -msgstr "æ·»åŠ Getter Property" +msgstr "æ·»åŠ å±žæ€§Getter" #: modules/visual_script/visual_script_editor.cpp msgid "Add Setter Property" -msgstr "æ·»åŠ Setter Property" +msgstr "æ·»åŠ å±žæ€§Setter" #: modules/visual_script/visual_script_editor.cpp msgid "Change Base Type" @@ -7468,31 +7506,31 @@ msgstr "连接节点" #: modules/visual_script/visual_script_editor.cpp msgid "Condition" -msgstr "æ¡ä»¶èŠ‚ç‚¹ï¼ˆCondition)" +msgstr "æ¡ä»¶ï¼ˆCondition)" #: modules/visual_script/visual_script_editor.cpp msgid "Sequence" -msgstr "åºåˆ—节点(Sequence)" +msgstr "åºåˆ—(Sequence)" #: modules/visual_script/visual_script_editor.cpp msgid "Switch" -msgstr "选择节点(Switch)" +msgstr "选择(Switch)" #: modules/visual_script/visual_script_editor.cpp msgid "Iterator" -msgstr "é历节点(Iterator)" +msgstr "é历(Iterator)" #: modules/visual_script/visual_script_editor.cpp msgid "While" -msgstr "æ¡ä»¶å¾ªçŽ¯èŠ‚ç‚¹ï¼ˆWhile)" +msgstr "æ¡ä»¶å¾ªçŽ¯ï¼ˆWhile)" #: modules/visual_script/visual_script_editor.cpp msgid "Return" -msgstr "返回节点(Return)" +msgstr "返回" #: modules/visual_script/visual_script_editor.cpp msgid "Call" -msgstr "调用到" +msgstr "调用" #: modules/visual_script/visual_script_editor.cpp msgid "Get" @@ -7504,7 +7542,7 @@ msgstr "脚本已å˜åœ¨å‡½æ•° '%s'" #: modules/visual_script/visual_script_editor.cpp msgid "Change Input Value" -msgstr "更改输入的值" +msgstr "更改输入值" #: modules/visual_script/visual_script_editor.cpp msgid "Can't copy the function node." @@ -7536,7 +7574,7 @@ msgstr "编辑信å·" #: modules/visual_script/visual_script_editor.cpp msgid "Remove Signal" -msgstr "åˆ é™¤äº‹ä»¶" +msgstr "åˆ é™¤ä¿¡å·" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Variable:" @@ -7544,7 +7582,7 @@ msgstr "编辑å˜é‡ï¼š" #: modules/visual_script/visual_script_editor.cpp msgid "Editing Signal:" -msgstr "编辑事件:" +msgstr "编辑信å·:" #: modules/visual_script/visual_script_editor.cpp msgid "Base Type:" @@ -7556,11 +7594,11 @@ msgstr "有效节点:" #: modules/visual_script/visual_script_editor.cpp msgid "Select or create a function to edit graph" -msgstr "选择或创建一个函数æ¥ç¼–辑图" +msgstr "选择或创建一个函数æ¥ç¼–辑" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Signal Arguments:" -msgstr "ç¼–è¾‘äº‹ä»¶å‚æ•°:" +msgstr "编辑信å·å‚æ•°:" #: modules/visual_script/visual_script_editor.cpp msgid "Edit Variable:" @@ -7568,7 +7606,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" @@ -7612,7 +7650,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: " @@ -7646,29 +7684,31 @@ 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:\n" -msgstr "æ— æ³•å†™å…¥æ–‡ä»¶:\n" +msgid "Could not write file:" +msgstr "æ— æ³•å†™å…¥æ–‡ä»¶:" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "æ— æ³•æ‰“å¼€å¯¼å‡ºæ¨¡æ¿ï¼š\n" +msgid "Could not open template for export:" +msgstr "æ— æ³•æ‰“å¼€å¯¼å‡ºæ¨¡æ¿ï¼š" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" -msgstr "æ— æ•ˆçš„å¯¼å‡ºæ¨¡æ¿ï¼š\n" +msgid "Invalid export template:" +msgstr "å¯¼å‡ºæ¨¡æ¿æ— 效:" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not read custom HTML shell:\n" -msgstr "æ— æ³•è¯»å–自定义HTML命令:\n" +msgid "Could not read custom HTML shell:" +msgstr "æ— æ³•è¯»å–自定义HTML命令:" #: platform/javascript/export/export.cpp -#, fuzzy -msgid "Could not read boot splash image file:\n" -msgstr "æ— æ³•è¯»å–å¯åŠ¨å›¾ç‰‡æ–‡ä»¶:\n" +msgid "Could not read boot splash image file:" +msgstr "æ— æ³•è¯»å–å¯åŠ¨å›¾ç‰‡:" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "使用默认å¯åŠ¨å›¾ç‰‡ã€‚" #: scene/2d/animated_sprite.cpp msgid "" @@ -7686,6 +7726,15 @@ msgstr "" "æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个CanvasModulate类型的节点,场景ä¸çš„第一个CanvasModulate" "节点能æ£å¸¸å·¥ä½œï¼Œå…¶ä½™çš„将被忽略。" +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" +"该节点没有æè¿°å…¶å½¢çŠ¶çš„åèŠ‚ç‚¹ï¼Œå› æ¤å®ƒå°†æ— 法进行碰撞交互。\n" +"è¯·æ·»åŠ CollisionShape2D或CollisionPolygon2D类型的å节点æ¥å®šä¹‰å®ƒçš„形状。" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7758,21 +7807,21 @@ msgstr "ç²’åæè´¨æ²¡æœ‰æŒ‡å®šï¼Œè¯¥è¡Œä¸ºæ— 效。" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." -msgstr "PathFollow2Dç±»åž‹çš„èŠ‚ç‚¹åªæœ‰æ”¾åœ¨Path2D节点下æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "PathFollow2Dç±»åž‹çš„èŠ‚ç‚¹åªæœ‰ä½œä¸ºPath2Dçš„å节点节æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" -"è¿è¡Œæ—¶ï¼Œä¿®æ”¹RigidBody2D (character或rigid模å¼ï¼‰çš„尺寸,会修改物ç†å¼•擎的大å°" -"尺寸。\n" -"修改å节点碰撞形状的大å°ä½œä¸ºä»£æ›¿ã€‚" +"对RigidBody2D (在character或rigidæ¨¡å¼æƒ³ï¼‰çš„尺寸修改在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•擎的覆" +"盖。\n" +"建议您修改å节点的碰撞形状。" #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." -msgstr "path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Node2D节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "Path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Node2D节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -7827,6 +7876,15 @@ msgstr "æ£åœ¨å®Œæˆåˆ’分" msgid "Lighting Meshes: " msgstr "æ£åœ¨ç»˜åˆ¶ç½‘æ ¼" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" +"该节点没有æè¿°å…¶å½¢çŠ¶çš„åèŠ‚ç‚¹ï¼Œå› æ¤å®ƒå°†æ— 法进行碰撞交互。\n" +"è¯·æ·»åŠ CollisionShape或CollisionPolygon类型的å节点æ¥å®šä¹‰å®ƒçš„形状。" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7863,7 +7921,7 @@ msgstr "æ£åœ¨ç»˜åˆ¶ç½‘æ ¼" #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." -msgstr "æ¤èŠ‚ç‚¹éœ€è¦è®¾ç½®NavigationMeshèµ„æºæ‰èƒ½å·¥ä½œã€‚" +msgstr "æ¤èŠ‚ç‚¹éœ€è¦è®¾ç½®NavigationMeshèµ„æºæ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/3d/navigation_mesh.cpp msgid "" @@ -7875,17 +7933,17 @@ msgstr "" #: scene/3d/particles.cpp msgid "" "Nothing is visible because meshes have not been assigned to draw passes." -msgstr "ç²’åä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshes)指定到绘制通é“(draw passes)。" +msgstr "ç²’åä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshe)指定到绘制通é“(draw passes)。" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" -"è¿è¡Œæ—¶ï¼Œä¿®æ”¹RigidBody(character或rigid模å¼ï¼‰çš„尺寸,会修改物ç†å¼•擎的大å°å°º" -"寸。\n" -"修改å节点碰撞形状的大å°ä½œä¸ºä»£æ›¿ã€‚" +"对RigidBody(在character或rigid模å¼ä¸‹ï¼‰çš„尺寸修改,在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•擎的覆" +"盖。\n" +"建议您修改å节点的碰撞形状。" #: scene/3d/remote_transform.cpp msgid "Path property must point to a valid Spatial node to work." @@ -7909,7 +7967,8 @@ msgid "" "VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " "it as a child of a VehicleBody." msgstr "" -"VehicleWheel 为 VehicleBody æä¾›ä¸€ä¸ªè½¦è½®ç³»ç»Ÿã€‚请将它作为VehicleBodyçš„å节点。" +"VehicleWheel 为 VehicleBody æä¾›ä¸€ä¸ªè½¦è½®ç³»ç»Ÿï¼ˆWheel System)。请将它作为" +"VehicleBodyçš„å节点。" #: scene/gui/color_picker.cpp msgid "Raw Mode" @@ -7928,9 +7987,8 @@ msgid "Please Confirm..." msgstr "请确认..." #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Select this Folder" -msgstr "选择方å¼" +msgstr "选择当å‰ç›®å½•" #: scene/gui/popup.cpp msgid "" @@ -7938,8 +7996,8 @@ msgid "" "functions. Making them visible for editing is fine though, but they will " "hide upon running." msgstr "" -"Popupå¯¹è±¡é»˜è®¤ä¿æŒéšè—,除éžä½ 调用popup()方法。编辑时å¯ä»¥è®©å®ƒä»¬ä¿æŒå¯è§ï¼Œä½†è¿" -"行时它们会自动éšè—。" +"Popupå¯¹è±¡é»˜è®¤ä¿æŒéšè—,除éžä½ 调用popup()或其他popup相关方法。编辑时å¯ä»¥è®©å®ƒä»¬" +"ä¿æŒå¯è§ï¼Œä½†å®ƒåœ¨è¿è¡Œæ—¶ä»¬ä¼šè‡ªåЍéšè—。" #: scene/gui/scroll_container.cpp msgid "" @@ -7948,8 +8006,7 @@ msgid "" "minimum size manually." msgstr "" "ScrollContainer旨在与å•ä¸ªåæŽ§ä»¶é…åˆä½¿ç”¨ã€‚\n" -"使用Container(VBox,HBoxç‰ï¼‰ä½œä¸ºå…¶å控件并手动或设置Control的自定义最å°å°º" -"寸。" +"请使用Container(VBox,HBoxç‰ï¼‰ä½œä¸ºå…¶å控件或手动设置Control的最å°å°ºå¯¸ã€‚" #: scene/gui/tree.cpp msgid "(Other)" @@ -7957,9 +8014,9 @@ msgstr "(其它)" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." -msgstr "项目设置ä¸çš„é»˜è®¤çŽ¯å¢ƒæ— æ³•åŠ è½½ï¼Œè¯¦è§ï¼ˆæ¸²æŸ“->视图->默认环境) 。" +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." +msgstr "æ— æ³•åŠ è½½é¡¹ç›®è®¾ç½®ä¸çš„默认环境,详è§ï¼ˆæ¸²æŸ“->视图->默认环境)。" #: scene/main/viewport.cpp msgid "" @@ -7968,9 +8025,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)ã€‚å¦‚æžœä½ åˆ»æ„æ‰“算让其直接在å±å¹•上显" +"示其内容,使其æˆä¸ºå控件的所以它å¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·è®¾ç½®ä¸ºRender " +"target,并将其内部纹ç†åˆ†é…给一些节点以显示。" #: scene/resources/dynamic_font.cpp msgid "Error initializing FreeType." @@ -7988,6 +8045,38 @@ msgstr "åŠ è½½å—体出错。" msgid "Invalid font size." msgstr "å—体大å°éžæ³•。" +#~ msgid "Next" +#~ msgstr "下一项" + +#~ msgid "Not found!" +#~ msgstr "未找到ï¼" + +#~ msgid "Replace By" +#~ msgstr "替æ¢" + +#~ msgid "Case Sensitive" +#~ msgstr "区分大å°å†™" + +#~ msgid "Backwards" +#~ msgstr "å‘åŽ" + +#~ msgid "Prompt On Replace" +#~ msgstr "æ›´æ¢æ—¶æç¤º" + +#~ msgid "Skip" +#~ msgstr "跳过" + +#~ msgid "" +#~ "Your project will be created in a non empty folder (you might want to " +#~ "create a new folder)." +#~ msgstr "您的工程在éžç©ºæ–‡ä»¶å¤¹ä¸åˆ›å»º (您å¯èƒ½éœ€è¦å»ºç«‹ä¸€ä¸ªæ–°æ–‡ä»¶å¤¹)。" + +#~ msgid "That's a BINGO!" +#~ msgstr "ç¢‰å ¡äº†ï¼" + +#~ msgid "preview" +#~ msgstr "预览" + #~ msgid "Move Add Key" #~ msgstr "ç§»åŠ¨å·²æ·»åŠ å…³é”®å¸§" @@ -8084,9 +8173,6 @@ msgstr "å—体大å°éžæ³•。" #~ msgid "' parsing of config failed." #~ msgstr "' è§£æžé…置失败。" -#~ msgid "Theme" -#~ msgstr "主题" - #~ msgid "Method List For '%s':" #~ msgstr "'%s'的方法列表:" @@ -8354,9 +8440,6 @@ msgstr "å—体大å°éžæ³•。" #~ msgid "Import Anyway" #~ msgstr "ä»ç„¶å¯¼å…¥" -#~ msgid "Import & Open" -#~ msgstr "导入|打开" - #~ msgid "Edited scene has not been saved, open imported scene anyway?" #~ msgstr "æ£åœ¨ç¼–辑的场景尚未ä¿å˜ï¼Œä»ç„¶è¦æ‰“开导入的场景å—?" @@ -8609,9 +8692,6 @@ msgstr "å—体大å°éžæ³•。" #~ msgid "Stereo" #~ msgstr "立体声" -#~ msgid "Mono" -#~ msgstr "å•声é“" - #~ msgid "Pitch" #~ msgstr "音调" @@ -8778,9 +8858,6 @@ msgstr "å—体大å°éžæ³•。" #~ msgid "Alerts when an external resource has changed." #~ msgstr "å¤–éƒ¨èµ„æºæ”¹å˜åŽå¼¹å‡ºæç¤ºã€‚" -#~ msgid "Tutorials" -#~ msgstr "教程" - #~ msgid "Open https://godotengine.org at tutorials section." #~ msgstr "打开 https://godotengine.org ä¸çš„æ•™ç¨‹." diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index a4fd11fc40..3b380305d0 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -208,8 +208,7 @@ msgstr "新增 %d 個新軌跡並æ’入關éµå¹€ï¼Ÿ" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp #, fuzzy msgid "Create" msgstr "新增" @@ -411,15 +410,6 @@ msgid "Replaced %d occurrence(s)." msgstr "å–代了 %d 個。" #: editor/code_editor.cpp -#, fuzzy -msgid "Replace" -msgstr "å–代" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "全部å–代" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "符åˆå¤§å°å¯«" @@ -428,52 +418,17 @@ msgid "Whole Words" msgstr "完整詞語" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "åªé™é¸ä¸" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "æœå°‹" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "尋找" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "下一個" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "找ä¸åˆ°!" - -#: editor/code_editor.cpp #, fuzzy -msgid "Replace By" -msgstr "由這個å–代" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Case Sensitive" -msgstr "å€åˆ†å¤§å°å¯«" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Backwards" -msgstr "å‘後" +msgid "Replace" +msgstr "å–代" #: editor/code_editor.cpp -#, fuzzy -msgid "Prompt On Replace" -msgstr "å–ä»£æ™‚è©¢å•æˆ‘" +msgid "Replace All" +msgstr "全部å–代" #: editor/code_editor.cpp -msgid "Skip" -msgstr "è·³éŽ" +msgid "Selection Only" +msgstr "åªé™é¸ä¸" #: editor/code_editor.cpp msgid "Zoom In" @@ -593,6 +548,17 @@ msgstr "訊號" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "更改動畫循環" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Change" +msgstr "當改變時更新" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "新增" @@ -699,7 +665,8 @@ msgid "" msgstr "" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +#, fuzzy +msgid "Cannot remove:" msgstr "無法移除:\n" #: editor/dependency_editor.cpp @@ -786,9 +753,10 @@ msgstr "專案è¨å®š" msgid "Lead Developer" msgstr "開發者" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " +msgstr "開啟 Project Manager?" #: editor/editor_about.cpp msgid "Developers" @@ -878,7 +846,7 @@ msgid "Success!" msgstr "æˆåŠŸï¼" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "安è£" @@ -1212,8 +1180,9 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" -msgstr "" +#, fuzzy +msgid "Template file not found:" +msgstr "未找到佈局å稱ï¼" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp msgid "File Exists, Overwrite?" @@ -1438,6 +1407,18 @@ msgid "Description" msgstr "æè¿°ï¼š" #: editor/editor_help.cpp +#, fuzzy +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 "Properties" msgstr "" @@ -1470,6 +1451,10 @@ msgstr "" msgid "Search Text" msgstr "" +#: editor/editor_help.cpp +msgid "Find" +msgstr "尋找" + #: editor/editor_log.cpp msgid "Output:" msgstr "" @@ -1481,6 +1466,11 @@ msgstr "" msgid "Clear" msgstr "清空" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "下一個腳本" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Error saving resource!" @@ -1490,8 +1480,8 @@ msgstr "儲å˜è³‡æºæ™‚出ç¾éŒ¯èª¤ï¼" msgid "Save Resource As.." msgstr "把資æºå¦å˜ç‚º..." -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "如來如æ¤" @@ -1552,7 +1542,8 @@ msgstr "ä¸èƒ½åŸ·è¡Œé€™å€‹å‹•ä½œï¼Œå› ç‚ºæ²’æœ‰tree root." #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2139,6 +2130,13 @@ msgstr "幫助" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "æœå°‹" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #, fuzzy msgid "Online Docs" @@ -2533,8 +2531,9 @@ msgid "No version.txt found inside templates." msgstr "找ä¸åˆ°version.txt inside templates." #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "" +#, fuzzy +msgid "Error creating path for templates:" +msgstr "載入å—形出ç¾éŒ¯èª¤" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2704,9 +2703,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2714,21 +2711,21 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "載入錯誤:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "載入錯誤:" #: editor/filesystem_dock.cpp -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "" #: editor/filesystem_dock.cpp @@ -3385,6 +3382,11 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +#, fuzzy +msgid "AnimationTree" +msgstr "新增動畫" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3553,6 +3555,7 @@ msgid "Bake Lightmaps" msgstr "" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3858,19 +3861,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4248,7 +4254,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4642,15 +4648,19 @@ msgstr "" msgid "Paste" msgstr "貼上" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "資æº" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" +#, fuzzy +msgid "Close and save changes?" +msgstr "è¦é—œé–‰å ´æ™¯å—Žï¼Ÿï¼ˆæœªå„²å˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4727,6 +4737,11 @@ msgid "Copy Script Path" msgstr "複製路徑" #: editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Show In File System" +msgstr "檔案系統" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5168,86 +5183,86 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "" +#, fuzzy +msgid "Material Changes" +msgstr "當改變時更新" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" -msgstr "" +#, fuzzy +msgid "Shader Changes" +msgstr "當改變時更新" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." -msgstr "" +#, fuzzy +msgid "Surface Changes" +msgstr "當改變時更新" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Material Changes" -msgstr "當改變時更新" +msgid "Right View." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Shader Changes" -msgstr "當改變時更新" +msgid "Right" +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Surface Changes" -msgstr "當改變時更新" +msgid "Front View." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5262,6 +5277,10 @@ msgstr "OK :(" 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 "Display Normal" msgstr "" @@ -5339,17 +5358,12 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "é 覽:" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Select Mode (Q)\n" +msgid "Select Mode (Q)" msgstr "鏿“‡æ¨¡å¼" #: editor/plugins/spatial_editor_plugin.cpp @@ -5629,10 +5643,18 @@ msgstr "移動模å¼" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5658,14 +5680,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5805,6 +5830,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5908,6 +5937,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "新增資料夾" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "å–æ¶ˆ" @@ -6022,9 +6076,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -6036,6 +6088,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +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 "" @@ -6077,14 +6138,29 @@ msgid "Import Existing Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Import & Edit" +msgstr "å°Žå…¥" + +#: editor/project_manager.cpp msgid "Create New Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Create & Edit" +msgstr "新增" + +#: editor/project_manager.cpp msgid "Install Project:" msgstr "" #: editor/project_manager.cpp +#, fuzzy +msgid "Install & Edit" +msgstr "安è£" + +#: editor/project_manager.cpp msgid "Project Name:" msgstr "" @@ -6102,10 +6178,6 @@ msgid "Browse" msgstr "ç€è¦½" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6152,6 +6224,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6280,12 +6356,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy -msgid "Change" -msgstr "當改變時更新" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6675,10 +6745,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "Ok" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6764,7 +6830,7 @@ msgstr "" #: editor/scene_tree_dock.cpp #, fuzzy -msgid "Sub-Resources:" +msgid "Sub-Resources" msgstr "資æº" #: editor/scene_tree_dock.cpp @@ -7073,7 +7139,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "錯誤" @@ -7082,6 +7148,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "載入錯誤" + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7437,10 +7508,55 @@ msgstr "è¨å®š" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to save solution." +msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create C# project." +msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Create C# solution" +msgstr "縮放selection" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "專案" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7803,27 +7919,32 @@ msgstr "" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not write file:\n" +msgid "Could not write file:" msgstr "無法新增資料夾" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not open template for export:\n" +msgid "Could not open template for export:" msgstr "無法新增資料夾" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "管ç†è¼¸å‡ºç¯„本" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read custom HTML shell:\n" +msgid "Could not read custom HTML shell:" msgstr "無法新增資料夾" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "無法新增資料夾" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "無法新增資料夾" #: scene/2d/animated_sprite.cpp @@ -7838,6 +7959,13 @@ msgid "" "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 children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7906,7 +8034,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7965,6 +8093,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -8010,8 +8145,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -8077,8 +8212,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -8105,6 +8240,35 @@ msgstr "載入å—形出ç¾éŒ¯èª¤" msgid "Invalid font size." msgstr "無效å—åž‹" +#~ msgid "Next" +#~ msgstr "下一個" + +#~ msgid "Not found!" +#~ msgstr "找ä¸åˆ°!" + +#, fuzzy +#~ msgid "Replace By" +#~ msgstr "由這個å–代" + +#, fuzzy +#~ msgid "Case Sensitive" +#~ msgstr "å€åˆ†å¤§å°å¯«" + +#, fuzzy +#~ msgid "Backwards" +#~ msgstr "å‘後" + +#, fuzzy +#~ msgid "Prompt On Replace" +#~ msgstr "å–ä»£æ™‚è©¢å•æˆ‘" + +#~ msgid "Skip" +#~ msgstr "è·³éŽ" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "é 覽:" + #, fuzzy #~ msgid "Move Add Key" #~ msgstr "移動" @@ -8153,9 +8317,6 @@ msgstr "無效å—åž‹" #~ msgid "Ctrl+" #~ msgstr "Ctrl+" -#~ msgid "Close scene? (Unsaved changes will be lost)" -#~ msgstr "è¦é—œé–‰å ´æ™¯å—Žï¼Ÿï¼ˆæœªå„²å˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰" - #~ msgid "" #~ "Open Project Manager? \n" #~ "(Unsaved changes will be lost)" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index 1cd5d9a4a7..abdbf6dc2b 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -203,8 +203,7 @@ msgstr "創建 %d 個新軌並æ’å…¥ç•«æ ¼?" #: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/light_occluder_2d_editor_plugin.cpp #: editor/plugins/mesh_instance_editor_plugin.cpp -#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp -#: editor/script_create_dialog.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp msgid "Create" msgstr "新增" @@ -381,14 +380,6 @@ msgid "Replaced %d occurrence(s)." msgstr "å–代了 %d 個" #: editor/code_editor.cpp -msgid "Replace" -msgstr "å–代" - -#: editor/code_editor.cpp -msgid "Replace All" -msgstr "å–代全部" - -#: editor/code_editor.cpp msgid "Match Case" msgstr "符åˆå¤§å°å¯«" @@ -397,48 +388,16 @@ msgid "Whole Words" msgstr "" #: editor/code_editor.cpp -msgid "Selection Only" -msgstr "åƒ…é¸æ“‡å€åŸŸ" - -#: editor/code_editor.cpp 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/project_settings_editor.cpp -msgid "Search" -msgstr "æœå°‹" - -#: editor/code_editor.cpp editor/editor_help.cpp -msgid "Find" -msgstr "尋找" - -#: editor/code_editor.cpp -msgid "Next" -msgstr "下一個" - -#: editor/code_editor.cpp -msgid "Not found!" -msgstr "找ä¸åˆ°!" - -#: editor/code_editor.cpp -msgid "Replace By" -msgstr "用...å–代" - -#: editor/code_editor.cpp -msgid "Case Sensitive" -msgstr "å€åˆ†å¤§å°å¯«" - -#: editor/code_editor.cpp -msgid "Backwards" -msgstr "" +msgid "Replace" +msgstr "å–代" #: editor/code_editor.cpp -msgid "Prompt On Replace" -msgstr "æ¯æ¬¡å–代都è¦å…ˆè©¢å•我" +msgid "Replace All" +msgstr "å–代全部" #: editor/code_editor.cpp -msgid "Skip" -msgstr "è·³éŽ" +msgid "Selection Only" +msgstr "åƒ…é¸æ“‡å€åŸŸ" #: editor/code_editor.cpp msgid "Zoom In" @@ -557,6 +516,16 @@ msgstr "" #: editor/create_dialog.cpp #, fuzzy +msgid "Change %s Type" +msgstr "變更é¡é 尺寸" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Change" +msgstr "" + +#: editor/create_dialog.cpp +#, fuzzy msgid "Create New %s" msgstr "新增" @@ -666,7 +635,7 @@ msgstr "" "æ¤å‹•作無法復原, 確定è¦åˆªé™¤å—Ž?" #: editor/dependency_editor.cpp -msgid "Cannot remove:\n" +msgid "Cannot remove:" msgstr "" #: editor/dependency_editor.cpp @@ -749,9 +718,10 @@ msgstr "專案創始人" msgid "Lead Developer" msgstr "" -#: editor/editor_about.cpp editor/project_manager.cpp -msgid "Project Manager" -msgstr "" +#: editor/editor_about.cpp +#, fuzzy +msgid "Project Manager " +msgstr "專案創始人" #: editor/editor_about.cpp msgid "Developers" @@ -836,7 +806,7 @@ msgid "Success!" msgstr "" #: editor/editor_asset_installer.cpp -#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp msgid "Install" msgstr "" @@ -1149,7 +1119,7 @@ msgid "Packing" msgstr "" #: editor/editor_export.cpp platform/javascript/export/export.cpp -msgid "Template file not found:\n" +msgid "Template file not found:" msgstr "" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp @@ -1364,6 +1334,17 @@ msgid "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 "Properties" msgstr "" @@ -1395,6 +1376,10 @@ msgstr "" msgid "Search Text" msgstr "æœå°‹è©žå½™" +#: editor/editor_help.cpp +msgid "Find" +msgstr "尋找" + #: editor/editor_log.cpp msgid "Output:" msgstr "輸出:" @@ -1406,6 +1391,11 @@ msgstr "輸出:" msgid "Clear" msgstr "清除" +#: editor/editor_log.cpp +#, fuzzy +msgid "Clear Output" +msgstr "輸出:" + #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" msgstr "" @@ -1414,8 +1404,8 @@ msgstr "" msgid "Save Resource As.." msgstr "" -#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp +#: editor/scene_tree_dock.cpp msgid "I see.." msgstr "我知é“了" @@ -1470,7 +1460,8 @@ msgstr "æ¤æ“作無法復原, 確定è¦é‚„原嗎?" #: editor/editor_node.cpp msgid "" -"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." msgstr "" #: editor/editor_node.cpp @@ -2032,6 +2023,13 @@ msgstr "" msgid "Classes" 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/project_settings_editor.cpp +msgid "Search" +msgstr "æœå°‹" + #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Online Docs" msgstr "" @@ -2412,8 +2410,9 @@ msgid "No version.txt found inside templates." msgstr "" #: editor/export_template_manager.cpp -msgid "Error creating path for templates:\n" -msgstr "" +#, fuzzy +msgid "Error creating path for templates:" +msgstr "è¼‰å…¥å ´æ™¯æ™‚ç™¼ç”ŸéŒ¯èª¤" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2576,9 +2575,7 @@ msgid "View items as a list" msgstr "" #: editor/filesystem_dock.cpp -msgid "" -"\n" -"Status: Import of file failed. Please fix file and reimport manually." +msgid "Status: Import of file failed. Please fix file and reimport manually." msgstr "" #: editor/filesystem_dock.cpp @@ -2586,22 +2583,22 @@ msgid "Cannot move/rename resources root." msgstr "" #: editor/filesystem_dock.cpp -msgid "Cannot move a folder into itself.\n" +msgid "Cannot move a folder into itself." msgstr "" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error moving:\n" +msgid "Error moving:" msgstr "載入時發生錯誤:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Error duplicating:\n" +msgid "Error duplicating:" msgstr "載入時發生錯誤:" #: editor/filesystem_dock.cpp #, fuzzy -msgid "Unable to update dependencies:\n" +msgid "Unable to update dependencies:" msgstr "å ´æ™¯ç¼ºå°‘äº†æŸäº›è³‡æºä»¥è‡³æ–¼ç„¡æ³•載入" #: editor/filesystem_dock.cpp @@ -3246,6 +3243,10 @@ msgstr "" msgid "Filters.." msgstr "" +#: editor/plugins/animation_tree_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + #: editor/plugins/asset_library_editor_plugin.cpp msgid "Free" msgstr "" @@ -3414,6 +3415,7 @@ msgid "Bake Lightmaps" msgstr "變更光æºåŠå¾‘" #: editor/plugins/camera_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3716,19 +3718,22 @@ msgstr "" msgid "Adding %s..." msgstr "" +#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + #: editor/plugins/canvas_item_editor_plugin.cpp -#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "Create Node" +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 "Error instancing scene from %s" +msgid "Create Node" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp -msgid "This operation requires a single selected node." +msgid "Error instancing scene from %s" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp @@ -4105,7 +4110,7 @@ msgid "Bake!" msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp -msgid "Bake the navigation mesh.\n" +msgid "Bake the navigation mesh." msgstr "" #: editor/plugins/navigation_mesh_editor_plugin.cpp @@ -4498,15 +4503,19 @@ msgstr "" msgid "Paste" msgstr "" +#: editor/plugins/resource_preloader_editor_plugin.cpp +#, fuzzy +msgid "ResourcePreloader" +msgstr "資æºè·¯å¾‘" + #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" msgstr "" #: editor/plugins/script_editor_plugin.cpp -msgid "" -"Close and save changes?\n" -"\"" -msgstr "" +#, fuzzy +msgid "Close and save changes?" +msgstr "沒有儲å˜çš„變更都會éºå¤±, 確定è¦é—œé–‰?" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" @@ -4582,6 +4591,10 @@ msgid "Copy Script Path" msgstr "" #: editor/plugins/script_editor_plugin.cpp +msgid "Show In File System" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp msgid "History Prev" msgstr "" @@ -5019,84 +5032,84 @@ msgid "Rotating %s degrees." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom View." +msgid "Keying is disabled (no key inserted)." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Bottom" +msgid "Animation Key Inserted." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Top View." +msgid "Objects Drawn" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear View." -msgstr "" +#, fuzzy +msgid "Material Changes" +msgstr "æ£åœ¨å„²å˜è®Šæ›´.." #: editor/plugins/spatial_editor_plugin.cpp -msgid "Rear" +msgid "Shader Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front View." +msgid "Surface Changes" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Front" +msgid "Draw Calls" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left View." +msgid "Vertices" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Left" +msgid "FPS" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right View." +msgid "Top View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Right" +msgid "Bottom View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Keying is disabled (no key inserted)." +msgid "Bottom" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Animation Key Inserted." +msgid "Left View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Objects Drawn" +msgid "Left" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "Material Changes" -msgstr "æ£åœ¨å„²å˜è®Šæ›´.." +msgid "Right View." +msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Shader Changes" +msgid "Right" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Surface Changes" +msgid "Front View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Draw Calls" +msgid "Front" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Vertices" +msgid "Rear View." msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "FPS" +msgid "Rear" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp @@ -5111,6 +5124,10 @@ msgstr "" 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 "Display Normal" msgstr "" @@ -5187,17 +5204,13 @@ msgid "Freelook Speed Modifier" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy -msgid "preview" -msgstr "é 覽:" - -#: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Select Mode (Q)\n" -msgstr "" +#, fuzzy +msgid "Select Mode (Q)" +msgstr "åƒ…é¸æ“‡å€åŸŸ" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -5472,10 +5485,18 @@ msgstr "" msgid "Move (After)" msgstr "" +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "SpriteFrames" +msgstr "" + #: editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" msgstr "" +#: editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox" +msgstr "" + #: editor/plugins/texture_region_editor_plugin.cpp msgid "Set Region Rect" msgstr "" @@ -5501,14 +5522,17 @@ msgid "Auto Slice" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Offset:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Step:" msgstr "" #: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp msgid "Separation:" msgstr "" @@ -5647,6 +5671,10 @@ msgstr "" msgid "Color" msgstr "" +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Erase Selection" @@ -5749,6 +5777,31 @@ msgstr "" msgid "Error" msgstr "" +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Autotiles" +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." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: set bit on.\n" +"RMB: set bit off." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy +msgid "Select current edited sub-tile." +msgstr "新增資料夾" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Select sub-tile to change its priority." +msgstr "" + #: editor/progress_dialog.cpp scene/gui/dialogs.cpp msgid "Cancel" msgstr "" @@ -5859,9 +5912,7 @@ msgid "Please choose a 'project.godot' file." msgstr "" #: editor/project_manager.cpp -msgid "" -"Your project will be created in a non empty folder (you might want to create " -"a new folder)." +msgid "Please choose an empty folder." msgstr "" #: editor/project_manager.cpp @@ -5873,6 +5924,15 @@ msgid "Imported Project" msgstr "" #: editor/project_manager.cpp +#, fuzzy +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 "" @@ -5914,14 +5974,27 @@ 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 +#, fuzzy +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 "" @@ -5939,10 +6012,6 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp -msgid "That's a BINGO!" -msgstr "" - -#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -5989,6 +6058,10 @@ msgid "" msgstr "" #: editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: editor/project_manager.cpp msgid "Project List" msgstr "" @@ -6116,11 +6189,6 @@ msgid "Button 9" msgstr "" #: editor/project_settings_editor.cpp -#: modules/visual_script/visual_script_editor.cpp -msgid "Change" -msgstr "" - -#: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" msgstr "" @@ -6504,10 +6572,6 @@ msgid "Error loading scene from %s" msgstr "" #: editor/scene_tree_dock.cpp -msgid "Ok" -msgstr "" - -#: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." @@ -6592,8 +6656,9 @@ msgid "Error duplicating scene to save it." msgstr "" #: editor/scene_tree_dock.cpp -msgid "Sub-Resources:" -msgstr "" +#, fuzzy +msgid "Sub-Resources" +msgstr "複製資æº" #: editor/scene_tree_dock.cpp msgid "Clear Inheritance" @@ -6891,7 +6956,7 @@ msgstr "" msgid "Pick one or more items from the list to display the graph." msgstr "" -#: editor/script_editor_debugger.cpp +#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" msgstr "" @@ -6900,6 +6965,11 @@ msgid "Child Process Connected" msgstr "" #: editor/script_editor_debugger.cpp +#, fuzzy +msgid "Copy Error" +msgstr "連接..." + +#: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" msgstr "" @@ -7263,10 +7333,52 @@ msgstr "專案è¨å®š" msgid "Pick Distance:" msgstr "" +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating solution..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Generating C# project..." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +#, fuzzy +msgid "Failed to create solution." +msgstr "無法新增資料夾" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to save solution." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Done" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Failed to create C# project." +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Mono" +msgstr "" + +#: modules/mono/editor/godotsharp_editor.cpp +msgid "Create C# solution" +msgstr "" + #: modules/mono/editor/mono_bottom_panel.cpp msgid "Builds" msgstr "" +#: modules/mono/editor/mono_bottom_panel.cpp +#, fuzzy +msgid "Build Project" +msgstr "專案è¨å®š" + +#: modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + #: modules/visual_script/visual_script.cpp msgid "" "A node yielded without working memory, please read the docs on how to yield " @@ -7616,24 +7728,32 @@ msgid "Run exported HTML in the system's default browser." msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not write file:\n" -msgstr "" +#, fuzzy +msgid "Could not write file:" +msgstr "無法新增資料夾" #: platform/javascript/export/export.cpp -msgid "Could not open template for export:\n" -msgstr "" +#, fuzzy +msgid "Could not open template for export:" +msgstr "無法新增資料夾" #: platform/javascript/export/export.cpp -msgid "Invalid export template:\n" +msgid "Invalid export template:" msgstr "" #: platform/javascript/export/export.cpp -msgid "Could not read custom HTML shell:\n" -msgstr "" +#, fuzzy +msgid "Could not read custom HTML shell:" +msgstr "無法新增資料夾" #: platform/javascript/export/export.cpp #, fuzzy -msgid "Could not read boot splash image file:\n" +msgid "Could not read boot splash image file:" +msgstr "無法新增資料夾" + +#: platform/javascript/export/export.cpp +#, fuzzy +msgid "Using default boot splash image." msgstr "無法新增資料夾" #: scene/2d/animated_sprite.cpp @@ -7650,6 +7770,13 @@ msgstr "" "æ¯å€‹å ´æ™¯ä¸åƒ…å…許一個å¯è¦‹çš„CanvasModulateï¼Œåªæœ‰ç¬¬ä¸€å€‹CanvasModulate會有作用," "其餘的將被忽略。" +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to " +"define its shape." +msgstr "" + #: scene/2d/collision_polygon_2d.cpp msgid "" "CollisionPolygon2D only serves to provide a collision shape to a " @@ -7722,7 +7849,7 @@ msgstr "" #: scene/2d/physics_body_2d.cpp msgid "" -"Size changes to RigidBody2D (in character or rigid modes) will be overriden " +"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 "" @@ -7781,6 +7908,13 @@ msgstr "" msgid "Lighting Meshes: " msgstr "" +#: scene/3d/collision_object.cpp +msgid "" +"This node has no children shapes, so it can't interact with the space.\n" +"Consider adding CollisionShape or CollisionPolygon children nodes to define " +"its shape." +msgstr "" + #: scene/3d/collision_polygon.cpp msgid "" "CollisionPolygon only serves to provide a collision shape to a " @@ -7826,8 +7960,8 @@ msgstr "" #: scene/3d/physics_body.cpp msgid "" -"Size changes to RigidBody (in character or rigid modes) will be overriden by " -"the physics engine when running.\n" +"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 "" @@ -7893,8 +8027,8 @@ msgstr "" #: scene/main/scene_tree.cpp msgid "" -"Default Environment as specified in Project Setings (Rendering -> Viewport -" -"> Default Environment) could not be loaded." +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." msgstr "" #: scene/main/viewport.cpp @@ -7921,6 +8055,28 @@ msgstr "讀å–å—體錯誤。" msgid "Invalid font size." msgstr "無效的å—體大å°ã€‚" +#~ msgid "Next" +#~ msgstr "下一個" + +#~ msgid "Not found!" +#~ msgstr "找ä¸åˆ°!" + +#~ msgid "Replace By" +#~ msgstr "用...å–代" + +#~ msgid "Case Sensitive" +#~ msgstr "å€åˆ†å¤§å°å¯«" + +#~ msgid "Prompt On Replace" +#~ msgstr "æ¯æ¬¡å–代都è¦å…ˆè©¢å•我" + +#~ msgid "Skip" +#~ msgstr "è·³éŽ" + +#, fuzzy +#~ msgid "preview" +#~ msgstr "é 覽:" + #~ msgid "List:" #~ msgstr "列表:" @@ -7946,9 +8102,6 @@ msgstr "無效的å—體大å°ã€‚" #~ msgid "Ctrl+" #~ msgstr "Ctrl+" -#~ msgid "Close scene? (Unsaved changes will be lost)" -#~ msgstr "沒有儲å˜çš„變更都會éºå¤±, 確定è¦é—œé–‰?" - #~ msgid "" #~ "Open Project Manager? \n" #~ "(Unsaved changes will be lost)" diff --git a/main/input_default.cpp b/main/input_default.cpp index 5026b8bb39..fb831b7647 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "input_default.h" #include "input_map.h" @@ -497,26 +498,16 @@ bool InputDefault::is_emulating_touchscreen() const { return emulate_touch; } -void InputDefault::set_custom_mouse_cursor(const RES &p_cursor, const Vector2 &p_hotspot) { - /* no longer supported, leaving this for reference to anyone who might want to implement hardware cursors +void InputDefault::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { + if (Engine::get_singleton()->is_editor_hint()) + return; + if (custom_cursor == p_cursor) return; custom_cursor = p_cursor; - if (p_cursor.is_null()) { - set_mouse_mode(MOUSE_MODE_VISIBLE); - //removed, please insist us to implement hardare cursors - //VisualServer::get_singleton()->cursor_set_visible(false); - } else { - Ref<AtlasTexture> atex = custom_cursor; - Rect2 region = atex.is_valid() ? atex->get_region() : Rect2(); - set_mouse_mode(MOUSE_MODE_HIDDEN); - VisualServer::get_singleton()->cursor_set_visible(true); - VisualServer::get_singleton()->cursor_set_texture(custom_cursor->get_rid(), p_hotspot, 0, region); - VisualServer::get_singleton()->cursor_set_pos(get_mouse_position()); - } - */ + OS::get_singleton()->set_custom_mouse_cursor(p_cursor, (OS::CursorShape)p_shape, p_hotspot); } void InputDefault::set_mouse_in_window(bool p_in_window) { diff --git a/main/input_default.h b/main/input_default.h index 62ba0b0c32..0479fdc0ff 100644 --- a/main/input_default.h +++ b/main/input_default.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef INPUT_DEFAULT_H #define INPUT_DEFAULT_H @@ -225,7 +226,7 @@ public: void set_emulate_touch(bool p_emulate); virtual bool is_emulating_touchscreen() const; - virtual void set_custom_mouse_cursor(const RES &p_cursor, const Vector2 &p_hotspot = Vector2()); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape = Input::CURSOR_ARROW, const Vector2 &p_hotspot = Vector2()); virtual void set_mouse_in_window(bool p_in_window); void parse_mapping(String p_mapping); diff --git a/main/main.cpp b/main/main.cpp index 5936a323d4..f6a8391447 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main.h" #include "app_icon.gen.h" @@ -664,6 +665,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph GLOBAL_DEF("memory/limits/multithreaded_server/rid_pool_prealloc", 60); GLOBAL_DEF("network/limits/debugger_stdout/max_chars_per_second", 2048); + GLOBAL_DEF("network/limits/debugger_stdout/max_messages_per_frame", 10); + GLOBAL_DEF("network/limits/debugger_stdout/max_errors_per_frame", 10); if (debug_mode == "remote") { @@ -900,12 +903,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph OS::get_singleton()->set_screen_orientation(OS::SCREEN_LANDSCAPE); } - Engine::get_singleton()->set_iterations_per_second(GLOBAL_DEF("physics/common/fixed_fps", 60)); + Engine::get_singleton()->set_iterations_per_second(GLOBAL_DEF("physics/common/physics_fps", 60)); Engine::get_singleton()->set_target_fps(GLOBAL_DEF("debug/settings/fps/force_fps", 0)); GLOBAL_DEF("debug/settings/stdout/print_fps", OS::get_singleton()->is_stdout_verbose()); - if (!OS::get_singleton()->_verbose_stdout) //overrided + if (!OS::get_singleton()->_verbose_stdout) //overridden OS::get_singleton()->_verbose_stdout = GLOBAL_DEF("debug/settings/stdout/verbose_stdout", false); if (frame_delay == 0) { @@ -983,7 +986,10 @@ Error Main::setup2(Thread::ID p_main_tid_override) { Thread::_main_thread_id = p_main_tid_override; } - OS::get_singleton()->initialize(video_mode, video_driver_idx, audio_driver_idx); + Error err = OS::get_singleton()->initialize(video_mode, video_driver_idx, audio_driver_idx); + if (err != OK) { + return err; + } if (init_use_custom_pos) { OS::get_singleton()->set_window_position(init_custom_pos); } @@ -1107,7 +1113,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) { if (cursor.is_valid()) { //print_line("loaded ok"); Vector2 hotspot = ProjectSettings::get_singleton()->get("display/mouse_cursor/custom_image_hotspot"); - Input::get_singleton()->set_custom_mouse_cursor(cursor, hotspot); + Input::get_singleton()->set_custom_mouse_cursor(cursor, Input::CURSOR_ARROW, hotspot); } } #ifdef TOOLS_ENABLED @@ -1769,7 +1775,7 @@ bool Main::iteration() { if (frame > 1000000) { - if (GLOBAL_DEF("debug/settings/stdout/print_fps", OS::get_singleton()->is_stdout_verbose())) { + if (GLOBAL_DEF("debug/settings/stdout/print_fps", OS::get_singleton()->is_stdout_verbose()) && !editor) { print_line("FPS: " + itos(frames)); }; @@ -1816,6 +1822,9 @@ void Main::cleanup() { ERR_FAIL_COND(!_start_success); + message_queue->flush(); + memdelete(message_queue); + if (script_debugger) { if (use_debug_profiler) { script_debugger->profiling_end(); @@ -1839,11 +1848,6 @@ void Main::cleanup() { EditorNode::unregister_editor_types(); #endif - if (audio_server) { - audio_server->finish(); - memdelete(audio_server); - } - if (arvr_server) { // cleanup now before we pull the rug from underneath... memdelete(arvr_server); @@ -1855,6 +1859,11 @@ void Main::cleanup() { unregister_scene_types(); unregister_server_types(); + if (audio_server) { + audio_server->finish(); + memdelete(audio_server); + } + OS::get_singleton()->finalize(); finalize_physics(); @@ -1873,9 +1882,6 @@ void Main::cleanup() { if (engine) memdelete(engine); - message_queue->flush(); - memdelete(message_queue); - unregister_core_driver_types(); unregister_core_types(); diff --git a/main/main.h b/main/main.h index 4455f4b8ec..1165c79494 100644 --- a/main/main.h +++ b/main/main.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MAIN_H #define MAIN_H diff --git a/main/performance.cpp b/main/performance.cpp index 0ff2f5d540..fc915e2e76 100644 --- a/main/performance.cpp +++ b/main/performance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "performance.h" #include "message_queue.h" #include "os/os.h" diff --git a/main/performance.h b/main/performance.h index 0c8406e464..464226b517 100644 --- a/main/performance.h +++ b/main/performance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PERFORMANCE_H #define PERFORMANCE_H diff --git a/main/tests/test_gdscript.cpp b/main/tests/test_gdscript.cpp index 1580a8e664..5c7633a0cf 100644 --- a/main/tests/test_gdscript.cpp +++ b/main/tests/test_gdscript.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_gdscript.h" #include "os/file_access.h" diff --git a/main/tests/test_gdscript.h b/main/tests/test_gdscript.h index 218f7a21a0..91e0be1238 100644 --- a/main/tests/test_gdscript.h +++ b/main/tests/test_gdscript.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_GDSCRIPT_H #define TEST_GDSCRIPT_H diff --git a/main/tests/test_gui.cpp b/main/tests/test_gui.cpp index e9bbd2489e..b7b6c21692 100644 --- a/main/tests/test_gui.cpp +++ b/main/tests/test_gui.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef _3D_DISABLED #include "test_gui.h" diff --git a/main/tests/test_gui.h b/main/tests/test_gui.h index 156b3ed182..3ed9dae522 100644 --- a/main/tests/test_gui.h +++ b/main/tests/test_gui.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_GUI_H #define TEST_GUI_H diff --git a/main/tests/test_image.cpp b/main/tests/test_image.cpp index eb7b4f8076..cb87458a93 100644 --- a/main/tests/test_image.cpp +++ b/main/tests/test_image.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_image.h" #include "io/image_loader.h" diff --git a/main/tests/test_image.h b/main/tests/test_image.h index ce1dabb433..d45b4e4e15 100644 --- a/main/tests/test_image.h +++ b/main/tests/test_image.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_IMAGE_H #define TEST_IMAGE_H diff --git a/main/tests/test_io.cpp b/main/tests/test_io.cpp index 42d79ba1f6..08dc374ed1 100644 --- a/main/tests/test_io.cpp +++ b/main/tests/test_io.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_io.h" #ifdef MINIZIP_ENABLED diff --git a/main/tests/test_io.h b/main/tests/test_io.h index 2cc1bfefaf..76567829e7 100644 --- a/main/tests/test_io.h +++ b/main/tests/test_io.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_IO_H #define TEST_IO_H diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp index 41eae89c9e..c9431a1a09 100644 --- a/main/tests/test_main.cpp +++ b/main/tests/test_main.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "list.h" #include "os/main_loop.h" diff --git a/main/tests/test_main.h b/main/tests/test_main.h index 6f78127521..d319391070 100644 --- a/main/tests/test_main.h +++ b/main/tests/test_main.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_MAIN_H #define TEST_MAIN_H diff --git a/main/tests/test_math.cpp b/main/tests/test_math.cpp index 515b43a38a..8b71c5dc70 100644 --- a/main/tests/test_math.cpp +++ b/main/tests/test_math.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_math.h" #include "camera_matrix.h" diff --git a/main/tests/test_math.h b/main/tests/test_math.h index e3b74e94de..26a33aa164 100644 --- a/main/tests/test_math.h +++ b/main/tests/test_math.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_MATH_H #define TEST_MATH_H diff --git a/main/tests/test_oa_hash_map.cpp b/main/tests/test_oa_hash_map.cpp index 47ae8912b2..ac65fdf19c 100644 --- a/main/tests/test_oa_hash_map.cpp +++ b/main/tests/test_oa_hash_map.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* test_oa_hash_map.h */ +/* test_oa_hash_map.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ diff --git a/main/tests/test_oa_hash_map.h b/main/tests/test_oa_hash_map.h index c2812cebb7..a63da537d8 100644 --- a/main/tests/test_oa_hash_map.h +++ b/main/tests/test_oa_hash_map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_OA_HASH_MAP_H #define TEST_OA_HASH_MAP_H diff --git a/main/tests/test_ordered_hash_map.cpp b/main/tests/test_ordered_hash_map.cpp index b57bc0bcc9..668a8788ff 100644 --- a/main/tests/test_ordered_hash_map.cpp +++ b/main/tests/test_ordered_hash_map.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ diff --git a/main/tests/test_ordered_hash_map.h b/main/tests/test_ordered_hash_map.h index a327e4e18b..6723e70b79 100644 --- a/main/tests/test_ordered_hash_map.h +++ b/main/tests/test_ordered_hash_map.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_ORDERED_HASH_MAP_H #define TEST_ORDERED_HASH_MAP_H diff --git a/main/tests/test_physics.cpp b/main/tests/test_physics.cpp index 275f67cd86..475663dabe 100644 --- a/main/tests/test_physics.cpp +++ b/main/tests/test_physics.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_physics.h" #include "map.h" diff --git a/main/tests/test_physics.h b/main/tests/test_physics.h index 2b51899394..4d62f3a0cf 100644 --- a/main/tests/test_physics.h +++ b/main/tests/test_physics.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_PHYSICS_H #define TEST_PHYSICS_H diff --git a/main/tests/test_physics_2d.cpp b/main/tests/test_physics_2d.cpp index 0af74a656e..482a858650 100644 --- a/main/tests/test_physics_2d.cpp +++ b/main/tests/test_physics_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_physics_2d.h" #include "map.h" diff --git a/main/tests/test_physics_2d.h b/main/tests/test_physics_2d.h index e927a595ea..1031aa7f71 100644 --- a/main/tests/test_physics_2d.h +++ b/main/tests/test_physics_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_PHYSICS_2D_H #define TEST_PHYSICS_2D_H diff --git a/main/tests/test_render.cpp b/main/tests/test_render.cpp index fa415e9bca..9340e69bc5 100644 --- a/main/tests/test_render.cpp +++ b/main/tests/test_render.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_render.h" #include "math_funcs.h" diff --git a/main/tests/test_render.h b/main/tests/test_render.h index c79d9edcc7..9084b57067 100644 --- a/main/tests/test_render.h +++ b/main/tests/test_render.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_RENDER_H #define TEST_RENDER_H diff --git a/main/tests/test_shader_lang.cpp b/main/tests/test_shader_lang.cpp index 1ca43686d4..63032597ed 100644 --- a/main/tests/test_shader_lang.cpp +++ b/main/tests/test_shader_lang.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "test_shader_lang.h" #include "os/file_access.h" diff --git a/main/tests/test_shader_lang.h b/main/tests/test_shader_lang.h index 9dd4958c55..235bf10463 100644 --- a/main/tests/test_shader_lang.h +++ b/main/tests/test_shader_lang.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_SHADER_LANG_H #define TEST_SHADER_LANG_H diff --git a/main/tests/test_string.cpp b/main/tests/test_string.cpp index 129adc5477..af948556c4 100644 --- a/main/tests/test_string.cpp +++ b/main/tests/test_string.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ustring.h" #include <wchar.h> //#include "math_funcs.h" @@ -892,7 +893,7 @@ TestFunc test_funcs[] = { MainLoop *test() { - /** A character length != wchar_t may be forced, so the tests wont work */ + /** A character length != wchar_t may be forced, so the tests won't work */ ERR_FAIL_COND_V(sizeof(CharType) != sizeof(wchar_t), NULL); diff --git a/main/tests/test_string.h b/main/tests/test_string.h index 5e34929ff1..110e115309 100644 --- a/main/tests/test_string.h +++ b/main/tests/test_string.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEST_STRING_H #define TEST_STRING_H diff --git a/methods.py b/methods.py index f9da6c8dd5..f4d33fb6d8 100644 --- a/methods.py +++ b/methods.py @@ -1274,6 +1274,8 @@ def detect_modules(): for x in files: if (not os.path.isdir(x)): continue + if (not os.path.exists(x + "/config.py")): + continue x = x.replace("modules/", "") # rest of world x = x.replace("modules\\", "") # win32 module_list.append(x) @@ -1475,7 +1477,7 @@ def use_windows_spawn_fix(self, platform=None): self['SPAWN'] = mySpawn -def split_lib(self, libname): +def split_lib(self, libname, src_list = None, env_lib = None): import string env = self @@ -1485,7 +1487,13 @@ def split_lib(self, libname): list = [] lib_list = [] - for f in getattr(env, libname + "_sources"): + if src_list == None: + src_list = getattr(env, libname + "_sources") + + if type(env_lib) == type(None): + env_lib = env + + for f in src_list: fname = "" if type(f) == type(""): fname = env.File(f).path @@ -1495,26 +1503,26 @@ def split_lib(self, libname): base = string.join(fname.split("/")[:2], "/") if base != cur_base and len(list) > max_src: if num > 0: - lib = env.add_library(libname + str(num), list) + lib = env_lib.add_library(libname + str(num), list) lib_list.append(lib) list = [] num = num + 1 cur_base = base list.append(f) - lib = env.add_library(libname + str(num), list) + lib = env_lib.add_library(libname + str(num), list) lib_list.append(lib) if len(lib_list) > 0: import os, sys if os.name == 'posix' and sys.platform == 'msys': env.Replace(ARFLAGS=['rcsT']) - lib = env.add_library(libname + "_collated", lib_list) + lib = env_lib.add_library(libname + "_collated", lib_list) lib_list = [lib] lib_base = [] - env.add_source_files(lib_base, "*.cpp") - lib = env.add_library(libname, lib_base) + env_lib.add_source_files(lib_base, "*.cpp") + lib = env_lib.add_library(libname, lib_base) lib_list.insert(0, lib) env.Prepend(LIBS=lib_list) @@ -1547,18 +1555,26 @@ def save_active_platforms(apnames, ap): def no_verbose(sys, env): - # If the output is not a terminal, do nothing - if not sys.stdout.isatty(): - return - colors = {} - colors['cyan'] = '\033[96m' - colors['purple'] = '\033[95m' - colors['blue'] = '\033[94m' - colors['green'] = '\033[92m' - colors['yellow'] = '\033[93m' - colors['red'] = '\033[91m' - colors['end'] = '\033[0m' + + # Colors are disabled in non-TTY environments such as pipes. This means + # that if output is redirected to a file, it will not contain color codes + if sys.stdout.isatty(): + colors['cyan'] = '\033[96m' + colors['purple'] = '\033[95m' + colors['blue'] = '\033[94m' + colors['green'] = '\033[92m' + colors['yellow'] = '\033[93m' + colors['red'] = '\033[91m' + colors['end'] = '\033[0m' + else: + colors['cyan'] = '' + colors['purple'] = '' + colors['blue'] = '' + colors['green'] = '' + colors['yellow'] = '' + colors['red'] = '' + colors['end'] = '' compile_source_message = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end']) java_compile_source_message = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end']) @@ -1588,10 +1604,10 @@ def detect_visual_c_compiler_version(tools_env): # and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect # the proper vc version that will be called - # These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc) + # There is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc) # There are many different cl.exe files that are run, and each one compiles & links to a different architecture # As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program() - # is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns: + # is to check the PATH variable and figure out which one will be called first. Code bellow does that and returns: # the following string values: # "" Compiler not detected diff --git a/misc/dist/html/default.html b/misc/dist/html/default.html index 0f78fc640e..a1a4e89d02 100644 --- a/misc/dist/html/default.html +++ b/misc/dist/html/default.html @@ -350,7 +350,7 @@ $GODOT_HEAD_INCLUDE }; function printError(text) { - if (!text.startsWith('**ERROR**: ')) { + if (!String.prototype.trim.call(text).startsWith('**ERROR**: ')) { text = '**ERROR**: ' + text; } print(text); diff --git a/misc/dist/ios_xcode/godot_ios/dummy.cpp b/misc/dist/ios_xcode/godot_ios/dummy.cpp index 78ec87fc10..61de772b44 100644 --- a/misc/dist/ios_xcode/godot_ios/dummy.cpp +++ b/misc/dist/ios_xcode/godot_ios/dummy.cpp @@ -1 +1 @@ -$cpp_code
\ No newline at end of file +$cpp_code diff --git a/misc/dist/linux/godot.6 b/misc/dist/linux/godot.6 index 946fa6c913..22836e03ed 100644 --- a/misc/dist/linux/godot.6 +++ b/misc/dist/linux/godot.6 @@ -1,4 +1,4 @@ -.TH GODOT "6" "September 2017" "godot 3.0-alpha" "Games" +.TH GODOT "6" "January 2018" "godot 3.0" "Games" .SH NAME godot \- multi\-platform 2D and 3D game engine with a feature\-rich editor .SH SYNOPSIS @@ -37,6 +37,9 @@ Use a specific locale (<locale> being a two\-letter code). \fB\-\-path\fR <directory> Path to a project (<directory> must contain a 'project.godot' file). .TP +\fB\-u\fR, \fB\-\-upwards\fR +Scan folders upwards for project.godot file. +.TP \fB\-\-main\-pack\fR <file> Path to a pack (.pck) file to load. .TP @@ -133,17 +136,17 @@ Generate JSON dump of the Godot API for GDNative bindings. \fB\-\-test\fR <test> Run a unit test ('string', 'containers', 'math', 'render', 'multimesh', 'gui', 'io', 'shaderlang', 'physics', 'oa_hash_map'). .SH FILES -~/.godot/ +XDG_DATA_CONFIG/godot/ or ~/.config/godot/ .RS -User\-specific configuration and cache folder, contains persistent editor and game configuration and saved files, temporary metadata, etc. +User\-specific configuration folder, contains persistent editor settings, script and text editor templates and projects metadata. .RE -~/.godot/app_userdata/ +XDG_DATA_HOME/godot/ or ~/.local/share/godot/ .RS -Contains the default configuration and user data folders for Godot\-made games (\fIuser://\fR path). +Contains the default configuration and user data folders for Godot\-made games (\fIuser://\fR path), as well as export templates. .RE -~/.godot/templates/ +XDG_DATA_CACHE/godot or ~/.cache/godot/ .RS -Installation folder for "export templates", compiled binaries of the engine to deploy on the many supported platforms. +Cache folder for generated thumbnails and scene previews, as well as temporary location for downloads. .RE /usr/share/doc/godot/ .RS diff --git a/misc/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist index 2a4914ec75..828a40206d 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-2018 Juan Linietsky, Ariel Manzur./string> + <string>(c) 2007-2018 Juan Linietsky, Ariel Manzur.</string> <key>CFBundleIconFile</key> <string>Godot.icns</string> <key>CFBundleIdentifier</key> @@ -19,13 +19,13 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>3.0-dev</string> + <string>3.0</string> <key>CFBundleSignature</key> <string>godot</string> <key>CFBundleVersion</key> - <string>3.0-dev</string> + <string>3.0</string> <key>NSHumanReadableCopyright</key> - <string>© 2007-2018 Juan Linietsky, Ariel Manzur./string> + <string>© 2007-2018 Juan Linietsky, Ariel Manzur.</string> <key>LSMinimumSystemVersion</key> <string>10.9.0</string> <key>LSMinimumSystemVersionByArchitecture</key> diff --git a/misc/scripts/addheader.py b/misc/scripts/fix_headers.py index 58d9fa35a3..809820c20f 100644 --- a/misc/scripts/addheader.py +++ b/misc/scripts/fix_headers.py @@ -1,3 +1,6 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + header = """\ /*************************************************************************/ /* $filename */ @@ -30,22 +33,21 @@ header = """\ /*************************************************************************/ """ -f = open("files", "rb") +files = open("files", "rb") + +fname = files.readline() -fname = f.readline() while (fname != ""): - fr = open(fname.strip(), "rb") - l = fr.readline() - bc = False + # Handle replacing $filename with actual filename and keep alignment fsingle = fname.strip() - if (fsingle.find("/") != -1): fsingle = fsingle[fsingle.rfind("/") + 1:] rep_fl = "$filename" rep_fi = fsingle len_fl = len(rep_fl) len_fi = len(rep_fi) + # Pad with spaces to keep alignment if (len_fi < len_fl): for x in range(len_fl - len_fi): rep_fi += " " @@ -56,16 +58,43 @@ while (fname != ""): text = header.replace(rep_fl, rep_fi) else: text = header.replace("$filename", fsingle) + text += "\n" + + # We now have the proper header, so we want to ignore the one in the original file + # and potentially empty lines and badly formatted lines, while keeping comments that + # come after the header, and then keep everything non-header unchanged. + # To do so, we skip empty lines that may be at the top in a first pass. + # In a second pass, we skip all consecutive comment lines starting with "/*", + # then we can append the rest (step 2). + + fileread = open(fname.strip(), "rb") + line = fileread.readline() + header_done = False + + while (line.strip() == ""): # Skip empty lines at the top + line = fileread.readline() + + if (line.find("/**********") == -1): # Godot header starts this way + # Maybe starting with a non-Godot comment, abort header magic + header_done = True + + while (not header_done): # Handle header now + if (line.find("/*") != 0): # No more starting with a comment + header_done = True + if (line.strip() != ""): + text += line + line = fileread.readline() + + while (line != ""): # Dump everything until EOF + text += line + line = fileread.readline() + + fileread.close() - while (l != ""): - if ((l.find("//") != 0 and l.find("/*") != 0 and l.strip() != "") or bc): - text += l - bc = True - l = fr.readline() + # Write + fileread = open(fname.strip(), "wb") + fileread.write(text) + fileread.close() - fr.close() - fr = open(fname.strip(), "wb") - fr.write(text) - fr.close() - # print(text) - fname = f.readline() + # Next file + fname = files.readline() diff --git a/modules/SCsub b/modules/SCsub index e3c535e981..74a5267355 100644 --- a/modules/SCsub +++ b/modules/SCsub @@ -17,6 +17,10 @@ for x in env.module_list: env_modules.Append(CPPFLAGS=["-DMODULE_" + x.upper() + "_ENABLED"]) SConscript(x + "/SCsub") -lib = env_modules.add_library("modules", env.modules_sources) +if env.split_modules: + env.split_lib("modules", env_lib = env_modules) +else: -env.Prepend(LIBS=[lib]) + lib = env_modules.add_library("modules", env.modules_sources) + + env.Prepend(LIBS=[lib]) diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub index 0967bca3f2..d8d0b930a5 100644 --- a/modules/bullet/SCsub +++ b/modules/bullet/SCsub @@ -3,12 +3,15 @@ Import('env') Import('env_modules') -# build only version 2 -# Bullet 2.87 - env_bullet = env_modules.Clone() -bullet_src__2_x = [ +# Thirdparty source files + +if env['builtin_bullet']: + # Build only version 2 for now (as of 2.87) + thirdparty_dir = "#thirdparty/bullet/" + + bullet2_src = [ # BulletCollision "BulletCollision/BroadphaseCollision/btAxisSweep3.cpp" , "BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp" @@ -179,17 +182,10 @@ bullet_src__2_x = [ , "LinearMath/btVector3.cpp" ] -thirdparty_dir = "#thirdparty/bullet/" -thirdparty_src = thirdparty_dir + "src/" + thirdparty_sources = [thirdparty_dir + file for file in bullet2_src] -bullet_sources = [thirdparty_src + file for file in bullet_src__2_x] - -# include headers -env_bullet.Append(CPPPATH=[thirdparty_src]) - -env_bullet.add_source_files(env.modules_sources, bullet_sources) + env_bullet.add_source_files(env.modules_sources, thirdparty_sources) + env_bullet.Append(CPPPATH=[thirdparty_dir]) # Godot source files env_bullet.add_source_files(env.modules_sources, "*.cpp") - -Export('env') diff --git a/modules/bullet/SCsub_with_lib b/modules/bullet/SCsub_with_lib deleted file mode 100644 index b362a686ff..0000000000 --- a/modules/bullet/SCsub_with_lib +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -Import('env') - -thirdparty_dir = "#thirdparty/bullet/" -thirdparty_lib = thirdparty_dir + "Win64/lib/" - -bullet_libs = [ - "Bullet2FileLoader", - "Bullet3Collision", - "Bullet3Common", - "Bullet3Dynamics", - "Bullet3Geometry", - "Bullet3OpenCL_clew", - "BulletCollision", - "BulletDynamics", - "BulletInverseDynamics", - "BulletSoftBody", - "LinearMath" - ] - -thirdparty_src = thirdparty_dir + "src/" -# include headers -env.Append(CPPPATH=[thirdparty_src]) - -# lib -env.Append(LIBPATH=[thirdparty_dir + "/Win64/lib/"]) - -bullet_libs = [file+'.lib' for file in bullet_libs] -# LIBS doesn't work in windows -env.Append(LINKFLAGS=bullet_libs) - -env.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/bullet/area_bullet.cpp b/modules/bullet/area_bullet.cpp index 195d89d0c0..648919e612 100644 --- a/modules/bullet/area_bullet.cpp +++ b/modules/bullet/area_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* area_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,13 +29,19 @@ /*************************************************************************/ #include "area_bullet.h" -#include "BulletCollision/CollisionDispatch/btGhostObject.h" -#include "btBulletCollisionCommon.h" + #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "collision_object_bullet.h" #include "space_bullet.h" +#include <BulletCollision/CollisionDispatch/btGhostObject.h> +#include <btBulletCollisionCommon.h> + +/** + @author AndreaCatania +*/ + AreaBullet::AreaBullet() : RigidCollisionObjectBullet(CollisionObjectBullet::TYPE_AREA), monitorable(true), @@ -231,7 +236,7 @@ void AreaBullet::set_param(PhysicsServer::AreaParameter p_param, const Variant & set_spOv_gravityPointAttenuation(p_value); break; default: - print_line("The Bullet areas dosn't suppot this param: " + itos(p_param)); + print_line("The Bullet areas doesn't suppot this param: " + itos(p_param)); } } @@ -254,7 +259,7 @@ Variant AreaBullet::get_param(PhysicsServer::AreaParameter p_param) const { case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION: return spOv_gravityPointAttenuation; default: - print_line("The Bullet areas dosn't suppot this param: " + itos(p_param)); + print_line("The Bullet areas doesn't suppot this param: " + itos(p_param)); return Variant(); } } diff --git a/modules/bullet/area_bullet.h b/modules/bullet/area_bullet.h index 3e0913b891..78136d574b 100644 --- a/modules/bullet/area_bullet.h +++ b/modules/bullet/area_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* area_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -37,6 +36,10 @@ #include "servers/physics_server.h" #include "space_bullet.h" +/** + @author AndreaCatania +*/ + class btGhostObject; class AreaBullet : public RigidCollisionObjectBullet { diff --git a/modules/bullet/btRayShape.cpp b/modules/bullet/btRayShape.cpp index 8f6434b46b..4164450cd2 100644 --- a/modules/bullet/btRayShape.cpp +++ b/modules/bullet/btRayShape.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ -/* btRayShape.h */ -/* Author: AndreaCatania */ +/* btRayShape.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,9 +29,15 @@ /*************************************************************************/ #include "btRayShape.h" -#include "LinearMath/btAabbUtil2.h" + #include "math/math_funcs.h" +#include <LinearMath/btAabbUtil2.h> + +/** + @author AndreaCatania +*/ + btRayShape::btRayShape(btScalar length) : btConvexInternalShape(), m_shapeAxis(0, 0, 1) { diff --git a/modules/bullet/btRayShape.h b/modules/bullet/btRayShape.h index be7acaa01f..99a9412dbe 100644 --- a/modules/bullet/btRayShape.h +++ b/modules/bullet/btRayShape.h @@ -1,10 +1,9 @@ /*************************************************************************/ -/* btRayShape.h */ -/* Author: AndreaCatania */ +/* btRayShape.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -29,12 +28,16 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -/// IMPORTANT The class name and filename was created by following Bullet writing rules for an easy (eventually ) porting to bullet +/// IMPORTANT The class name and filename was created by following Bullet writing rules for an easy (eventually) porting to bullet /// This shape is a custom shape that is not present to Bullet physics engine #ifndef BTRAYSHAPE_H #define BTRAYSHAPE_H -#include "BulletCollision/CollisionShapes/btConvexInternalShape.h" +#include <BulletCollision/CollisionShapes/btConvexInternalShape.h> + +/** + @author AndreaCatania +*/ /// Ray shape around z axis ATTRIBUTE_ALIGNED16(class) diff --git a/modules/bullet/bullet_physics_server.cpp b/modules/bullet/bullet_physics_server.cpp index 679e4def82..51de4998fa 100644 --- a/modules/bullet/bullet_physics_server.cpp +++ b/modules/bullet/bullet_physics_server.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* bullet_physics_server.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,7 +29,7 @@ /*************************************************************************/ #include "bullet_physics_server.h" -#include "LinearMath/btVector3.h" + #include "bullet_utilities.h" #include "class_db.h" #include "cone_twist_joint_bullet.h" @@ -41,8 +40,15 @@ #include "pin_joint_bullet.h" #include "shape_bullet.h" #include "slider_joint_bullet.h" + +#include <LinearMath/btVector3.h> + #include <assert.h> +/** + @author AndreaCatania +*/ + #define CreateThenReturnRID(owner, ridData) \ RID rid = owner.make_rid(ridData); \ ridData->set_self(rid); \ diff --git a/modules/bullet/bullet_physics_server.h b/modules/bullet/bullet_physics_server.h index 006ad0f821..1c94428a2a 100644 --- a/modules/bullet/bullet_physics_server.h +++ b/modules/bullet/bullet_physics_server.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* bullet_physics_server.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -41,6 +40,10 @@ #include "soft_body_bullet.h" #include "space_bullet.h" +/** + @author AndreaCatania +*/ + class BulletPhysicsServer : public PhysicsServer { GDCLASS(BulletPhysicsServer, PhysicsServer) diff --git a/modules/bullet/bullet_types_converter.cpp b/modules/bullet/bullet_types_converter.cpp index 03247a91ca..a0fe598227 100644 --- a/modules/bullet/bullet_types_converter.cpp +++ b/modules/bullet/bullet_types_converter.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* bullet_types_converter.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -33,6 +32,10 @@ #include "bullet_types_converter.h" +/** + @author AndreaCatania +*/ + // ++ BULLET to GODOT ++++++++++ void B_TO_G(btVector3 const &inVal, Vector3 &outVal) { outVal[0] = inVal[0]; @@ -92,3 +95,14 @@ void G_TO_B(Transform const &inVal, btTransform &outVal) { G_TO_B(inVal.basis, outVal.getBasis()); G_TO_B(inVal.origin, outVal.getOrigin()); } + +void UNSCALE_BT_BASIS(btTransform &scaledBasis) { + btMatrix3x3 &m(scaledBasis.getBasis()); + btVector3 column0(m[0][0], m[1][0], m[2][0]); + btVector3 column1(m[0][1], m[1][1], m[2][1]); + btVector3 column2(m[0][2], m[1][2], m[2][2]); + column0.normalize(); + column1.normalize(); + column2.normalize(); + m.setValue(column0[0], column1[0], column2[0], column0[1], column1[1], column2[1], column0[2], column1[2], column2[2]); +} diff --git a/modules/bullet/bullet_types_converter.h b/modules/bullet/bullet_types_converter.h index 5fa30c1d74..84321fe837 100644 --- a/modules/bullet/bullet_types_converter.h +++ b/modules/bullet/bullet_types_converter.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* bullet_types_converter.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,14 +31,19 @@ #ifndef BULLET_TYPES_CONVERTER_H #define BULLET_TYPES_CONVERTER_H -#include "LinearMath/btMatrix3x3.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btVector3.h" #include "core/math/matrix3.h" #include "core/math/transform.h" #include "core/math/vector3.h" #include "core/typedefs.h" +#include <LinearMath/btMatrix3x3.h> +#include <LinearMath/btTransform.h> +#include <LinearMath/btVector3.h> + +/** + @author AndreaCatania +*/ + // Bullet to Godot extern void B_TO_G(btVector3 const &inVal, Vector3 &outVal); extern void INVERT_B_TO_G(btVector3 const &inVal, Vector3 &outVal); @@ -54,4 +58,5 @@ extern void G_TO_B(Basis const &inVal, btMatrix3x3 &outVal); extern void INVERT_G_TO_B(Basis const &inVal, btMatrix3x3 &outVal); extern void G_TO_B(Transform const &inVal, btTransform &outVal); +extern void UNSCALE_BT_BASIS(btTransform &scaledBasis); #endif diff --git a/modules/bullet/bullet_utilities.h b/modules/bullet/bullet_utilities.h index 1a44f48844..2841dfbe69 100644 --- a/modules/bullet/bullet_utilities.h +++ b/modules/bullet/bullet_utilities.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* bullet_utilities.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,6 +31,10 @@ #ifndef BULLET_UTILITIES_H #define BULLET_UTILITIES_H +/** + @author AndreaCatania +*/ + #pragma once #define bulletnew(cl) \ diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp index 70d604fa70..34aff68a4a 100644 --- a/modules/bullet/collision_object_bullet.cpp +++ b/modules/bullet/collision_object_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* collision_object_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,21 +29,29 @@ /*************************************************************************/ #include "collision_object_bullet.h" + #include "area_bullet.h" -#include "btBulletCollisionCommon.h" #include "bullet_physics_server.h" #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "shape_bullet.h" #include "space_bullet.h" +#include <btBulletCollisionCommon.h> + +/** + @author AndreaCatania +*/ + #define enableDynamicAabbTree true #define initialChildCapacity 1 CollisionObjectBullet::ShapeWrapper::~ShapeWrapper() {} void CollisionObjectBullet::ShapeWrapper::set_transform(const Transform &p_transform) { + G_TO_B(p_transform.get_basis().get_scale(), scale); G_TO_B(p_transform, transform); + UNSCALE_BT_BASIS(transform); } void CollisionObjectBullet::ShapeWrapper::set_transform(const btTransform &p_transform) { transform = p_transform; @@ -57,7 +64,8 @@ CollisionObjectBullet::CollisionObjectBullet(Type p_type) : collisionsEnabled(true), m_isStatic(false), bt_collision_object(NULL), - body_scale(1., 1., 1.) {} + body_scale(1., 1., 1.), + force_shape_reset(false) {} CollisionObjectBullet::~CollisionObjectBullet() { // Remove all overlapping @@ -88,6 +96,7 @@ btVector3 CollisionObjectBullet::get_bt_body_scale() const { } void CollisionObjectBullet::on_body_scale_changed() { + force_shape_reset = true; } void CollisionObjectBullet::destroyBulletCollisionObject() { @@ -151,16 +160,13 @@ int CollisionObjectBullet::get_godot_object_flags() const { void CollisionObjectBullet::set_transform(const Transform &p_global_transform) { - btTransform btTrans; - Basis decomposed_basis; - - Vector3 decomposed_scale = p_global_transform.get_basis().rotref_posscale_decomposition(decomposed_basis); + set_body_scale(p_global_transform.basis.get_scale()); - G_TO_B(p_global_transform.get_origin(), btTrans.getOrigin()); - G_TO_B(decomposed_basis, btTrans.getBasis()); + btTransform bt_transform; + G_TO_B(p_global_transform, bt_transform); + UNSCALE_BT_BASIS(bt_transform); - set_body_scale(decomposed_scale); - set_transform__bullet(btTrans); + set_transform__bullet(bt_transform); } Transform CollisionObjectBullet::get_transform() const { @@ -228,7 +234,7 @@ void RigidCollisionObjectBullet::set_shape_transform(int p_index, const Transfor ERR_FAIL_INDEX(p_index, get_shape_count()); shapes[p_index].set_transform(p_transform); - on_shapes_changed(); + on_shape_changed(shapes[p_index].shape); } void RigidCollisionObjectBullet::remove_shape(ShapeBullet *p_shape) { @@ -289,27 +295,41 @@ void RigidCollisionObjectBullet::on_shape_changed(const ShapeBullet *const p_sha void RigidCollisionObjectBullet::on_shapes_changed() { int i; + // Remove all shapes, reverse order for performance reason (Array resize) for (i = compoundShape->getNumChildShapes() - 1; 0 <= i; --i) { compoundShape->removeChildShapeByIndex(i); } - // Insert all shapes ShapeWrapper *shpWrapper; - const int size = shapes.size(); - for (i = 0; i < size; ++i) { + const int shapes_size = shapes.size(); + + // Reset shape if required + if (force_shape_reset) { + for (i = 0; i < shapes_size; ++i) { + shpWrapper = &shapes[i]; + bulletdelete(shpWrapper->bt_shape); + } + force_shape_reset = false; + } + + // Insert all shapes + btVector3 body_scale(get_bt_body_scale()); + for (i = 0; i < shapes_size; ++i) { shpWrapper = &shapes[i]; if (shpWrapper->active) { if (!shpWrapper->bt_shape) { - shpWrapper->bt_shape = shpWrapper->shape->create_bt_shape(); + shpWrapper->bt_shape = shpWrapper->shape->create_bt_shape(shpWrapper->scale * body_scale); } - compoundShape->addChildShape(shpWrapper->transform, shpWrapper->bt_shape); + + btTransform scaled_shape_transform(shpWrapper->transform); + scaled_shape_transform.getOrigin() *= body_scale; + compoundShape->addChildShape(scaled_shape_transform, shpWrapper->bt_shape); } else { - compoundShape->addChildShape(shpWrapper->transform, BulletPhysicsServer::get_empty_shape()); + compoundShape->addChildShape(btTransform(), BulletPhysicsServer::get_empty_shape()); } } - compoundShape->setLocalScaling(get_bt_body_scale()); compoundShape->recalculateLocalAabb(); } diff --git a/modules/bullet/collision_object_bullet.h b/modules/bullet/collision_object_bullet.h index 4168133e0d..506976eabf 100644 --- a/modules/bullet/collision_object_bullet.h +++ b/modules/bullet/collision_object_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* collision_object_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,13 +31,18 @@ #ifndef COLLISION_OBJECT_BULLET_H #define COLLISION_OBJECT_BULLET_H -#include "LinearMath/btTransform.h" #include "core/vset.h" #include "object.h" #include "shape_owner_bullet.h" #include "transform.h" #include "vector3.h" +#include <LinearMath/btTransform.h> + +/** + @author AndreaCatania +*/ + class AreaBullet; class ShapeBullet; class btCollisionObject; @@ -68,6 +72,7 @@ public: ShapeBullet *shape; btCollisionShape *bt_shape; btTransform transform; + btVector3 scale; bool active; ShapeWrapper() : @@ -98,6 +103,7 @@ public: shape = otherShape.shape; bt_shape = otherShape.bt_shape; transform = otherShape.transform; + scale = otherShape.scale; active = otherShape.active; } @@ -115,6 +121,7 @@ protected: bool ray_pickable; btCollisionObject *bt_collision_object; Vector3 body_scale; + bool force_shape_reset; SpaceBullet *space; VSet<RID> exceptions; diff --git a/modules/bullet/cone_twist_joint_bullet.cpp b/modules/bullet/cone_twist_joint_bullet.cpp index c8944d23c5..472ad3b52c 100644 --- a/modules/bullet/cone_twist_joint_bullet.cpp +++ b/modules/bullet/cone_twist_joint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* cone_twist_joint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,11 +29,17 @@ /*************************************************************************/ #include "cone_twist_joint_bullet.h" -#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h" + #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "rigid_body_bullet.h" +#include <BulletDynamics/ConstraintSolver/btConeTwistConstraint.h> + +/** + @author AndreaCatania +*/ + ConeTwistJointBullet::ConeTwistJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &rbAFrame, const Transform &rbBFrame) : JointBullet() { diff --git a/modules/bullet/cone_twist_joint_bullet.h b/modules/bullet/cone_twist_joint_bullet.h index 5f0bccbd31..bd6eb49196 100644 --- a/modules/bullet/cone_twist_joint_bullet.h +++ b/modules/bullet/cone_twist_joint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* cone_twist_joint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,6 +33,10 @@ #include "joint_bullet.h" +/** + @author AndreaCatania +*/ + class RigidBodyBullet; class ConeTwistJointBullet : public JointBullet { diff --git a/modules/bullet/constraint_bullet.cpp b/modules/bullet/constraint_bullet.cpp index 0c5ba29cb3..b60e89b6fd 100644 --- a/modules/bullet/constraint_bullet.cpp +++ b/modules/bullet/constraint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* constraint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,9 +29,14 @@ /*************************************************************************/ #include "constraint_bullet.h" + #include "collision_object_bullet.h" #include "space_bullet.h" +/** + @author AndreaCatania +*/ + ConstraintBullet::ConstraintBullet() : space(NULL), constraint(NULL) {} diff --git a/modules/bullet/constraint_bullet.h b/modules/bullet/constraint_bullet.h index a753ee0429..23be5a5063 100644 --- a/modules/bullet/constraint_bullet.h +++ b/modules/bullet/constraint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* constraint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,10 +31,15 @@ #ifndef CONSTRAINT_BULLET_H #define CONSTRAINT_BULLET_H -#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h" #include "bullet_utilities.h" #include "rid_bullet.h" +#include <BulletDynamics/ConstraintSolver/btTypedConstraint.h> + +/** + @author AndreaCatania +*/ + class RigidBodyBullet; class SpaceBullet; class btTypedConstraint; diff --git a/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml b/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml index 941a79e8ea..c7909c7d72 100644 --- a/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml +++ b/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BulletPhysicsDirectBodyState" inherits="PhysicsDirectBodyState" category="Core" version="3.0-beta"> +<class name="BulletPhysicsDirectBodyState" inherits="PhysicsDirectBodyState" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/bullet/doc_classes/BulletPhysicsServer.xml b/modules/bullet/doc_classes/BulletPhysicsServer.xml index 515f0e292e..a59abb0ebb 100644 --- a/modules/bullet/doc_classes/BulletPhysicsServer.xml +++ b/modules/bullet/doc_classes/BulletPhysicsServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BulletPhysicsServer" inherits="PhysicsServer" category="Core" version="3.0-beta"> +<class name="BulletPhysicsServer" inherits="PhysicsServer" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/bullet/generic_6dof_joint_bullet.cpp b/modules/bullet/generic_6dof_joint_bullet.cpp index 674b30b23a..151a79a69f 100644 --- a/modules/bullet/generic_6dof_joint_bullet.cpp +++ b/modules/bullet/generic_6dof_joint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* generic_6dof_joint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,11 +29,17 @@ /*************************************************************************/ #include "generic_6dof_joint_bullet.h" -#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h" + #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "rigid_body_bullet.h" +#include <BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h> + +/** + @author AndreaCatania +*/ + Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB, bool useLinearReferenceFrameA) : JointBullet() { diff --git a/modules/bullet/generic_6dof_joint_bullet.h b/modules/bullet/generic_6dof_joint_bullet.h index df66892d66..ad06582eac 100644 --- a/modules/bullet/generic_6dof_joint_bullet.h +++ b/modules/bullet/generic_6dof_joint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* generic_6dof_joint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,6 +33,10 @@ #include "joint_bullet.h" +/** + @author AndreaCatania +*/ + class RigidBodyBullet; class Generic6DOFJointBullet : public JointBullet { diff --git a/modules/bullet/godot_collision_configuration.cpp b/modules/bullet/godot_collision_configuration.cpp index 6d83a9bccb..f4bb9acbd7 100644 --- a/modules/bullet/godot_collision_configuration.cpp +++ b/modules/bullet/godot_collision_configuration.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_collision_configuration.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,10 +29,16 @@ /*************************************************************************/ #include "godot_collision_configuration.h" -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" + #include "godot_ray_world_algorithm.h" +#include <BulletCollision/BroadphaseCollision/btBroadphaseProxy.h> +#include <BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h> + +/** + @author AndreaCatania +*/ + GodotCollisionConfiguration::GodotCollisionConfiguration(const btDiscreteDynamicsWorld *world, const btDefaultCollisionConstructionInfo &constructionInfo) : btDefaultCollisionConfiguration(constructionInfo) { diff --git a/modules/bullet/godot_collision_configuration.h b/modules/bullet/godot_collision_configuration.h index 835edac907..9b30ad0c62 100644 --- a/modules/bullet/godot_collision_configuration.h +++ b/modules/bullet/godot_collision_configuration.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_collision_configuration.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,7 +31,11 @@ #ifndef GODOT_COLLISION_CONFIGURATION_H #define GODOT_COLLISION_CONFIGURATION_H -#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h" +#include <BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h> + +/** + @author AndreaCatania +*/ class btDiscreteDynamicsWorld; diff --git a/modules/bullet/godot_collision_dispatcher.cpp b/modules/bullet/godot_collision_dispatcher.cpp index 31a965869e..1815f2152e 100644 --- a/modules/bullet/godot_collision_dispatcher.cpp +++ b/modules/bullet/godot_collision_dispatcher.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_collision_dispatcher.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,8 +29,13 @@ /*************************************************************************/ #include "godot_collision_dispatcher.h" + #include "collision_object_bullet.h" +/** + @author AndreaCatania +*/ + const int GodotCollisionDispatcher::CASTED_TYPE_AREA = static_cast<int>(CollisionObjectBullet::TYPE_AREA); GodotCollisionDispatcher::GodotCollisionDispatcher(btCollisionConfiguration *collisionConfiguration) : diff --git a/modules/bullet/godot_collision_dispatcher.h b/modules/bullet/godot_collision_dispatcher.h index ab3ab2af31..2e5a6c2732 100644 --- a/modules/bullet/godot_collision_dispatcher.h +++ b/modules/bullet/godot_collision_dispatcher.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_collision_dispatcher.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -33,8 +32,13 @@ #define GODOT_COLLISION_DISPATCHER_H #include "int_types.h" + #include <btBulletDynamicsCommon.h> +/** + @author AndreaCatania +*/ + /// This class is required to implement custom collision behaviour in the narrowphase class GodotCollisionDispatcher : public btCollisionDispatcher { private: diff --git a/modules/bullet/godot_motion_state.h b/modules/bullet/godot_motion_state.h index 79f139898c..fe5d8418b7 100644 --- a/modules/bullet/godot_motion_state.h +++ b/modules/bullet/godot_motion_state.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_motion_state.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,12 +31,17 @@ #ifndef GODOT_MOTION_STATE_H #define GODOT_MOTION_STATE_H -#include "LinearMath/btMotionState.h" #include "rigid_body_bullet.h" +#include <LinearMath/btMotionState.h> + +/** + @author AndreaCatania +*/ + class RigidBodyBullet; -// This clas is responsible to move kinematic actor +// This class is responsible to move kinematic actor // and sincronize rendering engine with Bullet /// DOC: /// http://www.bulletphysics.org/mediawiki-1.5.8/index.php/MotionStates#What.27s_a_MotionState.3F diff --git a/modules/bullet/godot_ray_world_algorithm.cpp b/modules/bullet/godot_ray_world_algorithm.cpp index 3dd10b9ab3..4a511b39a7 100644 --- a/modules/bullet/godot_ray_world_algorithm.cpp +++ b/modules/bullet/godot_ray_world_algorithm.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_ray_world_algorithm.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,10 +29,18 @@ /*************************************************************************/ #include "godot_ray_world_algorithm.h" -#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" + #include "btRayShape.h" #include "collision_object_bullet.h" +#include <BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h> + +#define RAY_STABILITY_MARGIN 0.1 + +/** + @author AndreaCatania +*/ + GodotRayWorldAlgorithm::CreateFunc::CreateFunc(const btDiscreteDynamicsWorld *world) : m_world(world) {} @@ -92,10 +99,15 @@ void GodotRayWorldAlgorithm::processCollision(const btCollisionObjectWrapper *bo m_world->rayTestSingleInternal(ray_transform, to, other_co_wrapper, btResult); if (btResult.hasHit()) { - btVector3 ray_normal(to.getOrigin() - ray_transform.getOrigin()); + + btVector3 ray_normal(ray_transform.getOrigin() - to.getOrigin()); ray_normal.normalize(); - ray_normal *= -1; - resultOut->addContactPoint(ray_normal, btResult.m_hitPointWorld, ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1)); + btScalar depth(ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1)); + + if (depth >= -RAY_STABILITY_MARGIN) + depth = 0; + + resultOut->addContactPoint(ray_normal, btResult.m_hitPointWorld, depth); } } diff --git a/modules/bullet/godot_ray_world_algorithm.h b/modules/bullet/godot_ray_world_algorithm.h index f2c9008f58..c716c1d88d 100644 --- a/modules/bullet/godot_ray_world_algorithm.h +++ b/modules/bullet/godot_ray_world_algorithm.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_ray_world_algorithm.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,9 +31,13 @@ #ifndef GODOT_RAY_WORLD_ALGORITHM_H #define GODOT_RAY_WORLD_ALGORITHM_H -#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h" -#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" -#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h" +#include <BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h> +#include <BulletCollision/CollisionDispatch/btCollisionCreateFunc.h> +#include <BulletCollision/CollisionDispatch/btCollisionDispatcher.h> + +/** + @author AndreaCatania +*/ class btDiscreteDynamicsWorld; diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp index a91cbec340..8d4ca6d6a7 100644 --- a/modules/bullet/godot_result_callbacks.cpp +++ b/modules/bullet/godot_result_callbacks.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_result_callbacks.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,10 +29,15 @@ /*************************************************************************/ #include "godot_result_callbacks.h" + #include "bullet_types_converter.h" #include "collision_object_bullet.h" #include "rigid_body_bullet.h" +/** + @author AndreaCatania +*/ + bool GodotFilterCallback::test_collision_filters(uint32_t body0_collision_layer, uint32_t body0_collision_mask, uint32_t body1_collision_layer, uint32_t body1_collision_mask) { return body0_collision_layer & body1_collision_mask || body1_collision_layer & body0_collision_mask; } diff --git a/modules/bullet/godot_result_callbacks.h b/modules/bullet/godot_result_callbacks.h index 407fb79b9a..b18965a5b8 100644 --- a/modules/bullet/godot_result_callbacks.h +++ b/modules/bullet/godot_result_callbacks.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* godot_result_callbacks.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,10 +31,15 @@ #ifndef GODOT_RESULT_CALLBACKS_H #define GODOT_RESULT_CALLBACKS_H -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "btBulletDynamicsCommon.h" #include "servers/physics_server.h" +#include <BulletCollision/BroadphaseCollision/btBroadphaseProxy.h> +#include <btBulletDynamicsCommon.h> + +/** + @author AndreaCatania +*/ + class RigidBodyBullet; /// This class is required to implement custom collision behaviour in the broadphase diff --git a/modules/bullet/hinge_joint_bullet.cpp b/modules/bullet/hinge_joint_bullet.cpp index c731a3c134..97ea7ca3df 100644 --- a/modules/bullet/hinge_joint_bullet.cpp +++ b/modules/bullet/hinge_joint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* hinge_joint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,11 +29,17 @@ /*************************************************************************/ #include "hinge_joint_bullet.h" -#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h" + #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "rigid_body_bullet.h" +#include <BulletDynamics/ConstraintSolver/btHingeConstraint.h> + +/** + @author AndreaCatania +*/ + HingeJointBullet::HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameA, const Transform &frameB) : JointBullet() { diff --git a/modules/bullet/hinge_joint_bullet.h b/modules/bullet/hinge_joint_bullet.h index 72146fca8b..ca87c8dd8c 100644 --- a/modules/bullet/hinge_joint_bullet.h +++ b/modules/bullet/hinge_joint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* hinge_joint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,6 +33,10 @@ #include "joint_bullet.h" +/** + @author AndreaCatania +*/ + class HingeJointBullet : public JointBullet { class btHingeConstraint *hingeConstraint; diff --git a/modules/bullet/joint_bullet.cpp b/modules/bullet/joint_bullet.cpp index 8aa15e731d..aaeb9f9ce7 100644 --- a/modules/bullet/joint_bullet.cpp +++ b/modules/bullet/joint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* joint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,8 +29,13 @@ /*************************************************************************/ #include "joint_bullet.h" + #include "space_bullet.h" +/** + @author AndreaCatania +*/ + JointBullet::JointBullet() : ConstraintBullet() {} diff --git a/modules/bullet/joint_bullet.h b/modules/bullet/joint_bullet.h index 2d4f774345..4a5333fb85 100644 --- a/modules/bullet/joint_bullet.h +++ b/modules/bullet/joint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* joint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -35,6 +34,10 @@ #include "constraint_bullet.h" #include "servers/physics_server.h" +/** + @author AndreaCatania +*/ + class RigidBodyBullet; class btTypedConstraint; diff --git a/modules/bullet/pin_joint_bullet.cpp b/modules/bullet/pin_joint_bullet.cpp index 7c44548496..c4e5b8cdbe 100644 --- a/modules/bullet/pin_joint_bullet.cpp +++ b/modules/bullet/pin_joint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* pin_joint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,10 +29,16 @@ /*************************************************************************/ #include "pin_joint_bullet.h" -#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h" + #include "bullet_types_converter.h" #include "rigid_body_bullet.h" +#include <BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h> + +/** + @author AndreaCatania +*/ + PinJointBullet::PinJointBullet(RigidBodyBullet *p_body_a, const Vector3 &p_pos_a, RigidBodyBullet *p_body_b, const Vector3 &p_pos_b) : JointBullet() { if (p_body_b) { diff --git a/modules/bullet/pin_joint_bullet.h b/modules/bullet/pin_joint_bullet.h index 5610e6aa05..648010bf78 100644 --- a/modules/bullet/pin_joint_bullet.h +++ b/modules/bullet/pin_joint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* pin_joint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,6 +33,10 @@ #include "joint_bullet.h" +/** + @author AndreaCatania +*/ + class RigidBodyBullet; class PinJointBullet : public JointBullet { diff --git a/modules/bullet/register_types.cpp b/modules/bullet/register_types.cpp index 2a420f424b..b119b7720f 100644 --- a/modules/bullet/register_types.cpp +++ b/modules/bullet/register_types.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* register_types.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,9 +29,14 @@ /*************************************************************************/ #include "register_types.h" + #include "bullet_physics_server.h" #include "class_db.h" +/** + @author AndreaCatania +*/ + PhysicsServer *_createBulletPhysicsCallback() { return memnew(BulletPhysicsServer); } diff --git a/modules/bullet/register_types.h b/modules/bullet/register_types.h index 4edc3fb839..226bcd9402 100644 --- a/modules/bullet/register_types.h +++ b/modules/bullet/register_types.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* register_types.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,6 +31,10 @@ #ifndef REGISTER_BULLET_TYPES_H #define REGISTER_BULLET_TYPES_H +/** + @author AndreaCatania +*/ + void register_bullet_types(); void unregister_bullet_types(); #endif diff --git a/modules/bullet/rid_bullet.h b/modules/bullet/rid_bullet.h index 72859b628e..a9351d7728 100644 --- a/modules/bullet/rid_bullet.h +++ b/modules/bullet/rid_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* rid_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,6 +33,10 @@ #include "core/rid.h" +/** + @author AndreaCatania +*/ + class BulletPhysicsServer; class RIDBullet : public RID_Data { diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp index e7342e2ae8..96a53f9f8b 100644 --- a/modules/bullet/rigid_body_bullet.cpp +++ b/modules/bullet/rigid_body_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ -/* body_bullet.cpp */ -/* Author: AndreaCatania */ +/* rigid_body_bullet.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,18 +29,25 @@ /*************************************************************************/ #include "rigid_body_bullet.h" -#include "BulletCollision/CollisionDispatch/btGhostObject.h" -#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h" -#include "BulletDynamics/Dynamics/btRigidBody.h" -#include "btBulletCollisionCommon.h" + #include "btRayShape.h" #include "bullet_physics_server.h" #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "godot_motion_state.h" #include "joint_bullet.h" + +#include <BulletCollision/CollisionDispatch/btGhostObject.h> +#include <BulletCollision/CollisionShapes/btConvexPointCloudShape.h> +#include <BulletDynamics/Dynamics/btRigidBody.h> +#include <btBulletCollisionCommon.h> + #include <assert.h> +/** + @author AndreaCatania +*/ + BulletPhysicsDirectBodyState *BulletPhysicsDirectBodyState::singleton = NULL; Vector3 BulletPhysicsDirectBodyState::get_total_gravity() const { @@ -198,48 +204,27 @@ void RigidBodyBullet::KinematicUtilities::copyAllOwnerShapes() { const CollisionObjectBullet::ShapeWrapper *shape_wrapper; - btVector3 owner_body_scale(owner->get_bt_body_scale()); + btVector3 owner_scale(owner->get_bt_body_scale()); for (int i = shapes_count - 1; 0 <= i; --i) { shape_wrapper = &shapes_wrappers[i]; if (!shape_wrapper->active) { continue; } - shapes[i].transform = shape_wrapper->transform; - - btConvexShape *&kin_shape_ref = shapes[i].shape; + shapes[i].transform = shape_wrapper->transform; + shapes[i].transform.getOrigin() *= owner_scale; switch (shape_wrapper->shape->get_type()) { - case PhysicsServer::SHAPE_SPHERE: { - SphereShapeBullet *sphere = static_cast<SphereShapeBullet *>(shape_wrapper->shape); - kin_shape_ref = ShapeBullet::create_shape_sphere(sphere->get_radius() * owner_body_scale[0] + safe_margin); - break; - } - case PhysicsServer::SHAPE_BOX: { - BoxShapeBullet *box = static_cast<BoxShapeBullet *>(shape_wrapper->shape); - kin_shape_ref = ShapeBullet::create_shape_box((box->get_half_extents() * owner_body_scale) + btVector3(safe_margin, safe_margin, safe_margin)); - break; - } - case PhysicsServer::SHAPE_CAPSULE: { - CapsuleShapeBullet *capsule = static_cast<CapsuleShapeBullet *>(shape_wrapper->shape); - - kin_shape_ref = ShapeBullet::create_shape_capsule(capsule->get_radius() * owner_body_scale[0] + safe_margin, capsule->get_height() * owner_body_scale[1] + safe_margin); - break; - } - case PhysicsServer::SHAPE_CONVEX_POLYGON: { - ConvexPolygonShapeBullet *godot_convex = static_cast<ConvexPolygonShapeBullet *>(shape_wrapper->shape); - kin_shape_ref = ShapeBullet::create_shape_convex(godot_convex->vertices); - kin_shape_ref->setLocalScaling(owner_body_scale + btVector3(safe_margin, safe_margin, safe_margin)); - break; - } + case PhysicsServer::SHAPE_SPHERE: + case PhysicsServer::SHAPE_BOX: + case PhysicsServer::SHAPE_CAPSULE: + case PhysicsServer::SHAPE_CONVEX_POLYGON: case PhysicsServer::SHAPE_RAY: { - RayShapeBullet *godot_ray = static_cast<RayShapeBullet *>(shape_wrapper->shape); - kin_shape_ref = ShapeBullet::create_shape_ray(godot_ray->length * owner_body_scale[1] + safe_margin); - break; - } + shapes[i].shape = static_cast<btConvexShape *>(shape_wrapper->shape->create_bt_shape(owner_scale * shape_wrapper->scale, safe_margin)); + } break; default: WARN_PRINT("This shape is not supported to be kinematic!"); - kin_shape_ref = NULL; + shapes[i].shape = NULL; } } } @@ -705,7 +690,7 @@ void RigidBodyBullet::set_continuous_collision_detection(bool p_enable) { /// Calculate using the rule writte below the CCD swept sphere radius /// CCD works on an embedded sphere of radius, make sure this radius /// is embedded inside the convex objects, preferably smaller: - /// for an object of dimentions 1 meter, try 0.2 + /// for an object of dimensions 1 meter, try 0.2 btVector3 center; btScalar radius; btBody->getCollisionShape()->getBoundingSphere(center, radius); @@ -970,7 +955,8 @@ void RigidBodyBullet::_internal_set_mass(real_t p_mass) { const bool isDynamic = p_mass != 0.f; if (isDynamic) { - ERR_FAIL_COND(PhysicsServer::BODY_MODE_RIGID != mode && PhysicsServer::BODY_MODE_CHARACTER != mode); + if (PhysicsServer::BODY_MODE_RIGID != mode && PhysicsServer::BODY_MODE_CHARACTER != mode) + return; m_isStatic = false; compoundShape->calculateLocalInertia(p_mass, localInertia); @@ -990,7 +976,8 @@ void RigidBodyBullet::_internal_set_mass(real_t p_mass) { } } else { - ERR_FAIL_COND(PhysicsServer::BODY_MODE_STATIC != mode && PhysicsServer::BODY_MODE_KINEMATIC != mode); + if (PhysicsServer::BODY_MODE_STATIC != mode && PhysicsServer::BODY_MODE_KINEMATIC != mode) + return; m_isStatic = true; if (PhysicsServer::BODY_MODE_STATIC == mode) { diff --git a/modules/bullet/rigid_body_bullet.h b/modules/bullet/rigid_body_bullet.h index ff1596e6f4..aff6056ad9 100644 --- a/modules/bullet/rigid_body_bullet.h +++ b/modules/bullet/rigid_body_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ -/* body_bullet.h */ -/* Author: AndreaCatania */ +/* rigid_body_bullet.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,11 +31,16 @@ #ifndef BODYBULLET_H #define BODYBULLET_H -#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h" -#include "LinearMath/btTransform.h" #include "collision_object_bullet.h" #include "space_bullet.h" +#include <BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h> +#include <LinearMath/btTransform.h> + +/** + @author AndreaCatania +*/ + class AreaBullet; class SpaceBullet; class btRigidBody; @@ -44,11 +48,11 @@ class GodotMotionState; class BulletPhysicsDirectBodyState; /// This class could be used in multi thread with few changes but currently -/// is setted to be only in one single thread. +/// is set to be only in one single thread. /// /// In the system there is only one object at a time that manage all bodies and is /// created by BulletPhysicsServer and is held by the "singleton" variable of this class -/// Each time something require it, the body must be setted again. +/// Each time something require it, the body must be set again. class BulletPhysicsDirectBodyState : public PhysicsDirectBodyState { GDCLASS(BulletPhysicsDirectBodyState, PhysicsDirectBodyState) diff --git a/modules/bullet/shape_bullet.cpp b/modules/bullet/shape_bullet.cpp index 55cc742f0a..c6b9695d96 100644 --- a/modules/bullet/shape_bullet.cpp +++ b/modules/bullet/shape_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* shape_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,19 +29,31 @@ /*************************************************************************/ #include "shape_bullet.h" -#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h" -#include "BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h" -#include "btBulletCollisionCommon.h" + #include "btRayShape.h" #include "bullet_physics_server.h" #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "shape_owner_bullet.h" +#include <BulletCollision/CollisionShapes/btConvexPointCloudShape.h> +#include <BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h> +#include <btBulletCollisionCommon.h> + +/** + @author AndreaCatania +*/ + ShapeBullet::ShapeBullet() {} ShapeBullet::~ShapeBullet() {} +btCollisionShape *ShapeBullet::create_bt_shape(const Vector3 &p_implicit_scale, real_t p_margin) { + btVector3 s; + G_TO_B(p_implicit_scale, s); + return create_bt_shape(s, p_margin); +} + btCollisionShape *ShapeBullet::prepare(btCollisionShape *p_btShape) const { p_btShape->setUserPointer(const_cast<ShapeBullet *>(this)); p_btShape->setMargin(0.); @@ -66,7 +77,7 @@ void ShapeBullet::add_owner(ShapeOwnerBullet *p_owner) { void ShapeBullet::remove_owner(ShapeOwnerBullet *p_owner, bool p_permanentlyFromThisBody) { Map<ShapeOwnerBullet *, int>::Element *E = owners.find(p_owner); - ERR_FAIL_COND(!E); + if (!E) return; E->get()--; if (p_permanentlyFromThisBody || 0 >= E->get()) { owners.erase(E); @@ -150,7 +161,7 @@ void PlaneShapeBullet::setup(const Plane &p_plane) { notifyShapeChanged(); } -btCollisionShape *PlaneShapeBullet::create_bt_shape() { +btCollisionShape *PlaneShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { btVector3 btPlaneNormal; G_TO_B(plane.normal, btPlaneNormal); return prepare(PlaneShapeBullet::create_shape_plane(btPlaneNormal, plane.d)); @@ -178,8 +189,8 @@ void SphereShapeBullet::setup(real_t p_radius) { notifyShapeChanged(); } -btCollisionShape *SphereShapeBullet::create_bt_shape() { - return prepare(ShapeBullet::create_shape_sphere(radius)); +btCollisionShape *SphereShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { + return prepare(ShapeBullet::create_shape_sphere(radius * p_implicit_scale[0] + p_margin)); } /* Box */ @@ -205,8 +216,8 @@ void BoxShapeBullet::setup(const Vector3 &p_half_extents) { notifyShapeChanged(); } -btCollisionShape *BoxShapeBullet::create_bt_shape() { - return prepare(ShapeBullet::create_shape_box(half_extents)); +btCollisionShape *BoxShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { + return prepare(ShapeBullet::create_shape_box((half_extents * p_implicit_scale) + btVector3(p_margin, p_margin, p_margin))); } /* Capsule */ @@ -238,8 +249,8 @@ void CapsuleShapeBullet::setup(real_t p_height, real_t p_radius) { notifyShapeChanged(); } -btCollisionShape *CapsuleShapeBullet::create_bt_shape() { - return prepare(ShapeBullet::create_shape_capsule(radius, height)); +btCollisionShape *CapsuleShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { + return prepare(ShapeBullet::create_shape_capsule(radius * p_implicit_scale[0] + p_margin, height * p_implicit_scale[1] + p_margin)); } /* Convex polygon */ @@ -271,7 +282,7 @@ PhysicsServer::ShapeType ConvexPolygonShapeBullet::get_type() const { } void ConvexPolygonShapeBullet::setup(const Vector<Vector3> &p_vertices) { - // Make a copy of verticies + // Make a copy of vertices const int n_of_vertices = p_vertices.size(); vertices.resize(n_of_vertices); for (int i = n_of_vertices - 1; 0 <= i; --i) { @@ -280,8 +291,12 @@ void ConvexPolygonShapeBullet::setup(const Vector<Vector3> &p_vertices) { notifyShapeChanged(); } -btCollisionShape *ConvexPolygonShapeBullet::create_bt_shape() { - return prepare(ShapeBullet::create_shape_convex(vertices)); +btCollisionShape *ConvexPolygonShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { + btCollisionShape *cs(ShapeBullet::create_shape_convex(vertices)); + cs->setLocalScaling(p_implicit_scale); + prepare(cs); + cs->setMargin(p_margin); + return cs; } /* Concave polygon */ @@ -349,13 +364,15 @@ void ConcavePolygonShapeBullet::setup(PoolVector<Vector3> p_faces) { notifyShapeChanged(); } -btCollisionShape *ConcavePolygonShapeBullet::create_bt_shape() { +btCollisionShape *ConcavePolygonShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { btCollisionShape *cs = ShapeBullet::create_shape_concave(meshShape); - if (!cs) { + if (!cs) // This is necessary since if 0 faces the creation of concave return NULL cs = ShapeBullet::create_shape_empty(); - } - return prepare(cs); + cs->setLocalScaling(p_implicit_scale); + prepare(cs); + cs->setMargin(p_margin); + return cs; } /* Height map shape */ @@ -407,8 +424,12 @@ void HeightMapShapeBullet::setup(PoolVector<real_t> &p_heights, int p_width, int notifyShapeChanged(); } -btCollisionShape *HeightMapShapeBullet::create_bt_shape() { - return prepare(ShapeBullet::create_shape_height_field(heights, width, depth, cell_size)); +btCollisionShape *HeightMapShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { + btCollisionShape *cs(ShapeBullet::create_shape_height_field(heights, width, depth, cell_size)); + cs->setLocalScaling(p_implicit_scale); + prepare(cs); + cs->setMargin(p_margin); + return cs; } /* Ray shape */ @@ -433,6 +454,6 @@ void RayShapeBullet::setup(real_t p_length) { notifyShapeChanged(); } -btCollisionShape *RayShapeBullet::create_bt_shape() { - return prepare(ShapeBullet::create_shape_ray(length)); +btCollisionShape *RayShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) { + return prepare(ShapeBullet::create_shape_ray(length * p_implicit_scale[1] + p_margin)); } diff --git a/modules/bullet/shape_bullet.h b/modules/bullet/shape_bullet.h index fa12e95efc..4a03c0f014 100644 --- a/modules/bullet/shape_bullet.h +++ b/modules/bullet/shape_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* shape_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,14 +31,19 @@ #ifndef SHAPE_BULLET_H #define SHAPE_BULLET_H -#include "LinearMath/btAlignedObjectArray.h" -#include "LinearMath/btScalar.h" -#include "LinearMath/btVector3.h" #include "core/variant.h" #include "geometry.h" #include "rid_bullet.h" #include "servers/physics_server.h" +#include <LinearMath/btAlignedObjectArray.h> +#include <LinearMath/btScalar.h> +#include <LinearMath/btVector3.h> + +/** + @author AndreaCatania +*/ + class ShapeBullet; class btCollisionShape; class ShapeOwnerBullet; @@ -58,7 +62,8 @@ public: ShapeBullet(); virtual ~ShapeBullet(); - virtual btCollisionShape *create_bt_shape() = 0; + btCollisionShape *create_bt_shape(const Vector3 &p_implicit_scale, real_t p_margin = 0); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin = 0) = 0; void add_owner(ShapeOwnerBullet *p_owner); void remove_owner(ShapeOwnerBullet *p_owner, bool p_permanentlyFromThisBody = false); @@ -94,7 +99,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(const Plane &p_plane); @@ -111,7 +116,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(real_t p_radius); @@ -128,7 +133,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(const Vector3 &p_half_extents); @@ -147,7 +152,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(real_t p_height, real_t p_radius); @@ -164,7 +169,7 @@ public: void get_vertices(Vector<Vector3> &out_vertices); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(const Vector<Vector3> &p_vertices); @@ -182,7 +187,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(PoolVector<Vector3> p_faces); @@ -201,7 +206,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(PoolVector<real_t> &p_heights, int p_width, int p_depth, real_t p_cell_size); @@ -217,7 +222,7 @@ public: virtual void set_data(const Variant &p_data); virtual Variant get_data() const; virtual PhysicsServer::ShapeType get_type() const; - virtual btCollisionShape *create_bt_shape(); + virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0); private: void setup(real_t p_length); diff --git a/modules/bullet/shape_owner_bullet.cpp b/modules/bullet/shape_owner_bullet.cpp index 7b753e1c48..d6ba5d81bc 100644 --- a/modules/bullet/shape_owner_bullet.cpp +++ b/modules/bullet/shape_owner_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* shape_owner_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,3 +29,7 @@ /*************************************************************************/ #include "shape_owner_bullet.h" + +/** + @author AndreaCatania +*/ diff --git a/modules/bullet/shape_owner_bullet.h b/modules/bullet/shape_owner_bullet.h index 4e81b4be6e..29d42d12f2 100644 --- a/modules/bullet/shape_owner_bullet.h +++ b/modules/bullet/shape_owner_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* shape_owner_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,11 +33,15 @@ #include "rid_bullet.h" +/** + @author AndreaCatania +*/ + class ShapeBullet; class btCollisionShape; class CollisionObjectBullet; -/// Each clas that want to use Shapes must inherit this class +/// Each class that want to use Shapes must inherit this class /// E.G. BodyShape is a child of this class ShapeOwnerBullet { public: diff --git a/modules/bullet/slider_joint_bullet.cpp b/modules/bullet/slider_joint_bullet.cpp index 09cbd5032c..9e1cd23989 100644 --- a/modules/bullet/slider_joint_bullet.cpp +++ b/modules/bullet/slider_joint_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* slider_joint_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,11 +29,17 @@ /*************************************************************************/ #include "slider_joint_bullet.h" -#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h" + #include "bullet_types_converter.h" #include "bullet_utilities.h" #include "rigid_body_bullet.h" +#include <BulletDynamics/ConstraintSolver/btSliderConstraint.h> + +/** + @author AndreaCatania +*/ + SliderJointBullet::SliderJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB) : JointBullet() { diff --git a/modules/bullet/slider_joint_bullet.h b/modules/bullet/slider_joint_bullet.h index 4b9a70a323..d532906c0d 100644 --- a/modules/bullet/slider_joint_bullet.h +++ b/modules/bullet/slider_joint_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* slider_joint_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -34,6 +33,10 @@ #include "joint_bullet.h" +/** + @author AndreaCatania +*/ + class RigidBodyBullet; class SliderJointBullet : public JointBullet { diff --git a/modules/bullet/soft_body_bullet.cpp b/modules/bullet/soft_body_bullet.cpp index 268967f014..5c20eb73f1 100644 --- a/modules/bullet/soft_body_bullet.cpp +++ b/modules/bullet/soft_body_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* soft_body_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,11 +29,15 @@ /*************************************************************************/ #include "soft_body_bullet.h" + #include "bullet_types_converter.h" #include "bullet_utilities.h" +#include "scene/3d/immediate_geometry.h" #include "space_bullet.h" -#include "scene/3d/immediate_geometry.h" +/** + @author AndreaCatania +*/ SoftBodyBullet::SoftBodyBullet() : CollisionObjectBullet(CollisionObjectBullet::TYPE_SOFT_BODY), diff --git a/modules/bullet/soft_body_bullet.h b/modules/bullet/soft_body_bullet.h index 83597ae7d2..9895643b84 100644 --- a/modules/bullet/soft_body_bullet.h +++ b/modules/bullet/soft_body_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* soft_body_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,14 +31,16 @@ #ifndef SOFT_BODY_BULLET_H #define SOFT_BODY_BULLET_H +#include "collision_object_bullet.h" +#include "scene/resources/material.h" // TODO remove this please + #ifdef None /// This is required to remove the macro None defined by x11 compiler because this word "None" is used internally by Bullet #undef None #define x11_None 0L #endif -#include "BulletSoftBody/btSoftBodyHelpers.h" -#include "collision_object_bullet.h" +#include <BulletSoftBody/btSoftBodyHelpers.h> #ifdef x11_None /// This is required to re add the macro None defined by x11 compiler @@ -47,7 +48,9 @@ #define None 0L #endif -#include "scene/resources/material.h" // TODO remove thsi please +/** + @author AndreaCatania +*/ struct SoftShapeData {}; struct TrimeshSoftShapeData : public SoftShapeData { diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp index dc16d8402d..d60d8ba0e2 100644 --- a/modules/bullet/space_bullet.cpp +++ b/modules/bullet/space_bullet.cpp @@ -1,10 +1,9 @@ /*************************************************************************/ /* space_bullet.cpp */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -30,14 +29,7 @@ /*************************************************************************/ #include "space_bullet.h" -#include "BulletCollision/CollisionDispatch/btCollisionObject.h" -#include "BulletCollision/CollisionDispatch/btGhostObject.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h" -#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h" -#include "BulletCollision/NarrowPhaseCollision/btPointCollector.h" -#include "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h" -#include "BulletSoftBody/btSoftRigidDynamicsWorld.h" -#include "btBulletDynamicsCommon.h" + #include "bullet_physics_server.h" #include "bullet_types_converter.h" #include "bullet_utilities.h" @@ -48,8 +40,22 @@ #include "servers/physics_server.h" #include "soft_body_bullet.h" #include "ustring.h" + +#include <BulletCollision/CollisionDispatch/btCollisionObject.h> +#include <BulletCollision/CollisionDispatch/btGhostObject.h> +#include <BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h> +#include <BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h> +#include <BulletCollision/NarrowPhaseCollision/btPointCollector.h> +#include <BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h> +#include <BulletSoftBody/btSoftRigidDynamicsWorld.h> +#include <btBulletDynamicsCommon.h> + #include <assert.h> +/** + @author AndreaCatania +*/ + BulletPhysicsDirectSpaceState::BulletPhysicsDirectSpaceState(SpaceBullet *p_space) : PhysicsDirectSpaceState(), space(p_space) {} @@ -116,7 +122,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape); - btCollisionShape *btShape = shape->create_bt_shape(); + btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale(), p_margin); if (!btShape->isConvex()) { bulletdelete(btShape); ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type())); @@ -124,12 +130,9 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra } btConvexShape *btConvex = static_cast<btConvexShape *>(btShape); - btVector3 scale_with_margin; - G_TO_B(p_xform.basis.get_scale(), scale_with_margin); - btConvex->setLocalScaling(scale_with_margin); - btTransform bt_xform; G_TO_B(p_xform, bt_xform); + UNSCALE_BT_BASIS(bt_xform); btCollisionObject collision_object; collision_object.setCollisionShape(btConvex); @@ -138,7 +141,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra GodotAllContactResultCallback btQuery(&collision_object, p_results, p_result_max, &p_exclude); btQuery.m_collisionFilterGroup = 0; btQuery.m_collisionFilterMask = p_collision_mask; - btQuery.m_closestDistanceThreshold = p_margin; + btQuery.m_closestDistanceThreshold = 0; space->dynamicsWorld->contactTest(&collision_object, btQuery); bulletdelete(btConvex); @@ -149,7 +152,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, float p_margin, float &p_closest_safe, float &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, ShapeRestInfo *r_info) { ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape); - btCollisionShape *btShape = shape->create_bt_shape(); + btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale(), p_margin); if (!btShape->isConvex()) { bulletdelete(btShape); ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type())); @@ -160,12 +163,9 @@ bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transf btVector3 bt_motion; G_TO_B(p_motion, bt_motion); - btVector3 scale_with_margin; - G_TO_B(p_xform.basis.get_scale() + Vector3(p_margin, p_margin, p_margin), scale_with_margin); - bt_convex_shape->setLocalScaling(scale_with_margin); - btTransform bt_xform_from; G_TO_B(p_xform, bt_xform_from); + UNSCALE_BT_BASIS(bt_xform_from); btTransform bt_xform_to(bt_xform_from); bt_xform_to.getOrigin() += bt_motion; @@ -202,7 +202,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform & ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape); - btCollisionShape *btShape = shape->create_bt_shape(); + btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale(), p_margin); if (!btShape->isConvex()) { bulletdelete(btShape); ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type())); @@ -210,12 +210,9 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform & } btConvexShape *btConvex = static_cast<btConvexShape *>(btShape); - btVector3 scale_with_margin; - G_TO_B(p_shape_xform.basis.get_scale(), scale_with_margin); - btConvex->setLocalScaling(scale_with_margin); - btTransform bt_xform; G_TO_B(p_shape_xform, bt_xform); + UNSCALE_BT_BASIS(bt_xform); btCollisionObject collision_object; collision_object.setCollisionShape(btConvex); @@ -224,7 +221,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform & GodotContactPairContactResultCallback btQuery(&collision_object, r_results, p_result_max, &p_exclude); btQuery.m_collisionFilterGroup = 0; btQuery.m_collisionFilterMask = p_collision_mask; - btQuery.m_closestDistanceThreshold = p_margin; + btQuery.m_closestDistanceThreshold = 0; space->dynamicsWorld->contactTest(&collision_object, btQuery); r_result_count = btQuery.m_count; @@ -237,7 +234,7 @@ bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_sh ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape); - btCollisionShape *btShape = shape->create_bt_shape(); + btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale(), p_margin); if (!btShape->isConvex()) { bulletdelete(btShape); ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type())); @@ -245,12 +242,9 @@ bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_sh } btConvexShape *btConvex = static_cast<btConvexShape *>(btShape); - btVector3 scale_with_margin; - G_TO_B(p_shape_xform.basis.get_scale() + Vector3(p_margin, p_margin, p_margin), scale_with_margin); - btConvex->setLocalScaling(scale_with_margin); - btTransform bt_xform; G_TO_B(p_shape_xform, bt_xform); + UNSCALE_BT_BASIS(bt_xform); btCollisionObject collision_object; collision_object.setCollisionShape(btConvex); @@ -259,7 +253,7 @@ bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_sh GodotRestInfoContactResultCallback btQuery(&collision_object, r_info, &p_exclude); btQuery.m_collisionFilterGroup = 0; btQuery.m_collisionFilterMask = p_collision_mask; - btQuery.m_closestDistanceThreshold = p_margin; + btQuery.m_closestDistanceThreshold = 0; space->dynamicsWorld->contactTest(&collision_object, btQuery); bulletdelete(btConvex); @@ -796,7 +790,9 @@ void SpaceBullet::update_gravity() { /// I'm leaving this here just for future tests. /// Debug motion and normal vector drawing #define debug_test_motion 0 -#define PERFORM_INITIAL_UNSTACK 1 +#define PERFORM_INITIAL_UNSTACK 0 +#define RECOVERING_MOVEMENT_SCALE 0.4 +#define RECOVERING_MOVEMENT_CYCLES 4 #if debug_test_motion @@ -820,6 +816,9 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f SceneTree::get_singleton()->get_current_scene()->add_child(motionVec); SceneTree::get_singleton()->get_current_scene()->add_child(normalLine); + motionVec->set_as_toplevel(true); + normalLine->set_as_toplevel(true); + red_mat = Ref<SpatialMaterial>(memnew(SpatialMaterial)); red_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true); red_mat->set_line_width(20.0); @@ -850,27 +849,31 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f // } //} - btVector3 recover_initial_position(0, 0, 0); - btTransform body_safe_position; G_TO_B(p_from, body_safe_position); + UNSCALE_BT_BASIS(body_safe_position); - { /// Phase one - multi shapes depenetration using margin #if PERFORM_INITIAL_UNSTACK - if (recover_from_penetration(p_body, body_safe_position, recover_initial_position)) { - - // Add recover position to "From" and "To" transforms - body_safe_position.getOrigin() += recover_initial_position; + btVector3 recover_initial_position(0, 0, 0); + { /// Phase one - multi shapes depenetration using margin + for (int t(RECOVERING_MOVEMENT_CYCLES); 0 < t; --t) { + if (!recover_from_penetration(p_body, body_safe_position, RECOVERING_MOVEMENT_SCALE, recover_initial_position)) { + break; + } } -#endif + + // Add recover movement in order to make it safe + body_safe_position.getOrigin() += recover_initial_position; } +#endif - btVector3 recovered_motion; - G_TO_B(p_motion, recovered_motion); - const int shape_count(p_body->get_shape_count()); + btVector3 motion; + G_TO_B(p_motion, motion); { /// phase two - sweep test, from a secure position without margin + const int shape_count(p_body->get_shape_count()); + #if debug_test_motion Vector3 sup_line; B_TO_G(body_safe_position.getOrigin(), sup_line); @@ -892,14 +895,10 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f } btConvexShape *convex_shape_test(static_cast<btConvexShape *>(p_body->get_bt_shape(shIndex))); - btTransform shape_world_from; - G_TO_B(p_body->get_shape_transform(shIndex), shape_world_from); - - // Add local shape transform - shape_world_from = body_safe_position * shape_world_from; + btTransform shape_world_from = body_safe_position * p_body->get_kinematic_utilities()->shapes[shIndex].transform; btTransform shape_world_to(shape_world_from); - shape_world_to.getOrigin() += recovered_motion; + shape_world_to.getOrigin() += motion; GodotKinClosestConvexResultCallback btResult(shape_world_from.getOrigin(), shape_world_to.getOrigin(), p_body, IGNORE_AREAS_TRUE); btResult.m_collisionFilterGroup = p_body->get_collision_layer(); @@ -910,64 +909,81 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f if (btResult.hasHit()) { /// Since for each sweep test I fix the motion of new shapes in base the recover result, /// if another shape will hit something it means that has a deepest penetration respect the previous shape - recovered_motion *= btResult.m_closestHitFraction; + motion *= btResult.m_closestHitFraction; } } + + body_safe_position.getOrigin() += motion; } - bool hasPenetration = false; + bool has_penetration = false; { /// Phase three - Recover + contact test with margin + btVector3 delta_recover_movement(0, 0, 0); RecoverResult r_recover_result; + bool l_has_penetration; + real_t l_penetration_distance = 1e20; - hasPenetration = recover_from_penetration(p_body, body_safe_position, recovered_motion, &r_recover_result); - - if (r_result) { - - B_TO_G(recovered_motion + recover_initial_position, r_result->motion); + for (int t(RECOVERING_MOVEMENT_CYCLES); 0 < t; --t) { + l_has_penetration = recover_from_penetration(p_body, body_safe_position, RECOVERING_MOVEMENT_SCALE, delta_recover_movement, &r_recover_result); - if (hasPenetration) { - const btRigidBody *btRigid = static_cast<const btRigidBody *>(r_recover_result.other_collision_object); - CollisionObjectBullet *collisionObject = static_cast<CollisionObjectBullet *>(btRigid->getUserPointer()); - - r_result->remainder = p_motion - r_result->motion; // is the remaining movements - B_TO_G(r_recover_result.pointWorld, r_result->collision_point); - B_TO_G(r_recover_result.pointNormalWorld, r_result->collision_normal); - B_TO_G(btRigid->getVelocityInLocalPoint(r_recover_result.pointWorld - btRigid->getWorldTransform().getOrigin()), r_result->collider_velocity); // It calculates velocity at point and assign it using special function Bullet_to_Godot - r_result->collider = collisionObject->get_self(); - r_result->collider_id = collisionObject->get_instance_id(); - r_result->collider_shape = r_recover_result.other_compound_shape_index; - r_result->collision_local_shape = r_recover_result.local_shape_most_recovered; + if (r_result) { +#if PERFORM_INITIAL_UNSTACK + B_TO_G(motion + delta_recover_movement + recover_initial_position, r_result->motion); +#else + B_TO_G(motion + delta_recover_movement, r_result->motion); +#endif + if (l_has_penetration) { + has_penetration = true; + if (l_penetration_distance <= r_recover_result.penetration_distance) { + continue; + } - //{ /// Add manifold point to manage collisions - // btPersistentManifold* manifold = dynamicsWorld->getDispatcher()->getNewManifold(p_body->getBtBody(), btRigid); - // btManifoldPoint manifoldPoint(result_callabck.m_pointWorld, result_callabck.m_pointWorld, result_callabck.m_pointNormalWorld, result_callabck.m_penetration_distance); - // manifoldPoint.m_index0 = r_result->collision_local_shape; - // manifoldPoint.m_index1 = r_result->collider_shape; - // manifold->addManifoldPoint(manifoldPoint); - // p_body->get_kinematic_utilities()->m_generatedManifold.push_back(manifold); - //} + l_penetration_distance = r_recover_result.penetration_distance; + + const btRigidBody *btRigid = static_cast<const btRigidBody *>(r_recover_result.other_collision_object); + CollisionObjectBullet *collisionObject = static_cast<CollisionObjectBullet *>(btRigid->getUserPointer()); + + B_TO_G(motion, r_result->remainder); // is the remaining movements + r_result->remainder = p_motion - r_result->remainder; + B_TO_G(r_recover_result.pointWorld, r_result->collision_point); + B_TO_G(r_recover_result.normal, r_result->collision_normal); + B_TO_G(btRigid->getVelocityInLocalPoint(r_recover_result.pointWorld - btRigid->getWorldTransform().getOrigin()), r_result->collider_velocity); // It calculates velocity at point and assign it using special function Bullet_to_Godot + r_result->collider = collisionObject->get_self(); + r_result->collider_id = collisionObject->get_instance_id(); + r_result->collider_shape = r_recover_result.other_compound_shape_index; + r_result->collision_local_shape = r_recover_result.local_shape_most_recovered; + + //{ /// Add manifold point to manage collisions + // btPersistentManifold* manifold = dynamicsWorld->getDispatcher()->getNewManifold(p_body->getBtBody(), btRigid); + // btManifoldPoint manifoldPoint(result_callabck.m_pointWorld, result_callabck.m_pointWorld, result_callabck.m_pointNormalWorld, result_callabck.m_penetration_distance); + // manifoldPoint.m_index0 = r_result->collision_local_shape; + // manifoldPoint.m_index1 = r_result->collider_shape; + // manifold->addManifoldPoint(manifoldPoint); + // p_body->get_kinematic_utilities()->m_generatedManifold.push_back(manifold); + //} #if debug_test_motion - Vector3 sup_line2; - B_TO_G(recovered_motion, sup_line2); - //Vector3 sup_pos; - //B_TO_G( pt.getPositionWorldOnB(), sup_pos); - normalLine->clear(); - normalLine->begin(Mesh::PRIMITIVE_LINES, NULL); - normalLine->add_vertex(r_result->collision_point); - normalLine->add_vertex(r_result->collision_point + r_result->collision_normal * 10); - normalLine->end(); + Vector3 sup_line2; + B_TO_G(motion, sup_line2); + normalLine->clear(); + normalLine->begin(Mesh::PRIMITIVE_LINES, NULL); + normalLine->add_vertex(r_result->collision_point); + normalLine->add_vertex(r_result->collision_point + r_result->collision_normal * 10); + normalLine->end(); #endif - + } else { + r_result->remainder = Vector3(); + } } else { - r_result->remainder = Vector3(); + if (!l_has_penetration) + break; } } } - return hasPenetration; + return has_penetration; } struct RecoverPenetrationBroadPhaseCallback : public btBroadphaseAabbCallback { @@ -1004,7 +1020,7 @@ public: } }; -bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_body_position, btVector3 &r_recover_position, RecoverResult *r_recover_result) { +bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_body_position, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result) { RecoverPenetrationBroadPhaseCallback recover_broad_result(p_body->get_bt_collision_object(), p_body->get_collision_layer(), p_body->get_collision_mask()); @@ -1028,7 +1044,7 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran body_shape_position = p_body_position * kin_shape.transform; body_shape_position_recovered = body_shape_position; - body_shape_position_recovered.getOrigin() += r_recover_position; + body_shape_position_recovered.getOrigin() += r_delta_recover_movement; kin_shape.shape->getAabb(body_shape_position_recovered, minAabb, maxAabb); dynamicsWorld->getBroadphase()->aabbTest(minAabb, maxAabb, recover_broad_result); @@ -1045,24 +1061,24 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran for (int x = cs->getNumChildShapes() - 1; 0 <= x; --x) { if (cs->getChildShape(x)->isConvex()) { - if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(cs->getChildShape(x)), otherObject, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), r_recover_position, r_recover_result)) { + if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(cs->getChildShape(x)), otherObject, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) { penetration = true; } } else { - if (RFP_convex_world_test(kin_shape.shape, cs->getChildShape(x), p_body->get_bt_collision_object(), otherObject, kinIndex, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), r_recover_position, r_recover_result)) { + if (RFP_convex_world_test(kin_shape.shape, cs->getChildShape(x), p_body->get_bt_collision_object(), otherObject, kinIndex, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) { penetration = true; } } } } else if (otherObject->getCollisionShape()->isConvex()) { /// Execute GJK test against object shape - if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(otherObject->getCollisionShape()), otherObject, 0, body_shape_position, otherObject->getWorldTransform(), r_recover_position, r_recover_result)) { + if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(otherObject->getCollisionShape()), otherObject, 0, body_shape_position, otherObject->getWorldTransform(), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) { penetration = true; } } else { - if (RFP_convex_world_test(kin_shape.shape, otherObject->getCollisionShape(), p_body->get_bt_collision_object(), otherObject, kinIndex, 0, body_shape_position, otherObject->getWorldTransform(), r_recover_position, r_recover_result)) { + if (RFP_convex_world_test(kin_shape.shape, otherObject->getCollisionShape(), p_body->get_bt_collision_object(), otherObject, kinIndex, 0, body_shape_position, otherObject->getWorldTransform(), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) { penetration = true; } @@ -1073,12 +1089,12 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran return penetration; } -bool SpaceBullet::RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result) { +bool SpaceBullet::RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result) { // Initialize GJK input btGjkPairDetector::ClosestPointInput gjk_input; gjk_input.m_transformA = p_transformA; - gjk_input.m_transformA.getOrigin() += r_recover_position; + gjk_input.m_transformA.getOrigin() += r_delta_recover_movement; gjk_input.m_transformB = p_transformB; // Perform GJK test @@ -1087,30 +1103,31 @@ bool SpaceBullet::RFP_convex_convex_test(const btConvexShape *p_shapeA, const bt gjk_pair_detector.getClosestPoints(gjk_input, result, 0); if (0 > result.m_distance) { // Has penetration - r_recover_position += result.m_normalOnBInWorld * (result.m_distance * -1); + r_delta_recover_movement += result.m_normalOnBInWorld * (result.m_distance * -1 * p_recover_movement_scale); if (r_recover_result) { - - r_recover_result->hasPenetration = true; - r_recover_result->other_collision_object = p_objectB; - r_recover_result->other_compound_shape_index = p_shapeId_B; - r_recover_result->penetration_distance = result.m_distance; - r_recover_result->pointNormalWorld = result.m_normalOnBInWorld; - r_recover_result->pointWorld = result.m_pointInWorld; + if (result.m_distance < r_recover_result->penetration_distance) { + r_recover_result->hasPenetration = true; + r_recover_result->other_collision_object = p_objectB; + r_recover_result->other_compound_shape_index = p_shapeId_B; + r_recover_result->penetration_distance = result.m_distance; + r_recover_result->pointWorld = result.m_pointInWorld; + r_recover_result->normal = result.m_normalOnBInWorld; + } } return true; } return false; } -bool SpaceBullet::RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result) { +bool SpaceBullet::RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result) { /// Contact test - btTransform p_recovered_transformA(p_transformA); - p_recovered_transformA.getOrigin() += r_recover_position; + btTransform tA(p_transformA); + tA.getOrigin() += r_delta_recover_movement; - btCollisionObjectWrapper obA(NULL, p_shapeA, p_objectA, p_recovered_transformA, -1, p_shapeId_A); + btCollisionObjectWrapper obA(NULL, p_shapeA, p_objectA, tA, -1, p_shapeId_A); btCollisionObjectWrapper obB(NULL, p_shapeB, p_objectB, p_transformB, -1, p_shapeId_B); btCollisionAlgorithm *algorithm = dispatcher->findAlgorithm(&obA, &obB, NULL, BT_CLOSEST_POINT_ALGORITHMS); @@ -1123,16 +1140,17 @@ bool SpaceBullet::RFP_convex_world_test(const btConvexShape *p_shapeA, const btC dispatcher->freeCollisionAlgorithm(algorithm); if (contactPointResult.hasHit()) { - r_recover_position += contactPointResult.m_pointNormalWorld * (contactPointResult.m_penetration_distance * -1); + r_delta_recover_movement += contactPointResult.m_pointNormalWorld * (contactPointResult.m_penetration_distance * -1 * p_recover_movement_scale); if (r_recover_result) { - - r_recover_result->hasPenetration = true; - r_recover_result->other_collision_object = p_objectB; - r_recover_result->other_compound_shape_index = p_shapeId_B; - r_recover_result->penetration_distance = contactPointResult.m_penetration_distance; - r_recover_result->pointNormalWorld = contactPointResult.m_pointNormalWorld; - r_recover_result->pointWorld = contactPointResult.m_pointWorld; + if (contactPointResult.m_penetration_distance < r_recover_result->penetration_distance) { + r_recover_result->hasPenetration = true; + r_recover_result->other_collision_object = p_objectB; + r_recover_result->other_compound_shape_index = p_shapeId_B; + r_recover_result->penetration_distance = contactPointResult.m_penetration_distance; + r_recover_result->pointWorld = contactPointResult.m_pointWorld; + r_recover_result->normal = contactPointResult.m_pointNormalWorld; + } } return true; } diff --git a/modules/bullet/space_bullet.h b/modules/bullet/space_bullet.h index 6e71a25773..0aeb407dcc 100644 --- a/modules/bullet/space_bullet.h +++ b/modules/bullet/space_bullet.h @@ -1,10 +1,9 @@ /*************************************************************************/ /* space_bullet.h */ -/* Author: AndreaCatania */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -32,17 +31,22 @@ #ifndef SPACE_BULLET_H #define SPACE_BULLET_H -#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" -#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h" -#include "LinearMath/btScalar.h" -#include "LinearMath/btTransform.h" -#include "LinearMath/btVector3.h" #include "core/variant.h" #include "core/vector.h" #include "godot_result_callbacks.h" #include "rid_bullet.h" #include "servers/physics_server.h" +#include <BulletCollision/BroadphaseCollision/btBroadphaseProxy.h> +#include <BulletCollision/BroadphaseCollision/btOverlappingPairCache.h> +#include <LinearMath/btScalar.h> +#include <LinearMath/btTransform.h> +#include <LinearMath/btVector3.h> + +/** + @author AndreaCatania +*/ + class AreaBullet; class btBroadphaseInterface; class btCollisionDispatcher; @@ -178,23 +182,29 @@ private: struct RecoverResult { bool hasPenetration; - btVector3 pointNormalWorld; + btVector3 normal; btVector3 pointWorld; - btScalar penetration_distance; // Negative is penetration + btScalar penetration_distance; // Negative mean penetration int other_compound_shape_index; const btCollisionObject *other_collision_object; int local_shape_most_recovered; RecoverResult() : - hasPenetration(false) {} + hasPenetration(false), + normal(0, 0, 0), + pointWorld(0, 0, 0), + penetration_distance(1e20), + other_compound_shape_index(0), + other_collision_object(NULL), + local_shape_most_recovered(0) {} }; - bool recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_from, btVector3 &r_recover_position, RecoverResult *r_recover_result = NULL); + bool recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_from, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result = NULL); /// This is an API that recover a kinematic object from penetration /// This allow only Convex Convex test and it always use GJK algorithm, With this API we don't benefit of Bullet special accelerated functions - bool RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result); + bool RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result = NULL); /// This is an API that recover a kinematic object from penetration /// Using this we leave Bullet to select the best algorithm, For example GJK in case we have Convex Convex, or a Bullet accelerated algorithm - bool RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result); + bool RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result = NULL); }; #endif diff --git a/modules/dds/register_types.cpp b/modules/dds/register_types.cpp index 76244c76a4..d6351fb6fe 100644 --- a/modules/dds/register_types.cpp +++ b/modules/dds/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "texture_loader_dds.h" diff --git a/modules/dds/register_types.h b/modules/dds/register_types.h index 74db58937e..c7f7839c24 100644 --- a/modules/dds/register_types.h +++ b/modules/dds/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_dds_types(); void unregister_dds_types(); diff --git a/modules/dds/texture_loader_dds.cpp b/modules/dds/texture_loader_dds.cpp index d01af20544..9424080b6d 100644 --- a/modules/dds/texture_loader_dds.cpp +++ b/modules/dds/texture_loader_dds.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_loader_dds.h" #include "os/file_access.h" diff --git a/modules/dds/texture_loader_dds.h b/modules/dds/texture_loader_dds.h index 0adae2fb2a..14d99ff506 100644 --- a/modules/dds/texture_loader_dds.h +++ b/modules/dds/texture_loader_dds.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_LOADER_DDS_H #define TEXTURE_LOADER_DDS_H diff --git a/modules/enet/SCsub b/modules/enet/SCsub index 4790c5099f..7caeafa1d6 100644 --- a/modules/enet/SCsub +++ b/modules/enet/SCsub @@ -3,10 +3,10 @@ Import('env') Import('env_modules') -# Thirdparty source files - env_enet = env_modules.Clone() +# Thirdparty source files + if env['builtin_enet']: thirdparty_dir = "#thirdparty/enet/" thirdparty_sources = [ diff --git a/modules/enet/doc_classes/NetworkedMultiplayerENet.xml b/modules/enet/doc_classes/NetworkedMultiplayerENet.xml index 25d17542ea..23ee327cc5 100644 --- a/modules/enet/doc_classes/NetworkedMultiplayerENet.xml +++ b/modules/enet/doc_classes/NetworkedMultiplayerENet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NetworkedMultiplayerENet" inherits="NetworkedMultiplayerPeer" category="Core" version="3.0-beta"> +<class name="NetworkedMultiplayerENet" inherits="NetworkedMultiplayerPeer" category="Core" version="3.0-stable"> <brief_description> PacketPeer implementation using the ENet library. </brief_description> @@ -47,12 +47,6 @@ Create server that listens to connections via [code]port[/code]. </description> </method> - <method name="get_compression_mode" qualifiers="const"> - <return type="int" enum="NetworkedMultiplayerENet.CompressionMode"> - </return> - <description> - </description> - </method> <method name="set_bind_ip"> <return type="void"> </return> @@ -61,15 +55,11 @@ <description> </description> </method> - <method name="set_compression_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="NetworkedMultiplayerENet.CompressionMode"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="compression_mode" type="int" setter="set_compression_mode" getter="get_compression_mode" enum="NetworkedMultiplayerENet.CompressionMode"> + </member> + </members> <constants> <constant name="COMPRESS_NONE" value="0" enum="CompressionMode"> </constant> diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp index 2b5dd67938..f3f4acd768 100644 --- a/modules/enet/networked_multiplayer_enet.cpp +++ b/modules/enet/networked_multiplayer_enet.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "networked_multiplayer_enet.h" #include "io/marshalls.h" #include "os/os.h" @@ -35,6 +36,10 @@ void NetworkedMultiplayerENet::set_transfer_mode(TransferMode p_mode) { transfer_mode = p_mode; } +NetworkedMultiplayerPeer::TransferMode NetworkedMultiplayerENet::get_transfer_mode() const { + + return transfer_mode; +} void NetworkedMultiplayerENet::set_target_peer(int p_peer) { @@ -658,6 +663,8 @@ void NetworkedMultiplayerENet::_bind_methods() { ClassDB::bind_method(D_METHOD("get_compression_mode"), &NetworkedMultiplayerENet::get_compression_mode); ClassDB::bind_method(D_METHOD("set_bind_ip", "ip"), &NetworkedMultiplayerENet::set_bind_ip); + ADD_PROPERTY(PropertyInfo(Variant::INT, "compression_mode", PROPERTY_HINT_ENUM, "None,Range Coder,FastLZ,ZLib,ZStd"), "set_compression_mode", "get_compression_mode"); + BIND_ENUM_CONSTANT(COMPRESS_NONE); BIND_ENUM_CONSTANT(COMPRESS_RANGE_CODER); BIND_ENUM_CONSTANT(COMPRESS_FASTLZ); diff --git a/modules/enet/networked_multiplayer_enet.h b/modules/enet/networked_multiplayer_enet.h index d6644aed2d..440e9b5400 100644 --- a/modules/enet/networked_multiplayer_enet.h +++ b/modules/enet/networked_multiplayer_enet.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NETWORKED_MULTIPLAYER_ENET_H #define NETWORKED_MULTIPLAYER_ENET_H @@ -109,6 +110,7 @@ protected: public: virtual void set_transfer_mode(TransferMode p_mode); + virtual TransferMode get_transfer_mode() const; virtual void set_target_peer(int p_peer); virtual int get_packet_peer() const; diff --git a/modules/enet/register_types.cpp b/modules/enet/register_types.cpp index 94d0eaa43f..cabaeb692a 100644 --- a/modules/enet/register_types.cpp +++ b/modules/enet/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "error_macros.h" #include "networked_multiplayer_enet.h" diff --git a/modules/enet/register_types.h b/modules/enet/register_types.h index 03cc2c8525..bcf0893ae4 100644 --- a/modules/enet/register_types.h +++ b/modules/enet/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_enet_types(); void unregister_enet_types(); diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp index 2224ecc356..8a674bc8c1 100644 --- a/modules/etc/image_etc.cpp +++ b/modules/etc/image_etc.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_etc.h" #include "Etc.h" #include "EtcFilter.h" @@ -117,7 +118,6 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f } uint32_t imgw = p_img->get_width(), imgh = p_img->get_height(); - ERR_FAIL_COND(next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh); Image::Format etc_format = force_etc1_format ? Image::FORMAT_ETC : _get_etc2_mode(detected_channels); @@ -126,6 +126,25 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f if (img->get_format() != Image::FORMAT_RGBA8) img->convert(Image::FORMAT_RGBA8); //still uses RGBA to convert + if (img->has_mipmaps()) { + if (next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh) { + img->resize_to_po2(); + imgw = img->get_width(); + imgh = img->get_height(); + } + } else { + if (imgw % 4 != 0 || imgh % 4 != 0) { + if (imgw % 4) { + imgw += 4 - imgw % 4; + } + if (imgh % 4) { + imgh += 4 - imgh % 4; + } + + img->resize(imgw, imgh); + } + } + PoolVector<uint8_t>::Read r = img->get_data().read(); int target_size = Image::get_image_data_size(imgw, imgh, etc_format, p_img->has_mipmaps() ? -1 : 0); diff --git a/modules/etc/image_etc.h b/modules/etc/image_etc.h index fb32a120b1..371c38176f 100644 --- a/modules/etc/image_etc.h +++ b/modules/etc/image_etc.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_ETC1_H #define IMAGE_ETC1_H diff --git a/modules/etc/register_types.cpp b/modules/etc/register_types.cpp index 42baf91dfa..1d1f0e1b77 100644 --- a/modules/etc/register_types.cpp +++ b/modules/etc/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_etc.h" diff --git a/modules/etc/register_types.h b/modules/etc/register_types.h index 1f1336dc10..4a8513a687 100644 --- a/modules/etc/register_types.h +++ b/modules/etc/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_etc_types(); void unregister_etc_types(); diff --git a/modules/etc/texture_loader_pkm.cpp b/modules/etc/texture_loader_pkm.cpp index 4f6df04341..ac89259c9b 100644 --- a/modules/etc/texture_loader_pkm.cpp +++ b/modules/etc/texture_loader_pkm.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_loader_pkm.h" #include "os/file_access.h" diff --git a/modules/etc/texture_loader_pkm.h b/modules/etc/texture_loader_pkm.h index 1e8833b547..3c6d9180bd 100644 --- a/modules/etc/texture_loader_pkm.h +++ b/modules/etc/texture_loader_pkm.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_LOADER_PKM_H #define TEXTURE_LOADER_PKM_H diff --git a/modules/freetype/register_types.cpp b/modules/freetype/register_types.cpp index c3fa84417d..bde04b714c 100644 --- a/modules/freetype/register_types.cpp +++ b/modules/freetype/register_types.cpp @@ -27,6 +27,7 @@ /* 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" void register_freetype_types() {} diff --git a/modules/freetype/register_types.h b/modules/freetype/register_types.h index 959d646cd4..0cec0e3951 100644 --- a/modules/freetype/register_types.h +++ b/modules/freetype/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_freetype_types(); void unregister_freetype_types(); diff --git a/modules/gdnative/SCsub b/modules/gdnative/SCsub index 4e73ebfb9d..c92c3f30a2 100644 --- a/modules/gdnative/SCsub +++ b/modules/gdnative/SCsub @@ -245,6 +245,14 @@ if ARGUMENTS.get('gdnative_wrapper', False): gd_wrapper_env = env.Clone() gd_wrapper_env.Append(CPPPATH=['#modules/gdnative/include/']) + if gd_wrapper_env['use_lto']: + if not env.msvc: + gd_wrapper_env.Append(CCFLAGS=['--no-lto']) + gd_wrapper_env.Append(LINKFLAGS=['--no-lto']) + else: + gd_wrapper_env.Append(CCFLAGS=['/GL-']) + gd_wrapper_env.Append(LINKFLAGS=['/LTCG:OFF']) + if not env.msvc: gd_wrapper_env.Append(CCFLAGS=['-fPIC']) diff --git a/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml b/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml index e4ffa76d36..bceb4f1f4c 100644 --- a/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml +++ b/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ARVRInterfaceGDNative" inherits="ARVRInterface" category="Core" version="3.0-beta"> +<class name="ARVRInterfaceGDNative" inherits="ARVRInterface" category="Core" version="3.0-stable"> <brief_description> GDNative wrapper for an ARVR interface </brief_description> diff --git a/modules/gdnative/doc_classes/GDNative.xml b/modules/gdnative/doc_classes/GDNative.xml index 83953cef49..7e4d956604 100644 --- a/modules/gdnative/doc_classes/GDNative.xml +++ b/modules/gdnative/doc_classes/GDNative.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GDNative" inherits="Reference" category="Core" version="3.0-beta"> +<class name="GDNative" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/gdnative/doc_classes/GDNativeLibrary.xml b/modules/gdnative/doc_classes/GDNativeLibrary.xml index 647d27929f..a6874c9ae8 100644 --- a/modules/gdnative/doc_classes/GDNativeLibrary.xml +++ b/modules/gdnative/doc_classes/GDNativeLibrary.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GDNativeLibrary" inherits="Resource" category="Core" version="3.0-beta"> +<class name="GDNativeLibrary" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -31,6 +31,8 @@ <members> <member name="load_once" type="bool" setter="set_load_once" getter="should_load_once"> </member> + <member name="reloadable" type="bool" setter="set_reloadable" getter="is_reloadable"> + </member> <member name="singleton" type="bool" setter="set_singleton" getter="is_singleton"> </member> <member name="symbol_prefix" type="String" setter="set_symbol_prefix" getter="get_symbol_prefix"> diff --git a/modules/gdnative/doc_classes/NativeScript.xml b/modules/gdnative/doc_classes/NativeScript.xml index 3f6025d02f..f713e4112e 100644 --- a/modules/gdnative/doc_classes/NativeScript.xml +++ b/modules/gdnative/doc_classes/NativeScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NativeScript" inherits="Script" category="Core" version="3.0-beta"> +<class name="NativeScript" inherits="Script" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/gdnative/doc_classes/PluginScript.xml b/modules/gdnative/doc_classes/PluginScript.xml index 1a2141247a..fbdd8f09e6 100644 --- a/modules/gdnative/doc_classes/PluginScript.xml +++ b/modules/gdnative/doc_classes/PluginScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PluginScript" inherits="Script" category="Core" version="3.0-beta"> +<class name="PluginScript" inherits="Script" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp index a6337c2f6a..42c3028f2c 100644 --- a/modules/gdnative/gdnative.cpp +++ b/modules/gdnative/gdnative.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative.h" #include "global_constants.h" @@ -37,9 +38,12 @@ #include "scene/main/scene_tree.h" -const String init_symbol = "gdnative_init"; -const String terminate_symbol = "gdnative_terminate"; -const String default_symbol_prefix = "godot_"; +static const String init_symbol = "gdnative_init"; +static const String terminate_symbol = "gdnative_terminate"; +static const String default_symbol_prefix = "godot_"; +static const bool default_singleton = false; +static const bool default_load_once = true; +static const bool default_reloadable = true; // Defined in gdnative_api_struct.gen.cpp extern const godot_gdnative_core_api_struct api_struct; @@ -50,6 +54,9 @@ GDNativeLibrary::GDNativeLibrary() { config_file.instance(); symbol_prefix = default_symbol_prefix; + load_once = default_load_once; + singleton = default_singleton; + reloadable = default_reloadable; if (GDNativeLibrary::loaded_libraries == NULL) { GDNativeLibrary::loaded_libraries = memnew((Map<String, Vector<Ref<GDNative> > >)); @@ -68,14 +75,17 @@ void GDNativeLibrary::_bind_methods() { ClassDB::bind_method(D_METHOD("should_load_once"), &GDNativeLibrary::should_load_once); ClassDB::bind_method(D_METHOD("is_singleton"), &GDNativeLibrary::is_singleton); ClassDB::bind_method(D_METHOD("get_symbol_prefix"), &GDNativeLibrary::get_symbol_prefix); + ClassDB::bind_method(D_METHOD("is_reloadable"), &GDNativeLibrary::is_reloadable); ClassDB::bind_method(D_METHOD("set_load_once", "load_once"), &GDNativeLibrary::set_load_once); ClassDB::bind_method(D_METHOD("set_singleton", "singleton"), &GDNativeLibrary::set_singleton); ClassDB::bind_method(D_METHOD("set_symbol_prefix", "symbol_prefix"), &GDNativeLibrary::set_symbol_prefix); + ClassDB::bind_method(D_METHOD("set_reloadable", "reloadable"), &GDNativeLibrary::set_reloadable); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "load_once"), "set_load_once", "should_load_once"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "singleton"), "set_singleton", "is_singleton"); ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "symbol_prefix"), "set_symbol_prefix", "get_symbol_prefix"); + ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "reloadable"), "set_reloadable", "is_reloadable"); } GDNative::GDNative() { @@ -130,6 +140,9 @@ bool GDNative::initialize() { // we should pass library name to dlopen(). The library name is flattened // during export. String path = lib_path.get_file(); +#elif defined(UWP_ENABLED) + // On UWP we use a relative path from the app + String path = lib_path.replace("res://", ""); #else String path = ProjectSettings::get_singleton()->globalize_path(lib_path); #endif @@ -168,13 +181,23 @@ bool GDNative::initialize() { godot_gdnative_init_fn library_init_fpointer; library_init_fpointer = (godot_gdnative_init_fn)library_init; + static uint64_t core_api_hash = 0; + static uint64_t editor_api_hash = 0; + static uint64_t no_api_hash = 0; + + if (!(core_api_hash || editor_api_hash || no_api_hash)) { + core_api_hash = ClassDB::get_api_hash(ClassDB::API_CORE); + editor_api_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR); + no_api_hash = ClassDB::get_api_hash(ClassDB::API_NONE); + } + godot_gdnative_init_options options; options.api_struct = &api_struct; options.in_editor = Engine::get_singleton()->is_editor_hint(); - options.core_api_hash = ClassDB::get_api_hash(ClassDB::API_CORE); - options.editor_api_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR); - options.no_api_hash = ClassDB::get_api_hash(ClassDB::API_NONE); + options.core_api_hash = core_api_hash; + options.editor_api_hash = editor_api_hash; + options.no_api_hash = no_api_hash; options.report_version_mismatch = &_gdnative_report_version_mismatch; options.report_loading_error = &_gdnative_report_loading_error; options.gd_native_library = (godot_object *)(get_library().ptr()); @@ -314,9 +337,10 @@ RES GDNativeLibraryResourceLoader::load(const String &p_path, const String &p_or *r_error = err; } - lib->set_singleton(config->get_value("general", "singleton", false)); - lib->set_load_once(config->get_value("general", "load_once", true)); + lib->set_singleton(config->get_value("general", "singleton", default_singleton)); + lib->set_load_once(config->get_value("general", "load_once", default_load_once)); lib->set_symbol_prefix(config->get_value("general", "symbol_prefix", default_symbol_prefix)); + lib->set_reloadable(config->get_value("general", "reloadable", default_reloadable)); String entry_lib_path; { @@ -412,6 +436,7 @@ Error GDNativeLibraryResourceSaver::save(const String &p_path, const RES &p_reso config->set_value("general", "singleton", lib->is_singleton()); config->set_value("general", "load_once", lib->should_load_once()); config->set_value("general", "symbol_prefix", lib->get_symbol_prefix()); + config->set_value("general", "reloadable", lib->is_reloadable()); return config->save(p_path); } diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h index 26c19dcf22..3298ea950f 100644 --- a/modules/gdnative/gdnative.h +++ b/modules/gdnative/gdnative.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDNATIVE_H #define GDNATIVE_H @@ -59,6 +60,7 @@ class GDNativeLibrary : public Resource { bool singleton; bool load_once; String symbol_prefix; + bool reloadable; public: GDNativeLibrary(); @@ -86,6 +88,10 @@ public: return symbol_prefix; } + _FORCE_INLINE_ bool is_reloadable() const { + return reloadable; + } + _FORCE_INLINE_ void set_load_once(bool p_load_once) { load_once = p_load_once; } @@ -96,6 +102,10 @@ public: symbol_prefix = p_symbol_prefix; } + _FORCE_INLINE_ void set_reloadable(bool p_reloadable) { + reloadable = p_reloadable; + } + static void _bind_methods(); }; diff --git a/modules/gdnative/gdnative/aabb.cpp b/modules/gdnative/gdnative/aabb.cpp index 706e81a606..0597e1cdd6 100644 --- a/modules/gdnative/gdnative/aabb.cpp +++ b/modules/gdnative/gdnative/aabb.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* aabb.cpp */ +/* aabb.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/aabb.h" #include "core/math/aabb.h" diff --git a/modules/gdnative/gdnative/array.cpp b/modules/gdnative/gdnative/array.cpp index 72020b5361..1fb0ff0500 100644 --- a/modules/gdnative/gdnative/array.cpp +++ b/modules/gdnative/gdnative/array.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/array.h" #include "core/array.h" diff --git a/modules/gdnative/gdnative/basis.cpp b/modules/gdnative/gdnative/basis.cpp index 7b9acc6bd0..372bdf3fb1 100644 --- a/modules/gdnative/gdnative/basis.cpp +++ b/modules/gdnative/gdnative/basis.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/basis.h" #include "core/math/matrix3.h" diff --git a/modules/gdnative/gdnative/color.cpp b/modules/gdnative/gdnative/color.cpp index 4fd4458bfb..4089f4458a 100644 --- a/modules/gdnative/gdnative/color.cpp +++ b/modules/gdnative/gdnative/color.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/color.h" #include "core/color.h" diff --git a/modules/gdnative/gdnative/dictionary.cpp b/modules/gdnative/gdnative/dictionary.cpp index b2ac8e0426..786e614158 100644 --- a/modules/gdnative/gdnative/dictionary.cpp +++ b/modules/gdnative/gdnative/dictionary.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/dictionary.h" #include "core/variant.h" diff --git a/modules/gdnative/gdnative/gdnative.cpp b/modules/gdnative/gdnative/gdnative.cpp index 38fb2ee818..041990e137 100644 --- a/modules/gdnative/gdnative/gdnative.cpp +++ b/modules/gdnative/gdnative/gdnative.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/gdnative.h" #include "class_db.h" diff --git a/modules/gdnative/gdnative/node_path.cpp b/modules/gdnative/gdnative/node_path.cpp index 8c490709c0..f24facaae8 100644 --- a/modules/gdnative/gdnative/node_path.cpp +++ b/modules/gdnative/gdnative/node_path.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/node_path.h" #include "core/node_path.h" diff --git a/modules/gdnative/gdnative/plane.cpp b/modules/gdnative/gdnative/plane.cpp index de272d6f08..be821edcc3 100644 --- a/modules/gdnative/gdnative/plane.cpp +++ b/modules/gdnative/gdnative/plane.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/plane.h" #include "core/math/plane.h" diff --git a/modules/gdnative/gdnative/pool_arrays.cpp b/modules/gdnative/gdnative/pool_arrays.cpp index dc24bf4d15..6688be1a0d 100644 --- a/modules/gdnative/gdnative/pool_arrays.cpp +++ b/modules/gdnative/gdnative/pool_arrays.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/pool_arrays.h" #include "array.h" @@ -699,6 +700,10 @@ void GDAPI godot_pool_color_array_destroy(godot_pool_color_array *p_self) { // read accessor functions // +godot_pool_byte_array_read_access GDAPI *godot_pool_byte_array_read_access_copy(const godot_pool_byte_array_read_access *p_other) { + PoolVector<uint8_t>::Read *other = (PoolVector<uint8_t>::Read *)p_other; + return (godot_pool_byte_array_read_access *)memnew(PoolVector<uint8_t>::Read(*other)); +} const uint8_t GDAPI *godot_pool_byte_array_read_access_ptr(const godot_pool_byte_array_read_access *p_read) { const PoolVector<uint8_t>::Read *read = (const PoolVector<uint8_t>::Read *)p_read; return read->ptr(); @@ -712,6 +717,10 @@ void GDAPI godot_pool_byte_array_read_access_destroy(godot_pool_byte_array_read_ memdelete((PoolVector<uint8_t>::Read *)p_read); } +godot_pool_int_array_read_access GDAPI *godot_pool_int_array_read_access_copy(const godot_pool_int_array_read_access *p_other) { + PoolVector<godot_int>::Read *other = (PoolVector<godot_int>::Read *)p_other; + return (godot_pool_int_array_read_access *)memnew(PoolVector<godot_int>::Read(*other)); +} const godot_int GDAPI *godot_pool_int_array_read_access_ptr(const godot_pool_int_array_read_access *p_read) { const PoolVector<godot_int>::Read *read = (const PoolVector<godot_int>::Read *)p_read; return read->ptr(); @@ -725,6 +734,10 @@ void GDAPI godot_pool_int_array_read_access_destroy(godot_pool_int_array_read_ac memdelete((PoolVector<godot_int>::Read *)p_read); } +godot_pool_real_array_read_access GDAPI *godot_pool_real_array_read_access_copy(const godot_pool_real_array_read_access *p_other) { + PoolVector<godot_real>::Read *other = (PoolVector<godot_real>::Read *)p_other; + return (godot_pool_real_array_read_access *)memnew(PoolVector<godot_real>::Read(*other)); +} const godot_real GDAPI *godot_pool_real_array_read_access_ptr(const godot_pool_real_array_read_access *p_read) { const PoolVector<godot_real>::Read *read = (const PoolVector<godot_real>::Read *)p_read; return read->ptr(); @@ -738,6 +751,10 @@ void GDAPI godot_pool_real_array_read_access_destroy(godot_pool_real_array_read_ memdelete((PoolVector<godot_real>::Read *)p_read); } +godot_pool_string_array_read_access GDAPI *godot_pool_string_array_read_access_copy(const godot_pool_string_array_read_access *p_other) { + PoolVector<String>::Read *other = (PoolVector<String>::Read *)p_other; + return (godot_pool_string_array_read_access *)memnew(PoolVector<String>::Read(*other)); +} const godot_string GDAPI *godot_pool_string_array_read_access_ptr(const godot_pool_string_array_read_access *p_read) { const PoolVector<String>::Read *read = (const PoolVector<String>::Read *)p_read; return (const godot_string *)read->ptr(); @@ -751,6 +768,10 @@ void GDAPI godot_pool_string_array_read_access_destroy(godot_pool_string_array_r memdelete((PoolVector<String>::Read *)p_read); } +godot_pool_vector2_array_read_access GDAPI *godot_pool_vector2_array_read_access_copy(const godot_pool_vector2_array_read_access *p_other) { + PoolVector<Vector2>::Read *other = (PoolVector<Vector2>::Read *)p_other; + return (godot_pool_vector2_array_read_access *)memnew(PoolVector<Vector2>::Read(*other)); +} const godot_vector2 GDAPI *godot_pool_vector2_array_read_access_ptr(const godot_pool_vector2_array_read_access *p_read) { const PoolVector<Vector2>::Read *read = (const PoolVector<Vector2>::Read *)p_read; return (const godot_vector2 *)read->ptr(); @@ -764,6 +785,10 @@ void GDAPI godot_pool_vector2_array_read_access_destroy(godot_pool_vector2_array memdelete((PoolVector<Vector2>::Read *)p_read); } +godot_pool_vector3_array_read_access GDAPI *godot_pool_vector3_array_read_access_copy(const godot_pool_vector3_array_read_access *p_other) { + PoolVector<Vector3>::Read *other = (PoolVector<Vector3>::Read *)p_other; + return (godot_pool_vector3_array_read_access *)memnew(PoolVector<Vector3>::Read(*other)); +} const godot_vector3 GDAPI *godot_pool_vector3_array_read_access_ptr(const godot_pool_vector3_array_read_access *p_read) { const PoolVector<Vector3>::Read *read = (const PoolVector<Vector3>::Read *)p_read; return (const godot_vector3 *)read->ptr(); @@ -777,6 +802,10 @@ void GDAPI godot_pool_vector3_array_read_access_destroy(godot_pool_vector3_array memdelete((PoolVector<Vector2>::Read *)p_read); } +godot_pool_color_array_read_access GDAPI *godot_pool_color_array_read_access_copy(const godot_pool_color_array_read_access *p_other) { + PoolVector<Color>::Read *other = (PoolVector<Color>::Read *)p_other; + return (godot_pool_color_array_read_access *)memnew(PoolVector<Color>::Read(*other)); +} const godot_color GDAPI *godot_pool_color_array_read_access_ptr(const godot_pool_color_array_read_access *p_read) { const PoolVector<Color>::Read *read = (const PoolVector<Color>::Read *)p_read; return (const godot_color *)read->ptr(); @@ -794,6 +823,10 @@ void GDAPI godot_pool_color_array_read_access_destroy(godot_pool_color_array_rea // write accessor functions // +godot_pool_byte_array_write_access GDAPI *godot_pool_byte_array_write_access_copy(const godot_pool_byte_array_write_access *p_other) { + PoolVector<uint8_t>::Write *other = (PoolVector<uint8_t>::Write *)p_other; + return (godot_pool_byte_array_write_access *)memnew(PoolVector<uint8_t>::Write(*other)); +} uint8_t GDAPI *godot_pool_byte_array_write_access_ptr(const godot_pool_byte_array_write_access *p_write) { PoolVector<uint8_t>::Write *write = (PoolVector<uint8_t>::Write *)p_write; return write->ptr(); @@ -807,6 +840,10 @@ void GDAPI godot_pool_byte_array_write_access_destroy(godot_pool_byte_array_writ memdelete((PoolVector<uint8_t>::Write *)p_write); } +godot_pool_int_array_write_access GDAPI *godot_pool_int_array_write_access_copy(const godot_pool_int_array_write_access *p_other) { + PoolVector<godot_int>::Write *other = (PoolVector<godot_int>::Write *)p_other; + return (godot_pool_int_array_write_access *)memnew(PoolVector<godot_int>::Write(*other)); +} godot_int GDAPI *godot_pool_int_array_write_access_ptr(const godot_pool_int_array_write_access *p_write) { PoolVector<godot_int>::Write *write = (PoolVector<godot_int>::Write *)p_write; return write->ptr(); @@ -820,6 +857,10 @@ void GDAPI godot_pool_int_array_write_access_destroy(godot_pool_int_array_write_ memdelete((PoolVector<godot_int>::Write *)p_write); } +godot_pool_real_array_write_access GDAPI *godot_pool_real_array_write_access_copy(const godot_pool_real_array_write_access *p_other) { + PoolVector<godot_real>::Write *other = (PoolVector<godot_real>::Write *)p_other; + return (godot_pool_real_array_write_access *)memnew(PoolVector<godot_real>::Write(*other)); +} godot_real GDAPI *godot_pool_real_array_write_access_ptr(const godot_pool_real_array_write_access *p_write) { PoolVector<godot_real>::Write *write = (PoolVector<godot_real>::Write *)p_write; return write->ptr(); @@ -833,6 +874,10 @@ void GDAPI godot_pool_real_array_write_access_destroy(godot_pool_real_array_writ memdelete((PoolVector<godot_real>::Write *)p_write); } +godot_pool_string_array_write_access GDAPI *godot_pool_string_array_write_access_copy(const godot_pool_string_array_write_access *p_other) { + PoolVector<String>::Write *other = (PoolVector<String>::Write *)p_other; + return (godot_pool_string_array_write_access *)memnew(PoolVector<String>::Write(*other)); +} godot_string GDAPI *godot_pool_string_array_write_access_ptr(const godot_pool_string_array_write_access *p_write) { PoolVector<String>::Write *write = (PoolVector<String>::Write *)p_write; return (godot_string *)write->ptr(); @@ -846,6 +891,10 @@ void GDAPI godot_pool_string_array_write_access_destroy(godot_pool_string_array_ memdelete((PoolVector<String>::Write *)p_write); } +godot_pool_vector2_array_write_access GDAPI *godot_pool_vector2_array_write_access_copy(const godot_pool_vector2_array_write_access *p_other) { + PoolVector<Vector2>::Write *other = (PoolVector<Vector2>::Write *)p_other; + return (godot_pool_vector2_array_write_access *)memnew(PoolVector<Vector2>::Write(*other)); +} godot_vector2 GDAPI *godot_pool_vector2_array_write_access_ptr(const godot_pool_vector2_array_write_access *p_write) { PoolVector<Vector2>::Write *write = (PoolVector<Vector2>::Write *)p_write; return (godot_vector2 *)write->ptr(); @@ -859,6 +908,10 @@ void GDAPI godot_pool_vector2_array_write_access_destroy(godot_pool_vector2_arra memdelete((PoolVector<Vector2>::Write *)p_write); } +godot_pool_vector3_array_write_access GDAPI *godot_pool_vector3_array_write_access_copy(const godot_pool_vector3_array_write_access *p_other) { + PoolVector<Vector3>::Write *other = (PoolVector<Vector3>::Write *)p_other; + return (godot_pool_vector3_array_write_access *)memnew(PoolVector<Vector3>::Write(*other)); +} godot_vector3 GDAPI *godot_pool_vector3_array_write_access_ptr(const godot_pool_vector3_array_write_access *p_write) { PoolVector<Vector3>::Write *write = (PoolVector<Vector3>::Write *)p_write; return (godot_vector3 *)write->ptr(); @@ -872,6 +925,10 @@ void GDAPI godot_pool_vector3_array_write_access_destroy(godot_pool_vector3_arra memdelete((PoolVector<Vector3>::Write *)p_write); } +godot_pool_color_array_write_access GDAPI *godot_pool_color_array_write_access_copy(const godot_pool_color_array_write_access *p_other) { + PoolVector<Color>::Write *other = (PoolVector<Color>::Write *)p_other; + return (godot_pool_color_array_write_access *)memnew(PoolVector<Color>::Write(*other)); +} godot_color GDAPI *godot_pool_color_array_write_access_ptr(const godot_pool_color_array_write_access *p_write) { PoolVector<Color>::Write *write = (PoolVector<Color>::Write *)p_write; return (godot_color *)write->ptr(); diff --git a/modules/gdnative/gdnative/quat.cpp b/modules/gdnative/gdnative/quat.cpp index 2f577e485a..56ff7fe3a8 100644 --- a/modules/gdnative/gdnative/quat.cpp +++ b/modules/gdnative/gdnative/quat.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/quat.h" #include "core/math/quat.h" diff --git a/modules/gdnative/gdnative/rect2.cpp b/modules/gdnative/gdnative/rect2.cpp index c449a0d14c..83c58db520 100644 --- a/modules/gdnative/gdnative/rect2.cpp +++ b/modules/gdnative/gdnative/rect2.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/rect2.h" #include "core/math/math_2d.h" diff --git a/modules/gdnative/gdnative/rid.cpp b/modules/gdnative/gdnative/rid.cpp index fe04f1e92f..4374738f48 100644 --- a/modules/gdnative/gdnative/rid.cpp +++ b/modules/gdnative/gdnative/rid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/rid.h" #include "core/resource.h" diff --git a/modules/gdnative/gdnative/string.cpp b/modules/gdnative/gdnative/string.cpp index a99adb3beb..7f5dbc12be 100644 --- a/modules/gdnative/gdnative/string.cpp +++ b/modules/gdnative/gdnative/string.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/string.h" #include "core/string_db.h" @@ -39,6 +40,24 @@ extern "C" { #endif +godot_int GDAPI godot_char_string_length(const godot_char_string *p_cs) { + const CharString *cs = (const CharString *)p_cs; + + return cs->length(); +} + +const char GDAPI *godot_char_string_get_data(const godot_char_string *p_cs) { + const CharString *cs = (const CharString *)p_cs; + + return cs->get_data(); +} + +void GDAPI godot_char_string_destroy(godot_char_string *p_cs) { + CharString *cs = (CharString *)p_cs; + + cs->~CharString(); +} + void GDAPI godot_string_new(godot_string *r_dest) { String *dest = (String *)r_dest; memnew_placement(dest, String); @@ -50,35 +69,11 @@ void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src memnew_placement(dest, String(*src)); } -void GDAPI godot_string_new_data(godot_string *r_dest, const char *p_contents, const int p_size) { - String *dest = (String *)r_dest; - memnew_placement(dest, String(String::utf8(p_contents, p_size))); -} - -void GDAPI godot_string_new_unicode_data(godot_string *r_dest, const wchar_t *p_contents, const int p_size) { +void GDAPI godot_string_new_with_wide_string(godot_string *r_dest, const wchar_t *p_contents, const int p_size) { String *dest = (String *)r_dest; memnew_placement(dest, String(p_contents, p_size)); } -void GDAPI godot_string_get_data(const godot_string *p_self, char *p_dest, int *p_size) { - String *self = (String *)p_self; - - if (p_size) { - // we have a length pointer, that means we either want to know - // the length or want to write *p_size bytes into a buffer - - CharString utf8_string = self->utf8(); - - int len = utf8_string.length(); - - if (p_dest) { - memcpy(p_dest, utf8_string.get_data(), *p_size); - } else { - *p_size = len; - } - } -} - wchar_t GDAPI *godot_string_operator_index(godot_string *p_self, const godot_int p_idx) { String *self = (String *)p_self; return &(self->operator[](p_idx)); @@ -89,7 +84,7 @@ wchar_t GDAPI godot_string_operator_index_const(const godot_string *p_self, cons return self->operator[](p_idx); } -const wchar_t GDAPI *godot_string_unicode_str(const godot_string *p_self) { +const wchar_t GDAPI *godot_string_wide_str(const godot_string *p_self) { const String *self = (const String *)p_self; return self->c_str(); } @@ -129,6 +124,26 @@ godot_int GDAPI godot_string_length(const godot_string *p_self) { /* Helpers */ +signed char GDAPI godot_string_casecmp_to(const godot_string *p_self, const godot_string *p_str) { + const String *self = (const String *)p_self; + const String *str = (const String *)p_str; + + return self->casecmp_to(*str); +} + +signed char GDAPI godot_string_nocasecmp_to(const godot_string *p_self, const godot_string *p_str) { + const String *self = (const String *)p_self; + const String *str = (const String *)p_str; + + return self->nocasecmp_to(*str); +} +signed char GDAPI godot_string_naturalnocasecmp_to(const godot_string *p_self, const godot_string *p_str) { + const String *self = (const String *)p_self; + const String *str = (const String *)p_str; + + return self->naturalnocasecmp_to(*str); +} + godot_bool GDAPI godot_string_begins_with(const godot_string *p_self, const godot_string *p_string) { const String *self = (const String *)p_self; const String *string = (const String *)p_string; @@ -533,7 +548,7 @@ godot_string GDAPI godot_string_capitalize(const godot_string *p_self) { memnew_placement(&result, String(self->capitalize())); return result; -}; +} godot_string GDAPI godot_string_camelcase_to_underscore(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -541,7 +556,7 @@ godot_string GDAPI godot_string_camelcase_to_underscore(const godot_string *p_se memnew_placement(&result, String(self->camelcase_to_underscore(false))); return result; -}; +} godot_string GDAPI godot_string_camelcase_to_underscore_lowercased(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -549,45 +564,45 @@ godot_string GDAPI godot_string_camelcase_to_underscore_lowercased(const godot_s memnew_placement(&result, String(self->camelcase_to_underscore())); return result; -}; +} double GDAPI godot_string_char_to_double(const char *p_what) { return String::to_double(p_what); -}; +} godot_int GDAPI godot_string_char_to_int(const char *p_what) { return String::to_int(p_what); -}; +} int64_t GDAPI godot_string_wchar_to_int(const wchar_t *p_str) { return String::to_int(p_str); -}; +} godot_int GDAPI godot_string_char_to_int_with_len(const char *p_what, godot_int p_len) { return String::to_int(p_what, p_len); -}; +} int64_t GDAPI godot_string_char_to_int64_with_len(const wchar_t *p_str, int p_len) { return String::to_int(p_str, p_len); -}; +} int64_t GDAPI godot_string_hex_to_int64(const godot_string *p_self) { const String *self = (const String *)p_self; return self->hex_to_int64(false); -}; +} int64_t GDAPI godot_string_hex_to_int64_with_prefix(const godot_string *p_self) { const String *self = (const String *)p_self; return self->hex_to_int64(); -}; +} int64_t GDAPI godot_string_to_int64(const godot_string *p_self) { const String *self = (const String *)p_self; return self->to_int64(); -}; +} double GDAPI godot_string_unicode_char_to_double(const wchar_t *p_str, const wchar_t **r_end) { return String::to_double(p_str, r_end); @@ -600,7 +615,7 @@ godot_string GDAPI godot_string_get_slice(const godot_string *p_self, godot_stri memnew_placement(&result, String(self->get_slice(*splitter, p_slice))); return result; -}; +} godot_string GDAPI godot_string_get_slicec(const godot_string *p_self, wchar_t p_splitter, godot_int p_slice) { const String *self = (const String *)p_self; @@ -608,7 +623,7 @@ godot_string GDAPI godot_string_get_slicec(const godot_string *p_self, wchar_t p memnew_placement(&result, String(self->get_slicec(p_splitter, p_slice))); return result; -}; +} godot_array GDAPI godot_string_split(const godot_string *p_self, const godot_string *p_splitter) { const String *self = (const String *)p_self; @@ -624,7 +639,7 @@ godot_array GDAPI godot_string_split(const godot_string *p_self, const godot_str } return result; -}; +} godot_array GDAPI godot_string_split_allow_empty(const godot_string *p_self, const godot_string *p_splitter) { const String *self = (const String *)p_self; @@ -640,7 +655,7 @@ godot_array GDAPI godot_string_split_allow_empty(const godot_string *p_self, con } return result; -}; +} godot_array GDAPI godot_string_split_floats(const godot_string *p_self, const godot_string *p_splitter) { const String *self = (const String *)p_self; @@ -656,7 +671,7 @@ godot_array GDAPI godot_string_split_floats(const godot_string *p_self, const go } return result; -}; +} godot_array GDAPI godot_string_split_floats_allows_empty(const godot_string *p_self, const godot_string *p_splitter) { const String *self = (const String *)p_self; @@ -672,7 +687,7 @@ godot_array GDAPI godot_string_split_floats_allows_empty(const godot_string *p_s } return result; -}; +} godot_array GDAPI godot_string_split_floats_mk(const godot_string *p_self, const godot_array *p_splitters) { const String *self = (const String *)p_self; @@ -695,7 +710,7 @@ godot_array GDAPI godot_string_split_floats_mk(const godot_string *p_self, const } return result; -}; +} godot_array GDAPI godot_string_split_floats_mk_allows_empty(const godot_string *p_self, const godot_array *p_splitters) { const String *self = (const String *)p_self; @@ -718,7 +733,7 @@ godot_array GDAPI godot_string_split_floats_mk_allows_empty(const godot_string * } return result; -}; +} godot_array GDAPI godot_string_split_ints(const godot_string *p_self, const godot_string *p_splitter) { const String *self = (const String *)p_self; @@ -734,7 +749,7 @@ godot_array GDAPI godot_string_split_ints(const godot_string *p_self, const godo } return result; -}; +} godot_array GDAPI godot_string_split_ints_allows_empty(const godot_string *p_self, const godot_string *p_splitter) { const String *self = (const String *)p_self; @@ -750,7 +765,7 @@ godot_array GDAPI godot_string_split_ints_allows_empty(const godot_string *p_sel } return result; -}; +} godot_array GDAPI godot_string_split_ints_mk(const godot_string *p_self, const godot_array *p_splitters) { const String *self = (const String *)p_self; @@ -773,7 +788,7 @@ godot_array GDAPI godot_string_split_ints_mk(const godot_string *p_self, const g } return result; -}; +} godot_array GDAPI godot_string_split_ints_mk_allows_empty(const godot_string *p_self, const godot_array *p_splitters) { const String *self = (const String *)p_self; @@ -796,7 +811,7 @@ godot_array GDAPI godot_string_split_ints_mk_allows_empty(const godot_string *p_ } return result; -}; +} godot_array GDAPI godot_string_split_spaces(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -811,22 +826,22 @@ godot_array GDAPI godot_string_split_spaces(const godot_string *p_self) { } return result; -}; +} godot_int GDAPI godot_string_get_slice_count(const godot_string *p_self, godot_string p_splitter) { const String *self = (const String *)p_self; String *splitter = (String *)&p_splitter; return self->get_slice_count(*splitter); -}; +} wchar_t GDAPI godot_string_char_lowercase(wchar_t p_char) { return String::char_lowercase(p_char); -}; +} wchar_t GDAPI godot_string_char_uppercase(wchar_t p_char) { return String::char_uppercase(p_char); -}; +} godot_string GDAPI godot_string_to_lower(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -834,7 +849,7 @@ godot_string GDAPI godot_string_to_lower(const godot_string *p_self) { memnew_placement(&result, String(self->to_lower())); return result; -}; +} godot_string GDAPI godot_string_to_upper(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -842,7 +857,7 @@ godot_string GDAPI godot_string_to_upper(const godot_string *p_self) { memnew_placement(&result, String(self->to_upper())); return result; -}; +} godot_string GDAPI godot_string_get_basename(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -850,7 +865,7 @@ godot_string GDAPI godot_string_get_basename(const godot_string *p_self) { memnew_placement(&result, String(self->get_basename())); return result; -}; +} godot_string GDAPI godot_string_get_extension(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -858,7 +873,7 @@ godot_string GDAPI godot_string_get_extension(const godot_string *p_self) { memnew_placement(&result, String(self->get_extension())); return result; -}; +} godot_string GDAPI godot_string_left(const godot_string *p_self, godot_int p_pos) { const String *self = (const String *)p_self; @@ -866,13 +881,13 @@ godot_string GDAPI godot_string_left(const godot_string *p_self, godot_int p_pos memnew_placement(&result, String(self->left(p_pos))); return result; -}; +} wchar_t GDAPI godot_string_ord_at(const godot_string *p_self, godot_int p_idx) { const String *self = (const String *)p_self; return self->ord_at(p_idx); -}; +} godot_string GDAPI godot_string_plus_file(const godot_string *p_self, const godot_string *p_file) { const String *self = (const String *)p_self; @@ -881,7 +896,7 @@ godot_string GDAPI godot_string_plus_file(const godot_string *p_self, const godo memnew_placement(&result, String(self->plus_file(*file))); return result; -}; +} godot_string GDAPI godot_string_right(const godot_string *p_self, godot_int p_pos) { const String *self = (const String *)p_self; @@ -889,7 +904,7 @@ godot_string GDAPI godot_string_right(const godot_string *p_self, godot_int p_po memnew_placement(&result, String(self->right(p_pos))); return result; -}; +} godot_string GDAPI godot_string_strip_edges(const godot_string *p_self, godot_bool p_left, godot_bool p_right) { const String *self = (const String *)p_self; @@ -897,7 +912,7 @@ godot_string GDAPI godot_string_strip_edges(const godot_string *p_self, godot_bo memnew_placement(&result, String(self->strip_edges(p_left, p_right))); return result; -}; +} godot_string GDAPI godot_string_strip_escapes(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -905,94 +920,96 @@ godot_string GDAPI godot_string_strip_escapes(const godot_string *p_self) { memnew_placement(&result, String(self->strip_escapes())); return result; -}; +} void GDAPI godot_string_erase(godot_string *p_self, godot_int p_pos, godot_int p_chars) { String *self = (String *)p_self; return self->erase(p_pos, p_chars); -}; +} -void GDAPI godot_string_ascii(godot_string *p_self, char *result) { - String *self = (String *)p_self; - Vector<char> return_value = self->ascii(); +godot_char_string GDAPI godot_string_ascii(const godot_string *p_self) { + const String *self = (const String *)p_self; + godot_char_string result; - for (int i = 0; i < return_value.size(); i++) { - result[i] = return_value[i]; - } + memnew_placement(&result, CharString(self->ascii())); + + return result; } -void GDAPI godot_string_ascii_extended(godot_string *p_self, char *result) { - String *self = (String *)p_self; - Vector<char> return_value = self->ascii(true); +godot_char_string GDAPI godot_string_ascii_extended(const godot_string *p_self) { + const String *self = (const String *)p_self; - for (int i = 0; i < return_value.size(); i++) { - result[i] = return_value[i]; - } + godot_char_string result; + + memnew_placement(&result, CharString(self->ascii(true))); + + return result; } -void GDAPI godot_string_utf8(godot_string *p_self, char *result) { - String *self = (String *)p_self; - Vector<char> return_value = self->utf8(); +godot_char_string GDAPI godot_string_utf8(const godot_string *p_self) { + const String *self = (const String *)p_self; - for (int i = 0; i < return_value.size(); i++) { - result[i] = return_value[i]; - } + godot_char_string result; + + memnew_placement(&result, CharString(self->utf8())); + + return result; } godot_bool GDAPI godot_string_parse_utf8(godot_string *p_self, const char *p_utf8) { String *self = (String *)p_self; return self->parse_utf8(p_utf8); -}; +} godot_bool GDAPI godot_string_parse_utf8_with_len(godot_string *p_self, const char *p_utf8, godot_int p_len) { String *self = (String *)p_self; return self->parse_utf8(p_utf8, p_len); -}; +} godot_string GDAPI godot_string_chars_to_utf8(const char *p_utf8) { godot_string result; memnew_placement(&result, String(String::utf8(p_utf8))); return result; -}; +} godot_string GDAPI godot_string_chars_to_utf8_with_len(const char *p_utf8, godot_int p_len) { godot_string result; memnew_placement(&result, String(String::utf8(p_utf8, p_len))); return result; -}; +} uint32_t GDAPI godot_string_hash(const godot_string *p_self) { const String *self = (const String *)p_self; return self->hash(); -}; +} uint64_t GDAPI godot_string_hash64(const godot_string *p_self) { const String *self = (const String *)p_self; return self->hash64(); -}; +} uint32_t GDAPI godot_string_hash_chars(const char *p_cstr) { return String::hash(p_cstr); -}; +} uint32_t GDAPI godot_string_hash_chars_with_len(const char *p_cstr, godot_int p_len) { return String::hash(p_cstr, p_len); -}; +} uint32_t GDAPI godot_string_hash_utf8_chars(const wchar_t *p_str) { return String::hash(p_str); -}; +} uint32_t GDAPI godot_string_hash_utf8_chars_with_len(const wchar_t *p_str, godot_int p_len) { return String::hash(p_str, p_len); -}; +} godot_pool_byte_array GDAPI godot_string_md5_buffer(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1009,7 +1026,7 @@ godot_pool_byte_array GDAPI godot_string_md5_buffer(const godot_string *p_self) } return result; -}; +} godot_string GDAPI godot_string_md5_text(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1017,7 +1034,7 @@ godot_string GDAPI godot_string_md5_text(const godot_string *p_self) { memnew_placement(&result, String(self->md5_text())); return result; -}; +} godot_pool_byte_array GDAPI godot_string_sha256_buffer(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1034,7 +1051,7 @@ godot_pool_byte_array GDAPI godot_string_sha256_buffer(const godot_string *p_sel } return result; -}; +} godot_string GDAPI godot_string_sha256_text(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1042,13 +1059,13 @@ godot_string GDAPI godot_string_sha256_text(const godot_string *p_self) { memnew_placement(&result, String(self->sha256_text())); return result; -}; +} godot_bool godot_string_empty(const godot_string *p_self) { const String *self = (const String *)p_self; return self->empty(); -}; +} // path functions godot_string GDAPI godot_string_get_base_dir(const godot_string *p_self) { @@ -1058,7 +1075,7 @@ godot_string GDAPI godot_string_get_base_dir(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_get_file(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1067,7 +1084,7 @@ godot_string GDAPI godot_string_get_file(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_humanize_size(size_t p_size) { godot_string result; @@ -1075,25 +1092,25 @@ godot_string GDAPI godot_string_humanize_size(size_t p_size) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_bool GDAPI godot_string_is_abs_path(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_abs_path(); -}; +} godot_bool GDAPI godot_string_is_rel_path(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_rel_path(); -}; +} godot_bool GDAPI godot_string_is_resource_file(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_resource_file(); -}; +} godot_string GDAPI godot_string_path_to(const godot_string *p_self, const godot_string *p_path) { const String *self = (const String *)p_self; @@ -1103,7 +1120,7 @@ godot_string GDAPI godot_string_path_to(const godot_string *p_self, const godot_ memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_path_to_file(const godot_string *p_self, const godot_string *p_path) { const String *self = (const String *)p_self; @@ -1113,7 +1130,7 @@ godot_string GDAPI godot_string_path_to_file(const godot_string *p_self, const g memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_simplify_path(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1122,7 +1139,7 @@ godot_string GDAPI godot_string_simplify_path(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_c_escape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1131,7 +1148,7 @@ godot_string GDAPI godot_string_c_escape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_c_escape_multiline(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1140,7 +1157,7 @@ godot_string GDAPI godot_string_c_escape_multiline(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_c_unescape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1149,7 +1166,7 @@ godot_string GDAPI godot_string_c_unescape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_http_escape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1158,7 +1175,7 @@ godot_string GDAPI godot_string_http_escape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_http_unescape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1167,7 +1184,7 @@ godot_string GDAPI godot_string_http_unescape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_json_escape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1176,7 +1193,7 @@ godot_string GDAPI godot_string_json_escape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_word_wrap(const godot_string *p_self, godot_int p_chars_per_line) { const String *self = (const String *)p_self; @@ -1185,7 +1202,7 @@ godot_string GDAPI godot_string_word_wrap(const godot_string *p_self, godot_int memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_xml_escape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1194,7 +1211,7 @@ godot_string GDAPI godot_string_xml_escape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_xml_escape_with_quotes(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1203,7 +1220,7 @@ godot_string GDAPI godot_string_xml_escape_with_quotes(const godot_string *p_sel memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_xml_unescape(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1212,7 +1229,7 @@ godot_string GDAPI godot_string_xml_unescape(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_percent_decode(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1221,7 +1238,7 @@ godot_string GDAPI godot_string_percent_decode(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_string GDAPI godot_string_percent_encode(const godot_string *p_self) { const String *self = (const String *)p_self; @@ -1230,43 +1247,43 @@ godot_string GDAPI godot_string_percent_encode(const godot_string *p_self) { memnew_placement(&result, String(return_value)); return result; -}; +} godot_bool GDAPI godot_string_is_valid_float(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_valid_float(); -}; +} godot_bool GDAPI godot_string_is_valid_hex_number(const godot_string *p_self, godot_bool p_with_prefix) { const String *self = (const String *)p_self; return self->is_valid_hex_number(p_with_prefix); -}; +} godot_bool GDAPI godot_string_is_valid_html_color(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_valid_html_color(); -}; +} godot_bool GDAPI godot_string_is_valid_identifier(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_valid_identifier(); -}; +} godot_bool GDAPI godot_string_is_valid_integer(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_valid_integer(); -}; +} godot_bool GDAPI godot_string_is_valid_ip_address(const godot_string *p_self) { const String *self = (const String *)p_self; return self->is_valid_ip_address(); -}; +} #ifdef __cplusplus } diff --git a/modules/gdnative/gdnative/string_name.cpp b/modules/gdnative/gdnative/string_name.cpp index 86067df433..b2a86b843c 100644 --- a/modules/gdnative/gdnative/string_name.cpp +++ b/modules/gdnative/gdnative/string_name.cpp @@ -1,9 +1,9 @@ /*************************************************************************/ -/* string_name.cpp */ +/* string_name.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/string_name.h" #include "core/string_db.h" diff --git a/modules/gdnative/gdnative/transform.cpp b/modules/gdnative/gdnative/transform.cpp index 4b6589a209..715f2e3c08 100644 --- a/modules/gdnative/gdnative/transform.cpp +++ b/modules/gdnative/gdnative/transform.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/transform.h" #include "core/math/transform.h" @@ -62,7 +63,7 @@ godot_basis GDAPI godot_transform_get_basis(const godot_transform *p_self) { return dest; } -void GDAPI godot_transform_set_basis(godot_transform *p_self, godot_basis *p_v) { +void GDAPI godot_transform_set_basis(godot_transform *p_self, const godot_basis *p_v) { Transform *self = (Transform *)p_self; const Basis *v = (const Basis *)p_v; self->basis = *v; @@ -75,7 +76,7 @@ godot_vector3 GDAPI godot_transform_get_origin(const godot_transform *p_self) { return dest; } -void GDAPI godot_transform_set_origin(godot_transform *p_self, godot_vector3 *p_v) { +void GDAPI godot_transform_set_origin(godot_transform *p_self, const godot_vector3 *p_v) { Transform *self = (Transform *)p_self; const Vector3 *v = (const Vector3 *)p_v; self->origin = *v; diff --git a/modules/gdnative/gdnative/transform2d.cpp b/modules/gdnative/gdnative/transform2d.cpp index 0ff5420f4f..c69607a18a 100644 --- a/modules/gdnative/gdnative/transform2d.cpp +++ b/modules/gdnative/gdnative/transform2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/transform2d.h" #include "core/math/math_2d.h" diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp index 6447641096..423f3312e1 100644 --- a/modules/gdnative/gdnative/variant.cpp +++ b/modules/gdnative/gdnative/variant.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/variant.h" #include "core/reference.h" diff --git a/modules/gdnative/gdnative/vector2.cpp b/modules/gdnative/gdnative/vector2.cpp index aadce281b3..9e40b42373 100644 --- a/modules/gdnative/gdnative/vector2.cpp +++ b/modules/gdnative/gdnative/vector2.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/vector2.h" #include "core/math/math_2d.h" diff --git a/modules/gdnative/gdnative/vector3.cpp b/modules/gdnative/gdnative/vector3.cpp index 4de9889c23..a7e18fa22b 100644 --- a/modules/gdnative/gdnative/vector3.cpp +++ b/modules/gdnative/gdnative/vector3.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdnative/vector3.h" #include "core/variant.h" diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json index 06c6e9f410..59a9c0b090 100644 --- a/modules/gdnative/gdnative_api.json +++ b/modules/gdnative/gdnative_api.json @@ -2090,6 +2090,13 @@ ] }, { + "name": "godot_pool_byte_array_read_access_copy", + "return_type": "godot_pool_byte_array_read_access *", + "arguments": [ + ["const godot_pool_byte_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_byte_array_read_access_ptr", "return_type": "const uint8_t *", "arguments": [ @@ -2112,6 +2119,13 @@ ] }, { + "name": "godot_pool_int_array_read_access_copy", + "return_type": "godot_pool_int_array_read_access *", + "arguments": [ + ["const godot_pool_int_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_int_array_read_access_ptr", "return_type": "const godot_int *", "arguments": [ @@ -2134,6 +2148,13 @@ ] }, { + "name": "godot_pool_real_array_read_access_copy", + "return_type": "godot_pool_real_array_read_access *", + "arguments": [ + ["const godot_pool_real_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_real_array_read_access_ptr", "return_type": "const godot_real *", "arguments": [ @@ -2156,6 +2177,13 @@ ] }, { + "name": "godot_pool_string_array_read_access_copy", + "return_type": "godot_pool_string_array_read_access *", + "arguments": [ + ["const godot_pool_string_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_string_array_read_access_ptr", "return_type": "const godot_string *", "arguments": [ @@ -2178,6 +2206,13 @@ ] }, { + "name": "godot_pool_vector2_array_read_access_copy", + "return_type": "godot_pool_vector2_array_read_access *", + "arguments": [ + ["const godot_pool_vector2_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_vector2_array_read_access_ptr", "return_type": "const godot_vector2 *", "arguments": [ @@ -2200,6 +2235,13 @@ ] }, { + "name": "godot_pool_vector3_array_read_access_copy", + "return_type": "godot_pool_vector3_array_read_access *", + "arguments": [ + ["const godot_pool_vector3_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_vector3_array_read_access_ptr", "return_type": "const godot_vector3 *", "arguments": [ @@ -2222,6 +2264,13 @@ ] }, { + "name": "godot_pool_color_array_read_access_copy", + "return_type": "godot_pool_color_array_read_access *", + "arguments": [ + ["const godot_pool_color_array_read_access *", "p_read"] + ] + }, + { "name": "godot_pool_color_array_read_access_ptr", "return_type": "const godot_color *", "arguments": [ @@ -2244,6 +2293,13 @@ ] }, { + "name": "godot_pool_byte_array_write_access_copy", + "return_type": "godot_pool_byte_array_write_access *", + "arguments": [ + ["const godot_pool_byte_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_byte_array_write_access_ptr", "return_type": "uint8_t *", "arguments": [ @@ -2266,6 +2322,13 @@ ] }, { + "name": "godot_pool_int_array_write_access_copy", + "return_type": "godot_pool_int_array_write_access *", + "arguments": [ + ["const godot_pool_int_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_int_array_write_access_ptr", "return_type": "godot_int *", "arguments": [ @@ -2288,6 +2351,13 @@ ] }, { + "name": "godot_pool_real_array_write_access_copy", + "return_type": "godot_pool_real_array_write_access *", + "arguments": [ + ["const godot_pool_real_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_real_array_write_access_ptr", "return_type": "godot_real *", "arguments": [ @@ -2310,6 +2380,13 @@ ] }, { + "name": "godot_pool_string_array_write_access_copy", + "return_type": "godot_pool_string_array_write_access *", + "arguments": [ + ["const godot_pool_string_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_string_array_write_access_ptr", "return_type": "godot_string *", "arguments": [ @@ -2332,6 +2409,13 @@ ] }, { + "name": "godot_pool_vector2_array_write_access_copy", + "return_type": "godot_pool_vector2_array_write_access *", + "arguments": [ + ["const godot_pool_vector2_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_vector2_array_write_access_ptr", "return_type": "godot_vector2 *", "arguments": [ @@ -2354,6 +2438,13 @@ ] }, { + "name": "godot_pool_vector3_array_write_access_copy", + "return_type": "godot_pool_vector3_array_write_access *", + "arguments": [ + ["const godot_pool_vector3_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_vector3_array_write_access_ptr", "return_type": "godot_vector3 *", "arguments": [ @@ -2376,6 +2467,13 @@ ] }, { + "name": "godot_pool_color_array_write_access_copy", + "return_type": "godot_pool_color_array_write_access *", + "arguments": [ + ["const godot_pool_color_array_write_access *", "p_write"] + ] + }, + { "name": "godot_pool_color_array_write_access_ptr", "return_type": "godot_color *", "arguments": [ @@ -3516,7 +3614,7 @@ "return_type": "void", "arguments": [ ["godot_transform *", "p_self"], - ["godot_basis *", "p_v"] + ["const godot_basis *", "p_v"] ] }, { @@ -3531,7 +3629,7 @@ "return_type": "void", "arguments": [ ["godot_transform *", "p_self"], - ["godot_vector3 *", "p_v"] + ["const godot_vector3 *", "p_v"] ] }, { @@ -4324,45 +4422,48 @@ ] }, { - "name": "godot_string_new", - "return_type": "void", + "name": "godot_char_string_length", + "return_type": "godot_int", "arguments": [ - ["godot_string *", "r_dest"] + ["const godot_char_string *", "p_cs"] ] }, { - "name": "godot_string_new_copy", + "name": "godot_char_string_get_data", + "return_type": "const char *", + "arguments": [ + ["const godot_char_string *", "p_cs"] + ] + }, + { + "name": "godot_char_string_destroy", "return_type": "void", "arguments": [ - ["godot_string *", "r_dest"], - ["const godot_string *", "p_src"] + ["godot_char_string *", "p_cs"] ] }, { - "name": "godot_string_new_data", + "name": "godot_string_new", "return_type": "void", "arguments": [ - ["godot_string *", "r_dest"], - ["const char *", "p_contents"], - ["const int", "p_size"] + ["godot_string *", "r_dest"] ] }, { - "name": "godot_string_new_unicode_data", + "name": "godot_string_new_copy", "return_type": "void", "arguments": [ ["godot_string *", "r_dest"], - ["const wchar_t *", "p_contents"], - ["const int", "p_size"] + ["const godot_string *", "p_src"] ] }, { - "name": "godot_string_get_data", + "name": "godot_string_new_with_wide_string", "return_type": "void", "arguments": [ - ["const godot_string *", "p_self"], - ["char *", "p_dest"], - ["int *", "p_size"] + ["godot_string *", "r_dest"], + ["const wchar_t *", "p_contents"], + ["const int", "p_size"] ] }, { @@ -4382,7 +4483,7 @@ ] }, { - "name": "godot_string_unicode_str", + "name": "godot_string_wide_str", "return_type": "const wchar_t *", "arguments": [ ["const godot_string *", "p_self"] @@ -4420,6 +4521,30 @@ ] }, { + "name": "godot_string_casecmp_to", + "return_type": "signed char", + "arguments": [ + ["const godot_string *", "p_self"], + ["const godot_string *", "p_str"] + ] + }, + { + "name": "godot_string_nocasecmp_to", + "return_type": "signed char", + "arguments": [ + ["const godot_string *", "p_self"], + ["const godot_string *", "p_str"] + ] + }, + { + "name": "godot_string_naturalnocasecmp_to", + "return_type": "signed char", + "arguments": [ + ["const godot_string *", "p_self"], + ["const godot_string *", "p_str"] + ] + }, + { "name": "godot_string_begins_with", "return_type": "godot_bool", "arguments": [ @@ -5125,26 +5250,23 @@ }, { "name": "godot_string_ascii", - "return_type": "void", + "return_type": "godot_char_string", "arguments": [ - ["godot_string *", "p_self"], - ["char *", "result"] + ["const godot_string *", "p_self"] ] }, { "name": "godot_string_ascii_extended", - "return_type": "void", + "return_type": "godot_char_string", "arguments": [ - ["godot_string *", "p_self"], - ["char *", "result"] + ["const godot_string *", "p_self"] ] }, { "name": "godot_string_utf8", - "return_type": "void", + "return_type": "godot_char_string", "arguments": [ - ["godot_string *", "p_self"], - ["char *", "result"] + ["const godot_string *", "p_self"] ] }, { diff --git a/modules/gdnative/gdnative_library_editor_plugin.cpp b/modules/gdnative/gdnative_library_editor_plugin.cpp index b2ca640cb0..6424b66d1e 100644 --- a/modules/gdnative/gdnative_library_editor_plugin.cpp +++ b/modules/gdnative/gdnative_library_editor_plugin.cpp @@ -299,8 +299,8 @@ GDNativeLibraryEditor::GDNativeLibraryEditor() { NativePlatformConfig platform_uwp; platform_uwp.name = "Windows Universal"; platform_uwp.entries.push_back("arm"); - platform_uwp.entries.push_back("x86"); - platform_uwp.entries.push_back("x64"); + platform_uwp.entries.push_back("32"); + platform_uwp.entries.push_back("64"); platform_uwp.library_extension = "*.dll"; platforms["UWP"] = platform_uwp; diff --git a/modules/gdnative/gdnative_library_editor_plugin.h b/modules/gdnative/gdnative_library_editor_plugin.h index 2b635d0937..94bc2adc7d 100644 --- a/modules/gdnative/gdnative_library_editor_plugin.h +++ b/modules/gdnative/gdnative_library_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDNATIVE_LIBRARY_EDITOR_PLUGIN_H #define GDNATIVE_LIBRARY_EDITOR_PLUGIN_H diff --git a/modules/gdnative/gdnative_library_singleton_editor.cpp b/modules/gdnative/gdnative_library_singleton_editor.cpp index 4c0049f90d..0aafb95e2e 100644 --- a/modules/gdnative/gdnative_library_singleton_editor.cpp +++ b/modules/gdnative/gdnative_library_singleton_editor.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* gdnative_library_singleton_editor.cpp */ +/* gdnative_library_singleton_editor.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef TOOLS_ENABLED #include "gdnative_library_singleton_editor.h" #include "gdnative.h" diff --git a/modules/gdnative/gdnative_library_singleton_editor.h b/modules/gdnative/gdnative_library_singleton_editor.h index d00ddc9211..d3b5ba3846 100644 --- a/modules/gdnative/gdnative_library_singleton_editor.h +++ b/modules/gdnative/gdnative_library_singleton_editor.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* gdnative_library_singleton_editor.h */ +/* gdnative_library_singleton_editor.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_NATIVE_LIBRARY_EDITOR_H #define GD_NATIVE_LIBRARY_EDITOR_H diff --git a/modules/gdnative/include/arvr/godot_arvr.h b/modules/gdnative/include/arvr/godot_arvr.h index fc4626c967..b9aedc0bef 100644 --- a/modules/gdnative/include/arvr/godot_arvr.h +++ b/modules/gdnative/include/arvr/godot_arvr.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_NATIVEARVR_H #define GODOT_NATIVEARVR_H diff --git a/modules/gdnative/include/gdnative/aabb.h b/modules/gdnative/include/gdnative/aabb.h index a40061ce2e..dca5d4bb14 100644 --- a/modules/gdnative/include/gdnative/aabb.h +++ b/modules/gdnative/include/gdnative/aabb.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* aabb.h */ +/* aabb.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_AABB_H #define GODOT_AABB_H diff --git a/modules/gdnative/include/gdnative/basis.h b/modules/gdnative/include/gdnative/basis.h index ce9ac590d9..53e950b4a2 100644 --- a/modules/gdnative/include/gdnative/basis.h +++ b/modules/gdnative/include/gdnative/basis.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_BASIS_H #define GODOT_BASIS_H diff --git a/modules/gdnative/include/gdnative/color.h b/modules/gdnative/include/gdnative/color.h index 14086c1155..1f0ac8354d 100644 --- a/modules/gdnative/include/gdnative/color.h +++ b/modules/gdnative/include/gdnative/color.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_COLOR_H #define GODOT_COLOR_H diff --git a/modules/gdnative/include/gdnative/dictionary.h b/modules/gdnative/include/gdnative/dictionary.h index 07ffb3346b..a86d60dc72 100644 --- a/modules/gdnative/include/gdnative/dictionary.h +++ b/modules/gdnative/include/gdnative/dictionary.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_DICTIONARY_H #define GODOT_DICTIONARY_H diff --git a/modules/gdnative/include/gdnative/gdnative.h b/modules/gdnative/include/gdnative/gdnative.h index d066df8046..4cf6e99b06 100644 --- a/modules/gdnative/include/gdnative/gdnative.h +++ b/modules/gdnative/include/gdnative/gdnative.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_GDNATIVE_H #define GODOT_GDNATIVE_H @@ -69,7 +70,7 @@ typedef enum { GODOT_OK, GODOT_FAILED, ///< Generic fail error GODOT_ERR_UNAVAILABLE, ///< What is requested is unsupported/unavailable - GODOT_ERR_UNCONFIGURED, ///< The object being used hasnt been properly set up yet + GODOT_ERR_UNCONFIGURED, ///< The object being used hasn't been properly set up yet GODOT_ERR_UNAUTHORIZED, ///< Missing credentials for requested resource GODOT_ERR_PARAMETER_RANGE_ERROR, ///< Parameter given out of range (5) GODOT_ERR_OUT_OF_MEMORY, ///< Out of memory diff --git a/modules/gdnative/include/gdnative/node_path.h b/modules/gdnative/include/gdnative/node_path.h index e58c332cdf..2b55e01d13 100644 --- a/modules/gdnative/include/gdnative/node_path.h +++ b/modules/gdnative/include/gdnative/node_path.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_NODE_PATH_H #define GODOT_NODE_PATH_H diff --git a/modules/gdnative/include/gdnative/plane.h b/modules/gdnative/include/gdnative/plane.h index d40a76374f..6c8a6ae1a4 100644 --- a/modules/gdnative/include/gdnative/plane.h +++ b/modules/gdnative/include/gdnative/plane.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_PLANE_H #define GODOT_PLANE_H diff --git a/modules/gdnative/include/gdnative/pool_arrays.h b/modules/gdnative/include/gdnative/pool_arrays.h index f91bd4694b..1210039e34 100644 --- a/modules/gdnative/include/gdnative/pool_arrays.h +++ b/modules/gdnative/include/gdnative/pool_arrays.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_POOL_ARRAYS_H #define GODOT_POOL_ARRAYS_H @@ -382,30 +383,37 @@ void GDAPI godot_pool_color_array_destroy(godot_pool_color_array *p_self); // read accessor functions // +godot_pool_byte_array_read_access GDAPI *godot_pool_byte_array_read_access_copy(const godot_pool_byte_array_read_access *p_other); const uint8_t GDAPI *godot_pool_byte_array_read_access_ptr(const godot_pool_byte_array_read_access *p_read); void GDAPI godot_pool_byte_array_read_access_operator_assign(godot_pool_byte_array_read_access *p_read, godot_pool_byte_array_read_access *p_other); void GDAPI godot_pool_byte_array_read_access_destroy(godot_pool_byte_array_read_access *p_read); +godot_pool_int_array_read_access GDAPI *godot_pool_int_array_read_access_copy(const godot_pool_int_array_read_access *p_other); const godot_int GDAPI *godot_pool_int_array_read_access_ptr(const godot_pool_int_array_read_access *p_read); void GDAPI godot_pool_int_array_read_access_operator_assign(godot_pool_int_array_read_access *p_read, godot_pool_int_array_read_access *p_other); void GDAPI godot_pool_int_array_read_access_destroy(godot_pool_int_array_read_access *p_read); +godot_pool_real_array_read_access GDAPI *godot_pool_real_array_read_access_copy(const godot_pool_real_array_read_access *p_other); const godot_real GDAPI *godot_pool_real_array_read_access_ptr(const godot_pool_real_array_read_access *p_read); void GDAPI godot_pool_real_array_read_access_operator_assign(godot_pool_real_array_read_access *p_read, godot_pool_real_array_read_access *p_other); void GDAPI godot_pool_real_array_read_access_destroy(godot_pool_real_array_read_access *p_read); +godot_pool_string_array_read_access GDAPI *godot_pool_string_array_read_access_copy(const godot_pool_string_array_read_access *p_other); const godot_string GDAPI *godot_pool_string_array_read_access_ptr(const godot_pool_string_array_read_access *p_read); void GDAPI godot_pool_string_array_read_access_operator_assign(godot_pool_string_array_read_access *p_read, godot_pool_string_array_read_access *p_other); void GDAPI godot_pool_string_array_read_access_destroy(godot_pool_string_array_read_access *p_read); +godot_pool_vector2_array_read_access GDAPI *godot_pool_vector2_array_read_access_copy(const godot_pool_vector2_array_read_access *p_other); const godot_vector2 GDAPI *godot_pool_vector2_array_read_access_ptr(const godot_pool_vector2_array_read_access *p_read); void GDAPI godot_pool_vector2_array_read_access_operator_assign(godot_pool_vector2_array_read_access *p_read, godot_pool_vector2_array_read_access *p_other); void GDAPI godot_pool_vector2_array_read_access_destroy(godot_pool_vector2_array_read_access *p_read); +godot_pool_vector3_array_read_access GDAPI *godot_pool_vector3_array_read_access_copy(const godot_pool_vector3_array_read_access *p_other); const godot_vector3 GDAPI *godot_pool_vector3_array_read_access_ptr(const godot_pool_vector3_array_read_access *p_read); void GDAPI godot_pool_vector3_array_read_access_operator_assign(godot_pool_vector3_array_read_access *p_read, godot_pool_vector3_array_read_access *p_other); void GDAPI godot_pool_vector3_array_read_access_destroy(godot_pool_vector3_array_read_access *p_read); +godot_pool_color_array_read_access GDAPI *godot_pool_color_array_read_access_copy(const godot_pool_color_array_read_access *p_other); const godot_color GDAPI *godot_pool_color_array_read_access_ptr(const godot_pool_color_array_read_access *p_read); void GDAPI godot_pool_color_array_read_access_operator_assign(godot_pool_color_array_read_access *p_read, godot_pool_color_array_read_access *p_other); void GDAPI godot_pool_color_array_read_access_destroy(godot_pool_color_array_read_access *p_read); @@ -414,30 +422,37 @@ void GDAPI godot_pool_color_array_read_access_destroy(godot_pool_color_array_rea // write accessor functions // +godot_pool_byte_array_write_access GDAPI *godot_pool_byte_array_write_access_copy(const godot_pool_byte_array_write_access *p_other); uint8_t GDAPI *godot_pool_byte_array_write_access_ptr(const godot_pool_byte_array_write_access *p_write); void GDAPI godot_pool_byte_array_write_access_operator_assign(godot_pool_byte_array_write_access *p_write, godot_pool_byte_array_write_access *p_other); void GDAPI godot_pool_byte_array_write_access_destroy(godot_pool_byte_array_write_access *p_write); +godot_pool_int_array_write_access GDAPI *godot_pool_int_array_write_access_copy(const godot_pool_int_array_write_access *p_other); godot_int GDAPI *godot_pool_int_array_write_access_ptr(const godot_pool_int_array_write_access *p_write); void GDAPI godot_pool_int_array_write_access_operator_assign(godot_pool_int_array_write_access *p_write, godot_pool_int_array_write_access *p_other); void GDAPI godot_pool_int_array_write_access_destroy(godot_pool_int_array_write_access *p_write); +godot_pool_real_array_write_access GDAPI *godot_pool_real_array_write_access_copy(const godot_pool_real_array_write_access *p_other); godot_real GDAPI *godot_pool_real_array_write_access_ptr(const godot_pool_real_array_write_access *p_write); void GDAPI godot_pool_real_array_write_access_operator_assign(godot_pool_real_array_write_access *p_write, godot_pool_real_array_write_access *p_other); void GDAPI godot_pool_real_array_write_access_destroy(godot_pool_real_array_write_access *p_write); +godot_pool_string_array_write_access GDAPI *godot_pool_string_array_write_access_copy(const godot_pool_string_array_write_access *p_other); godot_string GDAPI *godot_pool_string_array_write_access_ptr(const godot_pool_string_array_write_access *p_write); void GDAPI godot_pool_string_array_write_access_operator_assign(godot_pool_string_array_write_access *p_write, godot_pool_string_array_write_access *p_other); void GDAPI godot_pool_string_array_write_access_destroy(godot_pool_string_array_write_access *p_write); +godot_pool_vector2_array_write_access GDAPI *godot_pool_vector2_array_write_access_copy(const godot_pool_vector2_array_write_access *p_other); godot_vector2 GDAPI *godot_pool_vector2_array_write_access_ptr(const godot_pool_vector2_array_write_access *p_write); void GDAPI godot_pool_vector2_array_write_access_operator_assign(godot_pool_vector2_array_write_access *p_write, godot_pool_vector2_array_write_access *p_other); void GDAPI godot_pool_vector2_array_write_access_destroy(godot_pool_vector2_array_write_access *p_write); +godot_pool_vector3_array_write_access GDAPI *godot_pool_vector3_array_write_access_copy(const godot_pool_vector3_array_write_access *p_other); godot_vector3 GDAPI *godot_pool_vector3_array_write_access_ptr(const godot_pool_vector3_array_write_access *p_write); void GDAPI godot_pool_vector3_array_write_access_operator_assign(godot_pool_vector3_array_write_access *p_write, godot_pool_vector3_array_write_access *p_other); void GDAPI godot_pool_vector3_array_write_access_destroy(godot_pool_vector3_array_write_access *p_write); +godot_pool_color_array_write_access GDAPI *godot_pool_color_array_write_access_copy(const godot_pool_color_array_write_access *p_other); godot_color GDAPI *godot_pool_color_array_write_access_ptr(const godot_pool_color_array_write_access *p_write); void GDAPI godot_pool_color_array_write_access_operator_assign(godot_pool_color_array_write_access *p_write, godot_pool_color_array_write_access *p_other); void GDAPI godot_pool_color_array_write_access_destroy(godot_pool_color_array_write_access *p_write); diff --git a/modules/gdnative/include/gdnative/quat.h b/modules/gdnative/include/gdnative/quat.h index 3696a303df..4e86960aaf 100644 --- a/modules/gdnative/include/gdnative/quat.h +++ b/modules/gdnative/include/gdnative/quat.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_QUAT_H #define GODOT_QUAT_H diff --git a/modules/gdnative/include/gdnative/rect2.h b/modules/gdnative/include/gdnative/rect2.h index 7b223b450e..4adcb73e3d 100644 --- a/modules/gdnative/include/gdnative/rect2.h +++ b/modules/gdnative/include/gdnative/rect2.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_RECT2_H #define GODOT_RECT2_H diff --git a/modules/gdnative/include/gdnative/rid.h b/modules/gdnative/include/gdnative/rid.h index effa89bbbd..0942334ee5 100644 --- a/modules/gdnative/include/gdnative/rid.h +++ b/modules/gdnative/include/gdnative/rid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_RID_H #define GODOT_RID_H diff --git a/modules/gdnative/include/gdnative/string.h b/modules/gdnative/include/gdnative/string.h index 90397b0e40..73245160c1 100644 --- a/modules/gdnative/include/gdnative/string.h +++ b/modules/gdnative/include/gdnative/string.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_STRING_H #define GODOT_STRING_H @@ -37,13 +38,24 @@ extern "C" { #include <stdint.h> #include <wchar.h> +typedef wchar_t godot_char_type; + #define GODOT_STRING_SIZE sizeof(void *) +#define GODOT_CHAR_STRING_SIZE sizeof(void *) #ifndef GODOT_CORE_API_GODOT_STRING_TYPE_DEFINED #define GODOT_CORE_API_GODOT_STRING_TYPE_DEFINED typedef struct { uint8_t _dont_touch_that[GODOT_STRING_SIZE]; } godot_string; + +#endif + +#ifndef GODOT_CORE_API_GODOT_CHAR_STRING_TYPE_DEFINED +#define GODOT_CORE_API_GODOT_CHAR_STRING_TYPE_DEFINED +typedef struct { + uint8_t _dont_touch_that[GODOT_CHAR_STRING_SIZE]; +} godot_char_string; #endif // reduce extern "C" nesting for VS2013 @@ -59,16 +71,17 @@ typedef struct { extern "C" { #endif +godot_int GDAPI godot_char_string_length(const godot_char_string *p_cs); +const char GDAPI *godot_char_string_get_data(const godot_char_string *p_cs); +void GDAPI godot_char_string_destroy(godot_char_string *p_cs); + void GDAPI godot_string_new(godot_string *r_dest); void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src); -void GDAPI godot_string_new_data(godot_string *r_dest, const char *p_contents, const int p_size); -void GDAPI godot_string_new_unicode_data(godot_string *r_dest, const wchar_t *p_contents, const int p_size); - -void GDAPI godot_string_get_data(const godot_string *p_self, char *p_dest, int *p_size); +void GDAPI godot_string_new_with_wide_string(godot_string *r_dest, const wchar_t *p_contents, const int p_size); wchar_t GDAPI *godot_string_operator_index(godot_string *p_self, const godot_int p_idx); wchar_t GDAPI godot_string_operator_index_const(const godot_string *p_self, const godot_int p_idx); -const wchar_t GDAPI *godot_string_unicode_str(const godot_string *p_self); +const wchar_t GDAPI *godot_string_wide_str(const godot_string *p_self); godot_bool GDAPI godot_string_operator_equal(const godot_string *p_self, const godot_string *p_b); godot_bool GDAPI godot_string_operator_less(const godot_string *p_self, const godot_string *p_b); @@ -80,6 +93,10 @@ godot_int GDAPI godot_string_length(const godot_string *p_self); /* Helpers */ +signed char GDAPI godot_string_casecmp_to(const godot_string *p_self, const godot_string *p_str); +signed char GDAPI godot_string_nocasecmp_to(const godot_string *p_self, const godot_string *p_str); +signed char GDAPI godot_string_naturalnocasecmp_to(const godot_string *p_self, const godot_string *p_str); + godot_bool GDAPI godot_string_begins_with(const godot_string *p_self, const godot_string *p_string); godot_bool GDAPI godot_string_begins_with_char_array(const godot_string *p_self, const char *p_char_array); godot_array GDAPI godot_string_bigrams(const godot_string *p_self); @@ -176,9 +193,9 @@ godot_string GDAPI godot_string_strip_escapes(const godot_string *p_self); void GDAPI godot_string_erase(godot_string *p_self, godot_int p_pos, godot_int p_chars); -void GDAPI godot_string_ascii(godot_string *p_self, char *result); -void GDAPI godot_string_ascii_extended(godot_string *p_self, char *result); -void GDAPI godot_string_utf8(godot_string *p_self, char *result); +godot_char_string GDAPI godot_string_ascii(const godot_string *p_self); +godot_char_string GDAPI godot_string_ascii_extended(const godot_string *p_self); +godot_char_string GDAPI godot_string_utf8(const godot_string *p_self); godot_bool GDAPI godot_string_parse_utf8(godot_string *p_self, const char *p_utf8); godot_bool GDAPI godot_string_parse_utf8_with_len(godot_string *p_self, const char *p_utf8, godot_int p_len); godot_string GDAPI godot_string_chars_to_utf8(const char *p_utf8); diff --git a/modules/gdnative/include/gdnative/string_name.h b/modules/gdnative/include/gdnative/string_name.h index 287f98d523..5068a3d8f9 100644 --- a/modules/gdnative/include/gdnative/string_name.h +++ b/modules/gdnative/include/gdnative/string_name.h @@ -1,9 +1,9 @@ /*************************************************************************/ -/* string_name.h */ +/* string_name.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_STRING_NAME_H #define GODOT_STRING_NAME_H diff --git a/modules/gdnative/include/gdnative/transform.h b/modules/gdnative/include/gdnative/transform.h index d5e2e9364f..a646da146a 100644 --- a/modules/gdnative/include/gdnative/transform.h +++ b/modules/gdnative/include/gdnative/transform.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_TRANSFORM_H #define GODOT_TRANSFORM_H @@ -63,10 +64,10 @@ void GDAPI godot_transform_new_with_axis_origin(godot_transform *r_dest, const g void GDAPI godot_transform_new(godot_transform *r_dest, const godot_basis *p_basis, const godot_vector3 *p_origin); godot_basis GDAPI godot_transform_get_basis(const godot_transform *p_self); -void GDAPI godot_transform_set_basis(godot_transform *p_self, godot_basis *p_v); +void GDAPI godot_transform_set_basis(godot_transform *p_self, const godot_basis *p_v); godot_vector3 GDAPI godot_transform_get_origin(const godot_transform *p_self); -void GDAPI godot_transform_set_origin(godot_transform *p_self, godot_vector3 *p_v); +void GDAPI godot_transform_set_origin(godot_transform *p_self, const godot_vector3 *p_v); godot_string GDAPI godot_transform_as_string(const godot_transform *p_self); diff --git a/modules/gdnative/include/gdnative/transform2d.h b/modules/gdnative/include/gdnative/transform2d.h index c92225a110..aed941f139 100644 --- a/modules/gdnative/include/gdnative/transform2d.h +++ b/modules/gdnative/include/gdnative/transform2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_TRANSFORM2D_H #define GODOT_TRANSFORM2D_H diff --git a/modules/gdnative/include/gdnative/variant.h b/modules/gdnative/include/gdnative/variant.h index af26ab99db..d2e8246bfb 100644 --- a/modules/gdnative/include/gdnative/variant.h +++ b/modules/gdnative/include/gdnative/variant.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_VARIANT_H #define GODOT_VARIANT_H diff --git a/modules/gdnative/include/gdnative/vector2.h b/modules/gdnative/include/gdnative/vector2.h index c7e7926b0a..af97524dac 100644 --- a/modules/gdnative/include/gdnative/vector2.h +++ b/modules/gdnative/include/gdnative/vector2.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_VECTOR2_H #define GODOT_VECTOR2_H diff --git a/modules/gdnative/include/gdnative/vector3.h b/modules/gdnative/include/gdnative/vector3.h index c117bad380..e0299a8a30 100644 --- a/modules/gdnative/include/gdnative/vector3.h +++ b/modules/gdnative/include/gdnative/vector3.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_VECTOR3_H #define GODOT_VECTOR3_H diff --git a/modules/gdnative/include/nativescript/godot_nativescript.h b/modules/gdnative/include/nativescript/godot_nativescript.h index e6fd9d3f84..11017ae78d 100644 --- a/modules/gdnative/include/nativescript/godot_nativescript.h +++ b/modules/gdnative/include/nativescript/godot_nativescript.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_NATIVESCRIPT_H #define GODOT_NATIVESCRIPT_H @@ -49,7 +50,7 @@ typedef enum { GODOT_PROPERTY_HINT_RANGE, ///< hint_text = "min,max,step,slider; //slider is optional" GODOT_PROPERTY_HINT_EXP_RANGE, ///< hint_text = "min,max,step", exponential edit GODOT_PROPERTY_HINT_ENUM, ///< hint_text= "val1,val2,val3,etc" - GODOT_PROPERTY_HINT_EXP_EASING, /// exponential easing funciton (Math::ease) + GODOT_PROPERTY_HINT_EXP_EASING, /// exponential easing function (Math::ease) GODOT_PROPERTY_HINT_LENGTH, ///< hint_text= "length" (as integer) GODOT_PROPERTY_HINT_SPRITE_FRAME, GODOT_PROPERTY_HINT_KEY_ACCEL, ///< hint_text= "length" (as integer) diff --git a/modules/gdnative/include/pluginscript/godot_pluginscript.h b/modules/gdnative/include/pluginscript/godot_pluginscript.h index fca29b67ca..671be3bbb9 100644 --- a/modules/gdnative/include/pluginscript/godot_pluginscript.h +++ b/modules/gdnative/include/pluginscript/godot_pluginscript.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* godot_nativescript.h */ +/* godot_pluginscript.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOT_PLUGINSCRIPT_H #define GODOT_PLUGINSCRIPT_H diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp index 687aa66219..4012e821bb 100644 --- a/modules/gdnative/nativescript/api_generator.cpp +++ b/modules/gdnative/nativescript/api_generator.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "api_generator.h" #ifdef TOOLS_ENABLED diff --git a/modules/gdnative/nativescript/api_generator.h b/modules/gdnative/nativescript/api_generator.h index 23fd0377ad..de234b2f0d 100644 --- a/modules/gdnative/nativescript/api_generator.h +++ b/modules/gdnative/nativescript/api_generator.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef API_GENERATOR_H #define API_GENERATOR_H diff --git a/modules/gdnative/nativescript/godot_nativescript.cpp b/modules/gdnative/nativescript/godot_nativescript.cpp index c9434c404e..b4f7e1555e 100644 --- a/modules/gdnative/nativescript/godot_nativescript.cpp +++ b/modules/gdnative/nativescript/godot_nativescript.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "nativescript/godot_nativescript.h" #include "class_db.h" diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp index 823d794f72..aaa7d634d1 100644 --- a/modules/gdnative/nativescript/nativescript.cpp +++ b/modules/gdnative/nativescript/nativescript.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "nativescript.h" #include "gdnative/gdnative.h" @@ -397,6 +398,11 @@ Variant NativeScript::_new(const Variant **p_args, int p_argcount, Variant::Call owner = memnew(Reference); } + if (!owner) { + r_error.error = Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL; + return Variant(); + } + Reference *r = Object::cast_to<Reference>(owner); if (r) { ref = REF(r); @@ -789,9 +795,36 @@ NativeScriptInstance::~NativeScriptInstance() { NativeScriptLanguage *NativeScriptLanguage::singleton; -void NativeScriptLanguage::_unload_stuff() { +void NativeScriptLanguage::_unload_stuff(bool p_reload) { for (Map<String, Map<StringName, NativeScriptDesc> >::Element *L = library_classes.front(); L; L = L->next()) { - for (Map<StringName, NativeScriptDesc>::Element *C = L->get().front(); C; C = C->next()) { + + String lib_path = L->key(); + Map<StringName, NativeScriptDesc> classes = L->get(); + + if (p_reload) { + + Map<String, Ref<GDNative> >::Element *E = library_gdnatives.find(lib_path); + Ref<GDNative> gdn; + + if (E) { + gdn = E->get(); + } + + bool should_reload = false; + + if (gdn.is_valid()) { + Ref<GDNativeLibrary> lib = gdn->get_library(); + if (lib.is_valid()) { + should_reload = lib->is_reloadable(); + } + } + + if (!should_reload) { + continue; + } + } + + for (Map<StringName, NativeScriptDesc>::Element *C = classes.front(); C; C = C->next()) { // free property stuff first for (OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = C->get().properties.front(); P; P = P.next()) { @@ -829,12 +862,14 @@ NativeScriptLanguage::~NativeScriptLanguage() { for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) { - L->get()->terminate(); - NSL->library_classes.clear(); - NSL->library_gdnatives.clear(); - NSL->library_script_users.clear(); + if (L->get().is_valid()) + L->get()->terminate(); } + NSL->library_classes.clear(); + NSL->library_gdnatives.clear(); + NSL->library_script_users.clear(); + #ifndef NO_THREADS memdelete(mutex); #endif @@ -896,7 +931,7 @@ Ref<Script> NativeScriptLanguage::get_template(const String &p_class_name, const return Ref<NativeScript>(s); } bool NativeScriptLanguage::validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path, List<String> *r_functions) const { - return false; + return true; } Script *NativeScriptLanguage::create_script() const { @@ -1050,6 +1085,11 @@ void NativeScriptLanguage::unregister_script(NativeScript *script) { void NativeScriptLanguage::call_libraries_cb(const StringName &name) { // library_gdnatives is modified only from the main thread, so it's safe not to use mutex here for (Map<String, Ref<GDNative> >::Element *L = library_gdnatives.front(); L; L = L->next()) { + + if (L->get().is_null()) { + continue; + } + if (L->get()->is_initialized()) { void *proc_ptr; @@ -1107,10 +1147,20 @@ void NativeReloadNode::_notification(int p_what) { #ifndef NO_THREADS MutexLock lock(NSL->mutex); #endif - NSL->_unload_stuff(); + NSL->_unload_stuff(true); for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) { - L->get()->terminate(); + Ref<GDNative> gdn = L->get(); + + if (gdn.is_null()) { + continue; + } + + if (!gdn->get_library()->is_reloadable()) { + continue; + } + + gdn->terminate(); NSL->library_classes.erase(L->key()); } @@ -1128,21 +1178,27 @@ void NativeReloadNode::_notification(int p_what) { Set<StringName> libs_to_remove; for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) { - if (!L->get()->initialize()) { + Ref<GDNative> gdn = L->get(); + + if (gdn.is_null()) { + continue; + } + + if (!gdn->get_library()->is_reloadable()) { + continue; + } + + if (!gdn->initialize()) { libs_to_remove.insert(L->key()); continue; } NSL->library_classes.insert(L->key(), Map<StringName, NativeScriptDesc>()); - void *args[1] = { - (void *)&L->key() - }; - // here the library registers all the classes and stuff. void *proc_ptr; - Error err = L->get()->get_symbol(L->get()->get_library()->get_symbol_prefix() + "nativescript_init", proc_ptr); + Error err = gdn->get_symbol(gdn->get_library()->get_symbol_prefix() + "nativescript_init", proc_ptr); if (err != OK) { ERR_PRINT(String("No godot_nativescript_init in \"" + L->key() + "\" found").utf8().get_data()); } else { diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h index 5eefdf1567..ac94c84bc4 100644 --- a/modules/gdnative/nativescript/nativescript.h +++ b/modules/gdnative/nativescript/nativescript.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NATIVE_SCRIPT_H #define NATIVE_SCRIPT_H @@ -204,7 +205,7 @@ class NativeScriptLanguage : public ScriptLanguage { private: static NativeScriptLanguage *singleton; - void _unload_stuff(); + void _unload_stuff(bool p_reload = false); #ifndef NO_THREADS Mutex *mutex; diff --git a/modules/gdnative/nativescript/register_types.cpp b/modules/gdnative/nativescript/register_types.cpp index d7d2c11d54..cb55a13b3e 100644 --- a/modules/gdnative/nativescript/register_types.cpp +++ b/modules/gdnative/nativescript/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "io/resource_loader.h" diff --git a/modules/gdnative/nativescript/register_types.h b/modules/gdnative/nativescript/register_types.h index 66cd4c33bb..7389010f8e 100644 --- a/modules/gdnative/nativescript/register_types.h +++ b/modules/gdnative/nativescript/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_nativescript_types(); void unregister_nativescript_types(); diff --git a/modules/gdnative/pluginscript/pluginscript_instance.cpp b/modules/gdnative/pluginscript/pluginscript_instance.cpp index c9e7c60399..931ab0bfe4 100644 --- a/modules/gdnative/pluginscript/pluginscript_instance.cpp +++ b/modules/gdnative/pluginscript/pluginscript_instance.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -84,8 +84,9 @@ Variant PluginScriptInstance::call(const StringName &p_method, const Variant **p godot_variant ret = _desc->call_method( _data, (godot_string_name *)&p_method, (const godot_variant **)p_args, p_argcount, (godot_variant_call_error *)&r_error); - Variant *var_ret = (Variant *)&ret; - return *var_ret; + Variant var_ret = *(Variant *)&ret; + godot_variant_destroy(&ret); + return var_ret; } #if 0 // TODO: Don't rely on default implementations provided by ScriptInstance ? diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h index 7848739d9b..3c7b360ad9 100644 --- a/modules/gdnative/pluginscript/pluginscript_instance.h +++ b/modules/gdnative/pluginscript/pluginscript_instance.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ diff --git a/modules/gdnative/pluginscript/pluginscript_language.cpp b/modules/gdnative/pluginscript/pluginscript_language.cpp index 382b28a0bb..8018178bd5 100644 --- a/modules/gdnative/pluginscript/pluginscript_language.cpp +++ b/modules/gdnative/pluginscript/pluginscript_language.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -45,7 +45,11 @@ void PluginScriptLanguage::init() { } String PluginScriptLanguage::get_type() const { - return String(_desc.type); + // We should use _desc.type here, however the returned type is used to + // query ClassDB which would complain given the type is not registered + // from his point of view... + // To solve this we just use a more generic (but present in ClassDB) type. + return String("PluginScript"); } String PluginScriptLanguage::get_extension() const { @@ -99,6 +103,7 @@ Ref<Script> PluginScriptLanguage::get_template(const String &p_class_name, const if (_desc.get_template_source_code) { godot_string src = _desc.get_template_source_code(_data, (godot_string *)&p_class_name, (godot_string *)&p_base_class_name); script->set_source_code(*(String *)&src); + godot_string_destroy(&src); } return script; } @@ -168,7 +173,7 @@ Error PluginScriptLanguage::complete_code(const String &p_code, const String &p_ for (int i = 0; i < options.size(); i++) { r_options->push_back(String(options[i])); } - Error err = *(Error *)tmp; + Error err = *(Error *)&tmp; return err; } return ERR_UNAVAILABLE; diff --git a/modules/gdnative/pluginscript/pluginscript_language.h b/modules/gdnative/pluginscript/pluginscript_language.h index 5bbd3507e3..709345885b 100644 --- a/modules/gdnative/pluginscript/pluginscript_language.h +++ b/modules/gdnative/pluginscript/pluginscript_language.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ diff --git a/modules/gdnative/pluginscript/pluginscript_loader.cpp b/modules/gdnative/pluginscript/pluginscript_loader.cpp index 62ba41a24e..acba297fa0 100644 --- a/modules/gdnative/pluginscript/pluginscript_loader.cpp +++ b/modules/gdnative/pluginscript/pluginscript_loader.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ diff --git a/modules/gdnative/pluginscript/pluginscript_loader.h b/modules/gdnative/pluginscript/pluginscript_loader.h index 5e59d25d75..9276ea3ef9 100644 --- a/modules/gdnative/pluginscript/pluginscript_loader.h +++ b/modules/gdnative/pluginscript/pluginscript_loader.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ diff --git a/modules/gdnative/pluginscript/pluginscript_script.cpp b/modules/gdnative/pluginscript/pluginscript_script.cpp index 876719820b..5ae7926f1b 100644 --- a/modules/gdnative/pluginscript/pluginscript_script.cpp +++ b/modules/gdnative/pluginscript/pluginscript_script.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -131,13 +131,10 @@ ScriptInstance *PluginScript::instance_create(Object *p_this) { #endif } - PluginScript *top = this; - // TODO: can be optimized by storing a PluginScript::_base_parent direct pointer - while (top->_ref_base_parent.is_valid()) - top = top->_ref_base_parent.ptr(); - if (top->_native_parent) { - if (!ClassDB::is_parent_class(p_this->get_class_name(), top->_native_parent)) { - String msg = "Script inherits from native type '" + String(top->_native_parent) + "', so it can't be instanced in object of type: '" + p_this->get_class() + "'"; + StringName base_type = get_instance_base_type(); + if (base_type) { + if (!ClassDB::is_parent_class(p_this->get_class_name(), base_type)) { + String msg = "Script inherits from native type '" + String(base_type) + "', so it can't be instanced in object of type: '" + p_this->get_class() + "'"; // TODO: implement PluginscriptLanguage::debug_break_parse // if (ScriptDebugger::get_singleton()) { // _language->debug_break_parse(get_path(), 0, msg); @@ -210,29 +207,31 @@ Error PluginScript::reload(bool p_keep_state) { // TODO: GDscript uses `ScriptDebugger` here to jump into the parsing error return err; } + + // Script's parent is passed as base_name which can make reference to a + // ClassDB name (i.e. `Node2D`) or a resource path (i.e. `res://foo/bar.gd`) + StringName *base_name = (StringName *)&manifest.base; + if (*base_name) { + + if (ClassDB::class_exists(*base_name)) { + _native_parent = *base_name; + } else { + Ref<Script> res = ResourceLoader::load(*base_name); + if (res.is_valid()) { + _ref_base_parent = res; + } else { + String name = *(StringName *)&manifest.name; + ERR_EXPLAIN(_path + ": Script '" + name + "' has an invalid parent '" + *base_name + "'."); + ERR_FAIL_V(ERR_PARSE_ERROR); + } + } + } + _valid = true; // Use the manifest to configure this script object _data = manifest.data; _name = *(StringName *)&manifest.name; _tool = manifest.is_tool; - // Base name is either another PluginScript or a regular class accessible - // through ClassDB - StringName *base_name = (StringName *)&manifest.base; - for (SelfList<PluginScript> *e = _language->_script_list.first(); e != NULL; e = e->next()) { - if (e->self()->_name == *base_name) { - // Found you, base is a PluginScript ! - _ref_base_parent = Ref<PluginScript>(e->self()); - break; - } - } - if (!_ref_base_parent.is_valid()) { - // Base is a native ClassDB - if (!ClassDB::class_exists(*base_name)) { - ERR_EXPLAIN("Unknown script '" + String(_name) + "' parent '" + String(*base_name) + "'."); - ERR_FAIL_V(ERR_PARSE_ERROR); - } - _native_parent = *base_name; - } Dictionary *members = (Dictionary *)&manifest.member_lines; for (const Variant *key = members->next(); key != NULL; key = members->next(key)) { diff --git a/modules/gdnative/pluginscript/pluginscript_script.h b/modules/gdnative/pluginscript/pluginscript_script.h index 9928e115ea..6729eecb32 100644 --- a/modules/gdnative/pluginscript/pluginscript_script.h +++ b/modules/gdnative/pluginscript/pluginscript_script.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -53,7 +53,7 @@ private: bool _tool; bool _valid; - Ref<PluginScript> _ref_base_parent; + Ref<Script> _ref_base_parent; StringName _native_parent; SelfList<PluginScript> _script_list; diff --git a/modules/gdnative/pluginscript/register_types.cpp b/modules/gdnative/pluginscript/register_types.cpp index b7c8b6f536..8888f9e157 100644 --- a/modules/gdnative/pluginscript/register_types.cpp +++ b/modules/gdnative/pluginscript/register_types.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "core/project_settings.h" diff --git a/modules/gdnative/pluginscript/register_types.h b/modules/gdnative/pluginscript/register_types.h index be2b1ca4c8..76651aa986 100644 --- a/modules/gdnative/pluginscript/register_types.h +++ b/modules/gdnative/pluginscript/register_types.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_pluginscript_types(); void unregister_pluginscript_types(); diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp index 21330dfefd..a0b6fbeb75 100644 --- a/modules/gdnative/register_types.cpp +++ b/modules/gdnative/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "gdnative/gdnative.h" diff --git a/modules/gdnative/register_types.h b/modules/gdnative/register_types.h index 39d47dccb0..4549687f55 100644 --- a/modules/gdnative/register_types.h +++ b/modules/gdnative/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_gdnative_types(); void unregister_gdnative_types(); diff --git a/modules/gdscript/doc_classes/GDScript.xml b/modules/gdscript/doc_classes/GDScript.xml index cc617c5c67..59cb00e3f6 100644 --- a/modules/gdscript/doc_classes/GDScript.xml +++ b/modules/gdscript/doc_classes/GDScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GDScript" inherits="Script" category="Core" version="3.0-beta"> +<class name="GDScript" inherits="Script" category="Core" version="3.0-stable"> <brief_description> A script implemented in the GDScript programming language. </brief_description> @@ -8,6 +8,7 @@ [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> + http://docs.godotengine.org/en/3.0/getting_started/scripting/gdscript/index.html </tutorials> <demos> </demos> diff --git a/modules/gdscript/doc_classes/GDScriptFunctionState.xml b/modules/gdscript/doc_classes/GDScriptFunctionState.xml index 465a4f438b..8510136f68 100644 --- a/modules/gdscript/doc_classes/GDScriptFunctionState.xml +++ b/modules/gdscript/doc_classes/GDScriptFunctionState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GDScriptFunctionState" inherits="Reference" category="Core" version="3.0-beta"> +<class name="GDScriptFunctionState" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> State of a function call after yielding. </brief_description> diff --git a/modules/gdscript/doc_classes/GDScriptNativeClass.xml b/modules/gdscript/doc_classes/GDScriptNativeClass.xml index 948254e0ad..48826ec1e0 100644 --- a/modules/gdscript/doc_classes/GDScriptNativeClass.xml +++ b/modules/gdscript/doc_classes/GDScriptNativeClass.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GDScriptNativeClass" inherits="Reference" category="Core" version="3.0-beta"> +<class name="GDScriptNativeClass" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 11c13ce2ea..4e3ee4d22c 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript.h" #include "engine.h" @@ -704,7 +705,7 @@ bool GDScript::_set(const StringName &p_name, const Variant &p_value) { void GDScript::_get_property_list(List<PropertyInfo> *p_properties) const { - p_properties->push_back(PropertyInfo(Variant::STRING, "script/source", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_properties->push_back(PropertyInfo(Variant::STRING, "script/source", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } void GDScript::_bind_methods() { diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h index d669fd6664..9566e3b32e 100644 --- a/modules/gdscript/gdscript.h +++ b/modules/gdscript/gdscript.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDSCRIPT_H #define GDSCRIPT_H @@ -348,7 +349,9 @@ public: csi.resize(_debug_call_stack_pos); for (int i = 0; i < _debug_call_stack_pos; i++) { csi[_debug_call_stack_pos - i - 1].line = _call_stack[i].line ? *_call_stack[i].line : 0; - csi[_debug_call_stack_pos - i - 1].script = Ref<GDScript>(_call_stack[i].function->get_script()); + if (_call_stack[i].function) + csi[_debug_call_stack_pos - i - 1].func = _call_stack[i].function->get_name(); + csi[_debug_call_stack_pos - i - 1].file = _call_stack[i].function->get_script()->get_path(); } return csi; } diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index 360cce9ca0..1649fb52f2 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript_compiler.h" #include "gdscript.h" @@ -36,6 +37,9 @@ bool GDScriptCompiler::_is_class_member_property(CodeGen &codegen, const StringN if (!codegen.function_node || codegen.function_node->_static) return false; + if (codegen.stack_identifiers.has(p_name)) + return false; //shadowed + return _is_class_member_property(codegen.script, p_name); } @@ -183,6 +187,14 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser:: StringName identifier = in->name; + // TRY STACK! + if (!p_initializer && codegen.stack_identifiers.has(identifier)) { + + int pos = codegen.stack_identifiers[identifier]; + return pos | (GDScriptFunction::ADDR_TYPE_STACK_VARIABLE << GDScriptFunction::ADDR_BITS); + } + + // TRY CLASS MEMBER if (_is_class_member_property(codegen, identifier)) { //get property codegen.opcodes.push_back(GDScriptFunction::OPCODE_GET_MEMBER); // perform operator @@ -193,12 +205,6 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser:: return dst_addr; } - // TRY STACK! - if (!p_initializer && codegen.stack_identifiers.has(identifier)) { - - int pos = codegen.stack_identifiers[identifier]; - return pos | (GDScriptFunction::ADDR_TYPE_STACK_VARIABLE << GDScriptFunction::ADDR_BITS); - } //TRY MEMBERS! if (!codegen.function_node || !codegen.function_node->_static) { @@ -1335,10 +1341,12 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Blo const GDScriptParser::LocalVarNode *lv = static_cast<const GDScriptParser::LocalVarNode *>(s); - if (_is_class_member_property(codegen, lv->name)) { - _set_error("Name for local variable '" + String(lv->name) + "' can't shadow class property of the same name.", lv); - return ERR_ALREADY_EXISTS; - } + // since we are using properties now for most class access, allow shadowing of class members to make user's life easier. + // + //if (_is_class_member_property(codegen, lv->name)) { + // _set_error("Name for local variable '" + String(lv->name) + "' can't shadow class property of the same name.", lv); + // return ERR_ALREADY_EXISTS; + //} codegen.add_stack_identifier(lv->name, p_stack_level++); codegen.alloc_stack(p_stack_level); @@ -1375,10 +1383,13 @@ Error GDScriptCompiler::_parse_function(GDScript *p_script, const GDScriptParser if (p_func) { for (int i = 0; i < p_func->arguments.size(); i++) { - if (_is_class_member_property(p_script, p_func->arguments[i])) { - _set_error("Name for argument '" + String(p_func->arguments[i]) + "' can't shadow class property of the same name.", p_func); - return ERR_ALREADY_EXISTS; - } + // since we are using properties now for most class access, allow shadowing of class members to make user's life easier. + // + //if (_is_class_member_property(p_script, p_func->arguments[i])) { + // _set_error("Name for argument '" + String(p_func->arguments[i]) + "' can't shadow class property of the same name.", p_func); + // return ERR_ALREADY_EXISTS; + //} + codegen.add_stack_identifier(p_func->arguments[i], i); #ifdef TOOLS_ENABLED argnames.push_back(p_func->arguments[i]); diff --git a/modules/gdscript/gdscript_compiler.h b/modules/gdscript/gdscript_compiler.h index 4b35898bb0..62aafdbe01 100644 --- a/modules/gdscript/gdscript_compiler.h +++ b/modules/gdscript/gdscript_compiler.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDSCRIPT_COMPILER_H #define GDSCRIPT_COMPILER_H diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index 9dcaaf828f..c4269ab4a9 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript.h" #include "core/engine.h" @@ -490,8 +491,8 @@ static Ref<Reference> _get_parent_class(GDScriptCompletionContext &context) { path = context.base_path.plus_file(path); } - if (ScriptCodeCompletionCache::get_sigleton()) - script = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(path); + if (ScriptCodeCompletionCache::get_singleton()) + script = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(path); else script = ResourceLoader::load(path); @@ -764,8 +765,8 @@ static bool _guess_expression_type(GDScriptCompletionContext &context, const GDS //print_line("is a script"); Ref<Script> scr; - if (ScriptCodeCompletionCache::get_sigleton()) - scr = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(script); + if (ScriptCodeCompletionCache::get_singleton()) + scr = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(script); else scr = ResourceLoader::load(script); @@ -1300,8 +1301,8 @@ static bool _guess_identifier_type(GDScriptCompletionContext &context, int p_lin //print_line("is a script"); Ref<Script> scr; - if (ScriptCodeCompletionCache::get_sigleton()) - scr = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(script); + if (ScriptCodeCompletionCache::get_singleton()) + scr = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(script); else scr = ResourceLoader::load(script); @@ -2449,8 +2450,10 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base } break; case GDScriptParser::COMPLETION_RESOURCE_PATH: { - if (EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths")) + if (EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths")) { get_directory_contents(EditorFileSystem::get_singleton()->get_filesystem(), options); + r_forced = true; + } } break; case GDScriptParser::COMPLETION_ASSIGN: { #if defined(DEBUG_METHODS_ENABLED) && defined(TOOLS_ENABLED) diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp index d97f355400..a2f449909f 100644 --- a/modules/gdscript/gdscript_function.cpp +++ b/modules/gdscript/gdscript_function.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript_function.h" #include "gdscript.h" @@ -605,7 +606,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a #ifdef DEBUG_ENABLED if (!valid) { if (src->has_method(*index)) { - err_text = "Invalid get index '" + index->operator String() + "' (on base: '" + _get_var_type(src) + "'). Did you mean '." + index->operator String() + "()' ?"; + err_text = "Invalid get index '" + index->operator String() + "' (on base: '" + _get_var_type(src) + "'). Did you mean '." + index->operator String() + "()' or funcref(obj, \"" + index->operator String() + "\") ?"; } else { err_text = "Invalid get index '" + index->operator String() + "' (on base: '" + _get_var_type(src) + "')."; } diff --git a/modules/gdscript/gdscript_function.h b/modules/gdscript/gdscript_function.h index e499820954..9310444c7a 100644 --- a/modules/gdscript/gdscript_function.h +++ b/modules/gdscript/gdscript_function.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDSCRIPT_FUNCTION_H #define GDSCRIPT_FUNCTION_H diff --git a/modules/gdscript/gdscript_functions.cpp b/modules/gdscript/gdscript_functions.cpp index cae3bcadfe..eceec27814 100644 --- a/modules/gdscript/gdscript_functions.cpp +++ b/modules/gdscript/gdscript_functions.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript_functions.h" #include "class_db.h" @@ -1482,7 +1483,7 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) { return mi; } break; case MATH_INVERSE_LERP: { - MethodInfo mi("inverse_lerp", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "value")); + MethodInfo mi("inverse_lerp", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "weight")); mi.return_val.type = Variant::REAL; return mi; } break; @@ -1578,12 +1579,12 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) { return mi; } break; case LOGIC_CLAMP: { - MethodInfo mi("clamp", PropertyInfo(Variant::REAL, "val"), PropertyInfo(Variant::REAL, "min"), PropertyInfo(Variant::REAL, "max")); + MethodInfo mi("clamp", PropertyInfo(Variant::REAL, "value"), PropertyInfo(Variant::REAL, "min"), PropertyInfo(Variant::REAL, "max")); mi.return_val.type = Variant::REAL; return mi; } break; case LOGIC_NEAREST_PO2: { - MethodInfo mi("nearest_po2", PropertyInfo(Variant::INT, "val")); + MethodInfo mi("nearest_po2", PropertyInfo(Variant::INT, "value")); mi.return_val.type = Variant::INT; return mi; } break; diff --git a/modules/gdscript/gdscript_functions.h b/modules/gdscript/gdscript_functions.h index 5bbd848339..1d54006084 100644 --- a/modules/gdscript/gdscript_functions.h +++ b/modules/gdscript/gdscript_functions.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDSCRIPT_FUNCTIONS_H #define GDSCRIPT_FUNCTIONS_H diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 4b3feb49b9..c67214638d 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript_parser.h" #include "gdscript.h" @@ -457,9 +458,9 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s if (!validating) { //this can be too slow for just validating code - if (for_completion && ScriptCodeCompletionCache::get_sigleton()) { - res = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(path); - } else { + if (for_completion && ScriptCodeCompletionCache::get_singleton()) { + res = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(path); + } else { // essential; see issue 15902 res = ResourceLoader::load(path); } if (!res.is_valid()) { diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h index 1b851434db..485ba1263d 100644 --- a/modules/gdscript/gdscript_parser.h +++ b/modules/gdscript/gdscript_parser.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDSCRIPT_PARSER_H #define GDSCRIPT_PARSER_H diff --git a/modules/gdscript/gdscript_tokenizer.cpp b/modules/gdscript/gdscript_tokenizer.cpp index 281aa6ca44..6a844cd651 100644 --- a/modules/gdscript/gdscript_tokenizer.cpp +++ b/modules/gdscript/gdscript_tokenizer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gdscript_tokenizer.h" #include "gdscript_functions.h" diff --git a/modules/gdscript/gdscript_tokenizer.h b/modules/gdscript/gdscript_tokenizer.h index 9a09058cf3..b020c85199 100644 --- a/modules/gdscript/gdscript_tokenizer.h +++ b/modules/gdscript/gdscript_tokenizer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDSCRIPT_TOKENIZER_H #define GDSCRIPT_TOKENIZER_H diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp index 50f5da9995..95efcda80f 100644 --- a/modules/gdscript/register_types.cpp +++ b/modules/gdscript/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "gdscript.h" diff --git a/modules/gdscript/register_types.h b/modules/gdscript/register_types.h index 21ad85f12e..2b88a67c7e 100644 --- a/modules/gdscript/register_types.h +++ b/modules/gdscript/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_gdscript_types(); void unregister_gdscript_types(); diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml index e9bb90631d..44685220b3 100644 --- a/modules/gridmap/doc_classes/GridMap.xml +++ b/modules/gridmap/doc_classes/GridMap.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GridMap" inherits="Spatial" category="Core" version="3.0-beta"> +<class name="GridMap" inherits="Spatial" category="Core" version="3.0-stable"> <brief_description> Node for 3D tile-based maps. </brief_description> @@ -10,6 +10,7 @@ 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> + http://docs.godotengine.org/en/3.0/tutorials/3d/using_gridmaps.html </tutorials> <demos> </demos> @@ -67,32 +68,20 @@ The orientation of the cell at the grid-based X, Y and Z coordinates. -1 is retuned if the cell is empty. </description> </method> - <method name="get_cell_size" qualifiers="const"> - <return type="Vector3"> - </return> - <description> - The dimensions of the grid's cells. - </description> - </method> - <method name="get_center_x" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether or not grid items are centered on the X axis. - </description> - </method> - <method name="get_center_y" qualifiers="const"> + <method name="get_collision_layer_bit" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="bit" type="int"> + </argument> <description> - Returns whether or not grid items are centered on the Y axis. </description> </method> - <method name="get_center_z" qualifiers="const"> + <method name="get_collision_mask_bit" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="bit" type="int"> + </argument> <description> - Returns whether or not grid items are centered on the Z axis. </description> </method> <method name="get_meshes"> @@ -102,20 +91,6 @@ 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_octant_size" qualifiers="const"> - <return type="int"> - </return> - <description> - The size of each octant measured in number of cells. This applies to all three axis. - </description> - </method> - <method name="get_theme" qualifiers="const"> - <return type="MeshLibrary"> - </return> - <description> - The assigned [MeshLibrary]. - </description> - </method> <method name="get_used_cells" qualifiers="const"> <return type="Array"> </return> @@ -172,42 +147,6 @@ Optionally, the item's orientation can be passed. </description> </method> - <method name="set_cell_size"> - <return type="void"> - </return> - <argument index="0" name="size" type="Vector3"> - </argument> - <description> - Sets the height, width and depth of the grid's cells. - </description> - </method> - <method name="set_center_x"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set grid items to be centered on the X axis. By default it is enabled. - </description> - </method> - <method name="set_center_y"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set grid items to be centered on the Y axis. By default it is enabled. - </description> - </method> - <method name="set_center_z"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set grid items to be centered on the Z axis. By default it is enabled. - </description> - </method> <method name="set_clip"> <return type="void"> </return> @@ -222,22 +161,24 @@ <description> </description> </method> - <method name="set_octant_size"> + <method name="set_collision_layer_bit"> <return type="void"> </return> - <argument index="0" name="size" type="int"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> </argument> <description> - Sets the size for each octant measured in number of cells. This applies to all three axis. </description> </method> - <method name="set_theme"> + <method name="set_collision_mask_bit"> <return type="void"> </return> - <argument index="0" name="theme" type="MeshLibrary"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> </argument> <description> - Sets the collection of meshes for the map. </description> </method> <method name="world_to_map" qualifiers="const"> @@ -249,6 +190,32 @@ </description> </method> </methods> + <members> + <member name="cell_center_x" type="bool" setter="set_center_x" getter="get_center_x"> + If [code]true[/code] grid items are centered on the X axis. + </member> + <member name="cell_center_y" type="bool" setter="set_center_y" getter="get_center_y"> + If [code]true[/code] grid items are centered on the Y axis. + </member> + <member name="cell_center_z" type="bool" setter="set_center_z" getter="get_center_z"> + If [code]true[/code] grid items are centered on the Z axis. + </member> + <member name="cell_octant_size" type="int" setter="set_octant_size" getter="get_octant_size"> + 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"> + </member> + <member name="cell_size" type="Vector3" setter="set_cell_size" getter="get_cell_size"> + The dimensions of the grid's cells. + </member> + <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer"> + </member> + <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask"> + </member> + <member name="theme" type="MeshLibrary" setter="set_theme" getter="get_theme"> + The assigned [MeshLibrary]. + </member> + </members> <constants> <constant name="INVALID_CELL_ITEM" value="-1"> Invalid cell item that can be used in [method set_cell_item] to clear cells (or represent an empty cell in [method get_cell_item]). diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp index bd37118847..234a59e516 100644 --- a/modules/gridmap/grid_map.cpp +++ b/modules/gridmap/grid_map.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "grid_map.h" #include "message_queue.h" #include "scene/3d/light.h" @@ -42,28 +43,7 @@ bool GridMap::_set(const StringName &p_name, const Variant &p_value) { String name = p_name; - if (name == "theme") { - - set_theme(p_value); - } else if (name == "cell_size") { - if (p_value.get_type() == Variant::INT || p_value.get_type() == Variant::REAL) { - //compatibility - float cs = p_value; - set_cell_size(Vector3(cs, cs, cs)); - } else { - set_cell_size(p_value); - } - } else if (name == "cell_octant_size") { - set_octant_size(p_value); - } else if (name == "cell_center_x") { - set_center_x(p_value); - } else if (name == "cell_center_y") { - set_center_y(p_value); - } else if (name == "cell_center_z") { - set_center_z(p_value); - } else if (name == "cell_scale") { - set_cell_scale(p_value); - /* } else if (name=="cells") { + /* } else if (name=="cells") { PoolVector<int> cells = p_value; int amount=cells.size(); PoolVector<int>::Read r = cells.read(); @@ -80,7 +60,7 @@ bool GridMap::_set(const StringName &p_name, const Variant &p_value) { } _recreate_octant_data();*/ - } else if (name == "data") { + if (name == "data") { Dictionary d = p_value; @@ -133,21 +113,7 @@ bool GridMap::_get(const StringName &p_name, Variant &r_ret) const { String name = p_name; - if (name == "theme") { - r_ret = get_theme(); - } else if (name == "cell_size") { - r_ret = get_cell_size(); - } else if (name == "cell_octant_size") { - r_ret = get_octant_size(); - } else if (name == "cell_center_x") { - r_ret = get_center_x(); - } else if (name == "cell_center_y") { - r_ret = get_center_y(); - } else if (name == "cell_center_z") { - r_ret = get_center_z(); - } else if (name == "cell_scale") { - r_ret = cell_scale; - } else if (name == "data") { + if (name == "data") { Dictionary d; @@ -183,14 +149,6 @@ bool GridMap::_get(const StringName &p_name, Variant &r_ret) const { void GridMap::_get_property_list(List<PropertyInfo> *p_list) const { - p_list->push_back(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary")); - p_list->push_back(PropertyInfo(Variant::NIL, "Cell", PROPERTY_HINT_NONE, "cell_", PROPERTY_USAGE_GROUP)); - p_list->push_back(PropertyInfo(Variant::VECTOR3, "cell_size")); - p_list->push_back(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1")); - p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_x")); - p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_y")); - p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_z")); - p_list->push_back(PropertyInfo(Variant::REAL, "cell_scale")); if (baked_meshes.size()) { p_list->push_back(PropertyInfo(Variant::ARRAY, "baked_meshes", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE)); } @@ -198,6 +156,58 @@ void GridMap::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE)); } +void GridMap::set_collision_layer(uint32_t p_layer) { + + collision_layer = p_layer; + _reset_physic_bodies_collision_filters(); +} + +uint32_t GridMap::get_collision_layer() const { + + return collision_layer; +} + +void GridMap::set_collision_mask(uint32_t p_mask) { + + collision_mask = p_mask; + _reset_physic_bodies_collision_filters(); +} + +uint32_t GridMap::get_collision_mask() const { + + return collision_mask; +} + +void GridMap::set_collision_mask_bit(int p_bit, bool p_value) { + + uint32_t mask = get_collision_mask(); + if (p_value) + mask |= 1 << p_bit; + else + mask &= ~(1 << p_bit); + set_collision_mask(mask); +} + +bool GridMap::get_collision_mask_bit(int p_bit) const { + + return get_collision_mask() & (1 << p_bit); +} + +void GridMap::set_collision_layer_bit(int p_bit, bool p_value) { + + uint32_t mask = get_collision_layer(); + if (p_value) + mask |= 1 << p_bit; + else + mask &= ~(1 << p_bit); + set_collision_layer(mask); +} + +bool GridMap::get_collision_layer_bit(int p_bit) const { + + return get_collision_layer() & (1 << p_bit); +} + void GridMap::set_theme(const Ref<MeshLibrary> &p_theme) { if (!theme.is_null()) @@ -311,6 +321,8 @@ void GridMap::set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot) { g->dirty = true; g->static_body = PhysicsServer::get_singleton()->body_create(PhysicsServer::BODY_MODE_STATIC); PhysicsServer::get_singleton()->body_attach_object_instance_id(g->static_body, get_instance_id()); + PhysicsServer::get_singleton()->body_set_collision_layer(g->static_body, collision_layer); + PhysicsServer::get_singleton()->body_set_collision_mask(g->static_body, collision_mask); SceneTree *st = SceneTree::get_singleton(); if (st && st->is_debugging_collisions_hint()) { @@ -575,6 +587,13 @@ bool GridMap::_octant_update(const OctantKey &p_key) { return false; } +void GridMap::_reset_physic_bodies_collision_filters() { + for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) { + PhysicsServer::get_singleton()->body_set_collision_layer(E->get()->static_body, collision_layer); + PhysicsServer::get_singleton()->body_set_collision_mask(E->get()->static_body, collision_mask); + } +} + void GridMap::_octant_enter_world(const OctantKey &p_key) { ERR_FAIL_COND(!octant_map.has(p_key)); @@ -815,12 +834,27 @@ void GridMap::_update_octants_callback() { void GridMap::_bind_methods() { + ClassDB::bind_method(D_METHOD("set_collision_layer", "layer"), &GridMap::set_collision_layer); + ClassDB::bind_method(D_METHOD("get_collision_layer"), &GridMap::get_collision_layer); + + ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &GridMap::set_collision_mask); + ClassDB::bind_method(D_METHOD("get_collision_mask"), &GridMap::get_collision_mask); + + ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &GridMap::set_collision_mask_bit); + ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &GridMap::get_collision_mask_bit); + + 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); + ClassDB::bind_method(D_METHOD("set_theme", "theme"), &GridMap::set_theme); ClassDB::bind_method(D_METHOD("get_theme"), &GridMap::get_theme); ClassDB::bind_method(D_METHOD("set_cell_size", "size"), &GridMap::set_cell_size); ClassDB::bind_method(D_METHOD("get_cell_size"), &GridMap::get_cell_size); + ClassDB::bind_method(D_METHOD("set_cell_scale", "scale"), &GridMap::set_cell_scale); + ClassDB::bind_method(D_METHOD("get_cell_scale"), &GridMap::get_cell_scale); + ClassDB::bind_method(D_METHOD("set_octant_size", "size"), &GridMap::set_octant_size); ClassDB::bind_method(D_METHOD("get_octant_size"), &GridMap::get_octant_size); @@ -855,6 +889,18 @@ 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)); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"), "set_theme", "get_theme"); + ADD_GROUP("Cell", "cell_"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cell_size"), "set_cell_size", "get_cell_size"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1"), "set_octant_size", "get_octant_size"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_x"), "set_center_x", "get_center_x"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_y"), "set_center_y", "get_center_y"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_z"), "set_center_z", "get_center_z"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "cell_scale"), "set_cell_scale", "get_cell_scale"); + ADD_GROUP("Collision", "collision_"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_layer", "get_collision_layer"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask"); + BIND_CONSTANT(INVALID_CELL_ITEM); } @@ -1067,6 +1113,9 @@ RID GridMap::get_bake_mesh_instance(int p_idx) { GridMap::GridMap() { + collision_layer = 1; + collision_mask = 1; + cell_size = Vector3(2, 2, 2); octant_size = 8; awaiting_update = false; diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h index 18a9551edf..b17fe43ae8 100644 --- a/modules/gridmap/grid_map.h +++ b/modules/gridmap/grid_map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GRID_MAP_H #define GRID_MAP_H @@ -136,6 +137,9 @@ class GridMap : public Spatial { OctantKey() { key = 0; } }; + uint32_t collision_layer; + uint32_t collision_mask; + Transform last_transform; bool _in_tree; @@ -173,6 +177,7 @@ class GridMap : public Spatial { return Vector3(p_key.x, p_key.y, p_key.z) * cell_size * octant_size; } + void _reset_physic_bodies_collision_filters(); void _octant_enter_world(const OctantKey &p_key); void _octant_exit_world(const OctantKey &p_key); bool _octant_update(const OctantKey &p_key); @@ -210,6 +215,18 @@ public: INVALID_CELL_ITEM = -1 }; + void set_collision_layer(uint32_t p_layer); + uint32_t get_collision_layer() const; + + void set_collision_mask(uint32_t p_mask); + uint32_t get_collision_mask() const; + + void set_collision_layer_bit(int p_bit, bool p_value); + bool get_collision_layer_bit(int p_bit) const; + + void set_collision_mask_bit(int p_bit, bool p_value); + bool get_collision_mask_bit(int p_bit) const; + void set_theme(const Ref<MeshLibrary> &p_theme); Ref<MeshLibrary> get_theme() const; diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp index dc7dbb0b0d..7b7bc0fa2a 100644 --- a/modules/gridmap/grid_map_editor_plugin.cpp +++ b/modules/gridmap/grid_map_editor_plugin.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "grid_map_editor_plugin.h" #include "editor/editor_scale.h" #include "editor/editor_settings.h" diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/grid_map_editor_plugin.h index a49b44e7a2..3fc92bf7aa 100644 --- a/modules/gridmap/grid_map_editor_plugin.h +++ b/modules/gridmap/grid_map_editor_plugin.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GRID_MAP_EDITOR_PLUGIN_H #define GRID_MAP_EDITOR_PLUGIN_H diff --git a/modules/gridmap/register_types.cpp b/modules/gridmap/register_types.cpp index 23a8d16497..a3ceea10af 100644 --- a/modules/gridmap/register_types.cpp +++ b/modules/gridmap/register_types.cpp @@ -27,6 +27,7 @@ /* 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" #ifndef _3D_DISABLED #include "class_db.h" diff --git a/modules/gridmap/register_types.h b/modules/gridmap/register_types.h index 0e19f1ce8d..4ff107bec8 100644 --- a/modules/gridmap/register_types.h +++ b/modules/gridmap/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_gridmap_types(); void unregister_gridmap_types(); diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp index 2b829ef246..3cc362b5d6 100644 --- a/modules/hdr/image_loader_hdr.cpp +++ b/modules/hdr/image_loader_hdr.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_hdr.h" #include "os/os.h" diff --git a/modules/hdr/image_loader_hdr.h b/modules/hdr/image_loader_hdr.h index 4d4edc4df7..3cce483745 100644 --- a/modules/hdr/image_loader_hdr.h +++ b/modules/hdr/image_loader_hdr.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_HDR_H #define IMAGE_LOADER_HDR_H diff --git a/modules/hdr/register_types.cpp b/modules/hdr/register_types.cpp index 469fdfc85e..8688daad69 100644 --- a/modules/hdr/register_types.cpp +++ b/modules/hdr/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_loader_hdr.h" diff --git a/modules/hdr/register_types.h b/modules/hdr/register_types.h index b3f69405f2..e064f5d945 100644 --- a/modules/hdr/register_types.h +++ b/modules/hdr/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_hdr_types(); void unregister_hdr_types(); diff --git a/modules/jpg/image_loader_jpegd.cpp b/modules/jpg/image_loader_jpegd.cpp index b90d968753..0168be3a26 100644 --- a/modules/jpg/image_loader_jpegd.cpp +++ b/modules/jpg/image_loader_jpegd.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_jpegd.h" #include "os/os.h" diff --git a/modules/jpg/image_loader_jpegd.h b/modules/jpg/image_loader_jpegd.h index b4bcb11239..3e3ac5217f 100644 --- a/modules/jpg/image_loader_jpegd.h +++ b/modules/jpg/image_loader_jpegd.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_JPG_H #define IMAGE_LOADER_JPG_H diff --git a/modules/jpg/register_types.cpp b/modules/jpg/register_types.cpp index 809c934be4..450ac065f4 100644 --- a/modules/jpg/register_types.cpp +++ b/modules/jpg/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_loader_jpegd.h" diff --git a/modules/jpg/register_types.h b/modules/jpg/register_types.h index d38fb908d3..6f10c18c12 100644 --- a/modules/jpg/register_types.h +++ b/modules/jpg/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_jpg_types(); void unregister_jpg_types(); diff --git a/modules/mobile_vr/doc_classes/MobileVRInterface.xml b/modules/mobile_vr/doc_classes/MobileVRInterface.xml index 5d3da0672e..82300e707a 100644 --- a/modules/mobile_vr/doc_classes/MobileVRInterface.xml +++ b/modules/mobile_vr/doc_classes/MobileVRInterface.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="MobileVRInterface" inherits="ARVRInterface" category="Core" version="3.0-beta"> +<class name="MobileVRInterface" inherits="ARVRInterface" category="Core" version="3.0-stable"> <brief_description> Generic mobile VR implementation </brief_description> diff --git a/modules/mobile_vr/mobile_interface.cpp b/modules/mobile_vr/mobile_interface.cpp index 4e8894f9fb..6b1c7eb279 100644 --- a/modules/mobile_vr/mobile_interface.cpp +++ b/modules/mobile_vr/mobile_interface.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -345,7 +345,7 @@ Transform MobileVRInterface::get_transform_for_eye(ARVRInterface::Eyes p_eye, co if (initialized) { float world_scale = arvr_server->get_world_scale(); - // we don't need to check for the existance of our HMD, doesn't effect our values... + // we don't need to check for the existence of our HMD, doesn't effect our values... // note * 0.01 to convert cm to m and * 0.5 as we're moving half in each direction... if (p_eye == ARVRInterface::EYE_LEFT) { transform_for_eye.origin.x = -(intraocular_dist * 0.01 * 0.5 * world_scale); diff --git a/modules/mobile_vr/mobile_interface.h b/modules/mobile_vr/mobile_interface.h index 4a2484667d..bb84281b46 100644 --- a/modules/mobile_vr/mobile_interface.h +++ b/modules/mobile_vr/mobile_interface.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MOBILE_VR_INTERFACE_H #define MOBILE_VR_INTERFACE_H diff --git a/modules/mobile_vr/register_types.cpp b/modules/mobile_vr/register_types.cpp index 6a513607fa..0655727a4a 100644 --- a/modules/mobile_vr/register_types.cpp +++ b/modules/mobile_vr/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "mobile_interface.h" diff --git a/modules/mobile_vr/register_types.h b/modules/mobile_vr/register_types.h index d9625d1bba..621f8dea80 100644 --- a/modules/mobile_vr/register_types.h +++ b/modules/mobile_vr/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_mobile_vr_types(); void unregister_mobile_vr_types(); diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index f95a3dab2d..3119869569 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "csharp_script.h" #include <mono/metadata/threads.h> @@ -175,7 +176,7 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const { "fixed", "float", "for", - "forech", + "foreach", "goto", "if", "implicit", @@ -221,14 +222,17 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const { "ushort", "using", "virtual", - "volatile", "void", + "volatile", "while", // Contextual keywords. Not reserved words, but I guess we should include // them because this seems to be used only for syntax highlighting. "add", + "alias", "ascending", + "async", + "await", "by", "descending", "dynamic", @@ -237,10 +241,10 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const { "get", "global", "group", - "in", "into", "join", "let", + "nameof", "on", "orderby", "partial", @@ -249,6 +253,7 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const { "set", "value", "var", + "when", "where", "yield", 0 @@ -444,6 +449,82 @@ String CSharpLanguage::_get_indentation() const { return "\t"; } +Vector<ScriptLanguage::StackInfo> CSharpLanguage::debug_get_current_stack_info() { + +#ifdef DEBUG_ENABLED + // Printing an error here will result in endless recursion, so we must be careful + + if (!gdmono->is_runtime_initialized() || !GDMono::get_singleton()->get_api_assembly() || !GDMonoUtils::mono_cache.corlib_cache_updated) + return Vector<StackInfo>(); + + MonoObject *stack_trace = mono_object_new(mono_domain_get(), CACHED_CLASS(System_Diagnostics_StackTrace)->get_mono_ptr()); + + MonoBoolean need_file_info = true; + void *ctor_args[1] = { &need_file_info }; + + CACHED_METHOD(System_Diagnostics_StackTrace, ctor_bool)->invoke_raw(stack_trace, ctor_args); + + Vector<StackInfo> si; + si = stack_trace_get_info(stack_trace); + + return si; +#else + return Vector<StackInfo>(); +#endif +} + +#ifdef DEBUG_ENABLED +Vector<ScriptLanguage::StackInfo> CSharpLanguage::stack_trace_get_info(MonoObject *p_stack_trace) { + + // Printing an error here could result in endless recursion, so we must be careful + + MonoObject *exc = NULL; + + GDMonoUtils::StackTrace_GetFrames st_get_frames = CACHED_METHOD_THUNK(System_Diagnostics_StackTrace, GetFrames); + MonoArray *frames = st_get_frames(p_stack_trace, &exc); + + if (exc) { + GDMonoUtils::print_unhandled_exception(exc, true /* fail silently to avoid endless recursion */); + return Vector<StackInfo>(); + } + + int frame_count = mono_array_length(frames); + + if (frame_count <= 0) + return Vector<StackInfo>(); + + GDMonoUtils::DebugUtils_StackFrameInfo get_sf_info = CACHED_METHOD_THUNK(DebuggingUtils, GetStackFrameInfo); + + Vector<StackInfo> si; + si.resize(frame_count); + + for (int i = 0; i < frame_count; i++) { + StackInfo &sif = si[i]; + MonoObject *frame = mono_array_get(frames, MonoObject *, i); + + MonoString *file_name; + int file_line_num; + MonoString *method_decl; + get_sf_info(frame, &file_name, &file_line_num, &method_decl, &exc); + + if (exc) { + GDMonoUtils::print_unhandled_exception(exc, true /* fail silently to avoid endless recursion */); + return Vector<StackInfo>(); + } + + // TODO + // what if the StackFrame method is null (method_decl is empty). should we skip this frame? + // can reproduce with a MissingMethodException on internal calls + + sif.file = GDMonoMarshal::mono_string_to_godot(file_name); + sif.line = file_line_num; + sif.func = GDMonoMarshal::mono_string_to_godot(method_decl); + } + + return si; +} +#endif + void CSharpLanguage::frame() { const Ref<MonoGCHandle> &task_scheduler_handle = GDMonoUtils::mono_cache.task_scheduler_handle; @@ -913,19 +994,23 @@ bool CSharpInstance::set(const StringName &p_name, const Variant &p_value) { ERR_FAIL_COND_V(!script.is_valid(), false); + MonoObject *mono_object = get_mono_object(); + ERR_FAIL_NULL_V(mono_object, false); + GDMonoClass *top = script->script_class; while (top && top != script->native) { GDMonoField *field = script->script_class->get_field(p_name); if (field) { - MonoObject *mono_object = get_mono_object(); - - ERR_EXPLAIN("Reference has been garbage collected?"); - ERR_FAIL_NULL_V(mono_object, false); + field->set_value_from_variant(mono_object, p_value); + return true; + } - field->set_value(mono_object, p_value); + GDMonoProperty *property = script->script_class->get_property(p_name); + if (property) { + property->set_value(mono_object, GDMonoMarshal::variant_to_mono_object(p_value)); return true; } @@ -934,16 +1019,15 @@ bool CSharpInstance::set(const StringName &p_name, const Variant &p_value) { // Call _set - Variant name = p_name; - const Variant *args[2] = { &name, &p_value }; - - MonoObject *mono_object = get_mono_object(); top = script->script_class; while (top && top != script->native) { GDMonoMethod *method = top->get_method(CACHED_STRING_NAME(_set), 2); if (method) { + Variant name = p_name; + const Variant *args[2] = { &name, &p_value }; + MonoObject *ret = method->invoke(mono_object, args); if (ret && GDMonoMarshal::unbox<MonoBoolean>(ret) == true) @@ -960,31 +1044,49 @@ bool CSharpInstance::get(const StringName &p_name, Variant &r_ret) const { ERR_FAIL_COND_V(!script.is_valid(), false); + MonoObject *mono_object = get_mono_object(); + ERR_FAIL_NULL_V(mono_object, false); + GDMonoClass *top = script->script_class; while (top && top != script->native) { GDMonoField *field = top->get_field(p_name); if (field) { - MonoObject *mono_object = get_mono_object(); + MonoObject *value = field->get_value(mono_object); + r_ret = GDMonoMarshal::mono_object_to_variant(value); + return true; + } - ERR_EXPLAIN("Reference has been garbage collected?"); - ERR_FAIL_NULL_V(mono_object, false); + GDMonoProperty *property = top->get_property(p_name); - MonoObject *value = field->get_value(mono_object); - r_ret = GDMonoMarshal::mono_object_to_variant(value, field->get_type()); + if (property) { + MonoObject *exc = NULL; + MonoObject *value = property->get_value(mono_object, &exc); + if (exc) { + r_ret = Variant(); + GDMonoUtils::print_unhandled_exception(exc); + } else { + r_ret = GDMonoMarshal::mono_object_to_variant(value); + } return true; } - // Call _get + top = top->get_parent_class(); + } + + // Call _get + top = script->script_class; + + while (top && top != script->native) { GDMonoMethod *method = top->get_method(CACHED_STRING_NAME(_get), 1); if (method) { Variant name = p_name; const Variant *args[1] = { &name }; - MonoObject *ret = method->invoke(get_mono_object(), args); + MonoObject *ret = method->invoke(mono_object, args); if (ret) { r_ret = GDMonoMarshal::mono_object_to_variant(ret); @@ -1027,7 +1129,7 @@ bool CSharpInstance::has_method(const StringName &p_method) const { GDMonoClass *top = script->script_class; while (top && top != script->native) { - if (top->has_method(p_method)) { + if (top->has_fetched_method_unknown_params(p_method)) { return true; } @@ -1041,10 +1143,13 @@ Variant CSharpInstance::call(const StringName &p_method, const Variant **p_args, MonoObject *mono_object = get_mono_object(); - ERR_FAIL_NULL_V(mono_object, Variant()); + if (!mono_object) { + r_error.error = Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL; + ERR_FAIL_V(Variant()); + } if (!script.is_valid()) - return Variant(); + ERR_FAIL_V(Variant()); GDMonoClass *top = script->script_class; @@ -1054,8 +1159,10 @@ Variant CSharpInstance::call(const StringName &p_method, const Variant **p_args, if (method) { MonoObject *return_value = method->invoke(mono_object, p_args); + r_error.error = Variant::CallError::CALL_OK; + if (return_value) { - return GDMonoMarshal::mono_object_to_variant(return_value, method->get_return_type()); + return GDMonoMarshal::mono_object_to_variant(return_value); } else { return Variant(); } @@ -1186,24 +1293,29 @@ bool CSharpInstance::refcount_decremented() { return ref_dying; } +ScriptInstance::RPCMode CSharpInstance::_member_get_rpc_mode(GDMonoClassMember *p_member) const { + + if (p_member->has_attribute(CACHED_CLASS(RemoteAttribute))) + return RPC_MODE_REMOTE; + if (p_member->has_attribute(CACHED_CLASS(SyncAttribute))) + return RPC_MODE_SYNC; + if (p_member->has_attribute(CACHED_CLASS(MasterAttribute))) + return RPC_MODE_MASTER; + if (p_member->has_attribute(CACHED_CLASS(SlaveAttribute))) + return RPC_MODE_SLAVE; + + return RPC_MODE_DISABLED; +} + ScriptInstance::RPCMode CSharpInstance::get_rpc_mode(const StringName &p_method) const { GDMonoClass *top = script->script_class; while (top && top != script->native) { - GDMonoMethod *method = top->get_method(p_method); - - if (method) { // TODO should we reject static methods? - // TODO cache result - if (method->has_attribute(CACHED_CLASS(RemoteAttribute))) - return RPC_MODE_REMOTE; - if (method->has_attribute(CACHED_CLASS(SyncAttribute))) - return RPC_MODE_SYNC; - if (method->has_attribute(CACHED_CLASS(MasterAttribute))) - return RPC_MODE_MASTER; - if (method->has_attribute(CACHED_CLASS(SlaveAttribute))) - return RPC_MODE_SLAVE; - } + GDMonoMethod *method = top->get_fetched_method_unknown_params(p_method); + + if (method && !method->is_static()) + return _member_get_rpc_mode(method); top = top->get_parent_class(); } @@ -1218,17 +1330,13 @@ ScriptInstance::RPCMode CSharpInstance::get_rset_mode(const StringName &p_variab while (top && top != script->native) { GDMonoField *field = top->get_field(p_variable); - if (field) { // TODO should we reject static fields? - // TODO cache result - if (field->has_attribute(CACHED_CLASS(RemoteAttribute))) - return RPC_MODE_REMOTE; - if (field->has_attribute(CACHED_CLASS(SyncAttribute))) - return RPC_MODE_SYNC; - if (field->has_attribute(CACHED_CLASS(MasterAttribute))) - return RPC_MODE_MASTER; - if (field->has_attribute(CACHED_CLASS(SlaveAttribute))) - return RPC_MODE_SLAVE; - } + if (field && !field->is_static()) + return _member_get_rpc_mode(field); + + GDMonoProperty *property = top->get_property(p_variable); + + if (property && !property->is_static()) + return _member_get_rpc_mode(property); top = top->get_parent_class(); } @@ -1353,7 +1461,7 @@ bool CSharpScript::_update_exports() { // We are creating a temporary new instance of the class here to get the default value // TODO Workaround. Should be replaced with IL opcodes analysis - MonoObject *tmp_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_raw()); + MonoObject *tmp_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_mono_ptr()); if (tmp_object) { CACHED_FIELD(GodotObject, ptr)->set_value_raw(tmp_object, tmp_object); // FIXME WTF is this workaround @@ -1376,65 +1484,55 @@ bool CSharpScript::_update_exports() { GDMonoClass *top = script_class; while (top && top != native) { + PropertyInfo prop_info; + bool exported; + const Vector<GDMonoField *> &fields = top->get_all_fields(); for (int i = fields.size() - 1; i >= 0; i--) { GDMonoField *field = fields[i]; - if (field->is_static()) { - if (field->has_attribute(CACHED_CLASS(ExportAttribute))) - ERR_PRINTS("Cannot export field because it is static: " + top->get_full_name() + "." + field->get_name()); - continue; - } - - String name = field->get_name(); - StringName cname = name; + if (_get_member_export(top, field, prop_info, exported)) { + StringName name = field->get_name(); - if (member_info.has(cname)) - continue; + if (exported) { + member_info[name] = prop_info; + exported_members_cache.push_front(prop_info); - ManagedType field_type = field->get_type(); - Variant::Type type = GDMonoMarshal::managed_to_variant_type(field_type); + if (tmp_object) { + exported_members_defval_cache[name] = GDMonoMarshal::mono_object_to_variant(field->get_value(tmp_object)); + } + } else { + member_info[name] = prop_info; + } + } + } - if (field->has_attribute(CACHED_CLASS(ExportAttribute))) { - // Field has Export attribute - MonoObject *attr = field->get_attribute(CACHED_CLASS(ExportAttribute)); + const Vector<GDMonoProperty *> &properties = top->get_all_properties(); - PropertyHint hint; - String hint_string; + for (int i = properties.size() - 1; i >= 0; i--) { + GDMonoProperty *property = properties[i]; - if (type == Variant::NIL) { - ERR_PRINTS("Unknown type of exported field: " + top->get_full_name() + "." + field->get_name()); - continue; - } else if (type == Variant::INT && field_type.type_encoding == MONO_TYPE_VALUETYPE && mono_class_is_enum(field_type.type_class->get_raw())) { - type = Variant::INT; - hint = PROPERTY_HINT_ENUM; + if (_get_member_export(top, property, prop_info, exported)) { + StringName name = property->get_name(); - Vector<MonoClassField *> fields = field_type.type_class->get_enum_fields(); + if (exported) { + member_info[name] = prop_info; + exported_members_cache.push_front(prop_info); - for (int i = 0; i < fields.size(); i++) { - if (i > 0) - hint_string += ","; - hint_string += mono_field_get_name(fields[i]); + if (tmp_object) { + MonoObject *exc = NULL; + MonoObject *ret = property->get_value(tmp_object, &exc); + if (exc) { + exported_members_defval_cache[name] = Variant(); + GDMonoUtils::print_unhandled_exception(exc); + } else { + exported_members_defval_cache[name] = GDMonoMarshal::mono_object_to_variant(ret); + } } - } else if (type == Variant::OBJECT && CACHED_CLASS(GodotReference)->is_assignable_from(field_type.type_class)) { - hint = PROPERTY_HINT_RESOURCE_TYPE; - hint_string = NATIVE_GDMONOCLASS_NAME(field_type.type_class); } else { - hint = PropertyHint(CACHED_FIELD(ExportAttribute, hint)->get_int_value(attr)); - hint_string = CACHED_FIELD(ExportAttribute, hintString)->get_string_value(attr); + member_info[name] = prop_info; } - - PropertyInfo prop_info = PropertyInfo(type, name, hint, hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE); - - member_info[cname] = prop_info; - exported_members_cache.push_front(prop_info); - - if (tmp_object) { - exported_members_defval_cache[cname] = GDMonoMarshal::mono_object_to_variant(field->get_value(tmp_object)); - } - } else { - member_info[cname] = PropertyInfo(type, name, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_SCRIPT_VARIABLE); } } @@ -1458,6 +1556,79 @@ bool CSharpScript::_update_exports() { return false; } +#ifdef TOOLS_ENABLED +bool CSharpScript::_get_member_export(GDMonoClass *p_class, GDMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported) { + + StringName name = p_member->get_name(); + + if (p_member->is_static()) { + if (p_member->has_attribute(CACHED_CLASS(ExportAttribute))) + ERR_PRINTS("Cannot export member because it is static: " + p_class->get_full_name() + "." + name.operator String()); + return false; + } + + if (member_info.has(name)) + return false; + + ManagedType type; + + if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_FIELD) { + type = static_cast<GDMonoField *>(p_member)->get_type(); + } else if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_PROPERTY) { + type = static_cast<GDMonoProperty *>(p_member)->get_type(); + } else { + CRASH_NOW(); + } + + Variant::Type variant_type = GDMonoMarshal::managed_to_variant_type(type); + + if (p_member->has_attribute(CACHED_CLASS(ExportAttribute))) { + if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_PROPERTY) { + GDMonoProperty *property = static_cast<GDMonoProperty *>(p_member); + if (!property->has_getter() || !property->has_setter()) { + ERR_PRINTS("Cannot export property because it does not provide a getter or a setter: " + p_class->get_full_name() + "." + name.operator String()); + return false; + } + } + + MonoObject *attr = p_member->get_attribute(CACHED_CLASS(ExportAttribute)); + + PropertyHint hint; + String hint_string; + + if (variant_type == Variant::NIL) { + ERR_PRINTS("Unknown type of exported member: " + p_class->get_full_name() + "." + name.operator String()); + return false; + } else if (variant_type == Variant::INT && type.type_encoding == MONO_TYPE_VALUETYPE && mono_class_is_enum(type.type_class->get_mono_ptr())) { + variant_type = Variant::INT; + hint = PROPERTY_HINT_ENUM; + + Vector<MonoClassField *> fields = type.type_class->get_enum_fields(); + + for (int i = 0; i < fields.size(); i++) { + if (i > 0) + hint_string += ","; + hint_string += mono_field_get_name(fields[i]); + } + } else if (variant_type == Variant::OBJECT && CACHED_CLASS(GodotReference)->is_assignable_from(type.type_class)) { + hint = PROPERTY_HINT_RESOURCE_TYPE; + hint_string = NATIVE_GDMONOCLASS_NAME(type.type_class); + } else { + hint = PropertyHint(CACHED_FIELD(ExportAttribute, hint)->get_int_value(attr)); + hint_string = CACHED_FIELD(ExportAttribute, hintString)->get_string_value(attr); + } + + r_prop_info = PropertyInfo(variant_type, name.operator String(), hint, hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE); + r_exported = true; + } else { + r_prop_info = PropertyInfo(variant_type, name.operator String(), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_SCRIPT_VARIABLE); + r_exported = false; + } + + return true; +} +#endif + void CSharpScript::_clear() { tool = false; @@ -1479,7 +1650,7 @@ Variant CSharpScript::call(const StringName &p_method, const Variant **p_args, i MonoObject *result = method->invoke(NULL, p_args); if (result) { - return GDMonoMarshal::mono_object_to_variant(result, method->get_return_type()); + return GDMonoMarshal::mono_object_to_variant(result); } else { return Variant(); } @@ -1526,7 +1697,7 @@ bool CSharpScript::_set(const StringName &p_name, const Variant &p_value) { void CSharpScript::_get_property_list(List<PropertyInfo> *p_properties) const { - p_properties->push_back(PropertyInfo(Variant::STRING, CSharpLanguage::singleton->string_names._script_source, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_properties->push_back(PropertyInfo(Variant::STRING, CSharpLanguage::singleton->string_names._script_source, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } void CSharpScript::_bind_methods() { @@ -1626,7 +1797,7 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg /* STEP 2, INITIALIZE AND CONSTRUCT */ - MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_raw()); + MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_mono_ptr()); if (!mono_object) { instance->script = Ref<CSharpScript>(); @@ -1764,7 +1935,7 @@ void CSharpScript::set_source_code(const String &p_code) { bool CSharpScript::has_method(const StringName &p_method) const { - return script_class->has_method(p_method); + return script_class->has_fetched_method_unknown_params(p_method); } Error CSharpScript::reload(bool p_keep_state) { diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h index 27e68a7a56..1daa25b74e 100644 --- a/modules/mono/csharp_script.h +++ b/modules/mono/csharp_script.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CSHARP_SCRIPT_H #define CSHARP_SCRIPT_H @@ -104,6 +105,10 @@ class CSharpScript : public Script { void _clear(); bool _update_exports(); +#ifdef TOOLS_ENABLED + bool _get_member_export(GDMonoClass *p_class, GDMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported); +#endif + CSharpInstance *_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, bool p_isref, Variant::CallError &r_error); Variant _new(const Variant **p_args, int p_argcount, Variant::CallError &r_error); @@ -178,6 +183,8 @@ class CSharpInstance : public ScriptInstance { void _call_multilevel(MonoObject *p_mono_object, const StringName &p_method, const Variant **p_args, int p_argcount); + RPCMode _member_get_rpc_mode(GDMonoClassMember *p_member) const; + public: MonoObject *get_mono_object() const; @@ -298,7 +305,7 @@ public: /* TODO */ virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {} /* TODO */ virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {} /* TODO */ virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth) { return ""; } - /* TODO */ virtual Vector<StackInfo> debug_get_current_stack_info() { return Vector<StackInfo>(); } + virtual Vector<StackInfo> debug_get_current_stack_info(); /* PROFILING FUNCTIONS */ /* TODO */ virtual void profiling_start() {} @@ -330,6 +337,10 @@ public: virtual void *alloc_instance_binding_data(Object *p_object); virtual void free_instance_binding_data(void *p_data); +#ifdef DEBUG_ENABLED + Vector<StackInfo> stack_trace_get_info(MonoObject *p_stack_trace); +#endif + CSharpLanguage(); ~CSharpLanguage(); }; diff --git a/modules/mono/doc_classes/@C#.xml b/modules/mono/doc_classes/@C#.xml index 5fcbf36a2b..0f33c76eb2 100644 --- a/modules/mono/doc_classes/@C#.xml +++ b/modules/mono/doc_classes/@C#.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="@C#" category="Core" version="3.0-beta"> +<class name="@C#" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/mono/doc_classes/CSharpScript.xml b/modules/mono/doc_classes/CSharpScript.xml index 853ef28731..3efe71f1b3 100644 --- a/modules/mono/doc_classes/CSharpScript.xml +++ b/modules/mono/doc_classes/CSharpScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="CSharpScript" inherits="Script" category="Core" version="3.0-beta"> +<class name="CSharpScript" inherits="Script" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/mono/doc_classes/GodotSharp.xml b/modules/mono/doc_classes/GodotSharp.xml index 2696a0bb4b..1e5edf2a2a 100644 --- a/modules/mono/doc_classes/GodotSharp.xml +++ b/modules/mono/doc_classes/GodotSharp.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="GodotSharp" inherits="Object" category="Core" version="3.0-beta"> +<class name="GodotSharp" inherits="Object" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp index 0e41e00f30..62c7a94755 100644 --- a/modules/mono/editor/bindings_generator.cpp +++ b/modules/mono/editor/bindings_generator.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "bindings_generator.h" #ifdef DEBUG_METHODS_ENABLED @@ -249,8 +250,15 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) { const TypeInterface *return_type = _get_type_by_name_or_placeholder(imethod.return_type); - String im_sig = "IntPtr " CS_PARAM_METHODBIND ", IntPtr " CS_PARAM_INSTANCE; - String im_unique_sig = imethod.return_type.operator String() + ",IntPtr,IntPtr"; + String im_sig; + String im_unique_sig; + + if (p_itype.is_object_type) { + im_sig += "IntPtr " CS_PARAM_METHODBIND ", "; + im_unique_sig += imethod.return_type.operator String() + ",IntPtr,IntPtr"; + } + + im_sig += "IntPtr " CS_PARAM_INSTANCE; // Get arguments information int i = 0; @@ -262,25 +270,37 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) { im_sig += " arg"; im_sig += itos(i + 1); - im_unique_sig += ","; - im_unique_sig += get_unique_sig(*arg_type); + if (p_itype.is_object_type) { + im_unique_sig += ","; + im_unique_sig += get_unique_sig(*arg_type); + } i++; } - // godot_icall_{argc}_{icallcount} - String icall_method = ICALL_PREFIX + itos(imethod.arguments.size()) + "_" + itos(method_icalls.size()); + String icall_method = ICALL_PREFIX; + + if (p_itype.is_object_type) { + icall_method += itos(imethod.arguments.size()) + "_" + itos(method_icalls.size()); // godot_icall_{argc}_{icallcount} + } else { + icall_method += p_itype.name + "_" + imethod.name; // godot_icall_{Type}_{method} + } InternalCall im_icall = InternalCall(p_itype.api_type, icall_method, return_type->im_type_out, im_sig, im_unique_sig); - List<InternalCall>::Element *match = method_icalls.find(im_icall); + if (p_itype.is_object_type) { + List<InternalCall>::Element *match = method_icalls.find(im_icall); - if (match) { - if (p_itype.api_type != ClassDB::API_EDITOR) - match->get().editor_only = false; - method_icalls_map.insert(&E->get(), &match->get()); + if (match) { + if (p_itype.api_type != ClassDB::API_EDITOR) + match->get().editor_only = false; + method_icalls_map.insert(&E->get(), &match->get()); + } else { + List<InternalCall>::Element *added = method_icalls.push_back(im_icall); + method_icalls_map.insert(&E->get(), &added->get()); + } } else { - List<InternalCall>::Element *added = method_icalls.push_back(im_icall); + List<InternalCall>::Element *added = builtin_method_icalls.push_back(im_icall); method_icalls_map.insert(&E->get(), &added->get()); } } @@ -447,14 +467,14 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_output_dir, bo compile_items.push_back(output_file); } - for (Map<StringName, TypeInterface>::Element *E = obj_types.front(); E; E = E->next()) { - const TypeInterface &itype = E->get(); + for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) { + const TypeInterface &itype = E.get(); if (itype.api_type == ClassDB::API_EDITOR) continue; - String output_file = path_join(obj_type_dir, E->get().proxy_name + ".cs"); - Error err = _generate_cs_type(E->get(), output_file); + String output_file = path_join(obj_type_dir, itype.proxy_name + ".cs"); + Error err = _generate_cs_type(itype, output_file); if (err == ERR_SKIP) continue; @@ -524,6 +544,8 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_output_dir, bo ADD_INTERNAL_CALL(E->get()); for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next()) ADD_INTERNAL_CALL(E->get()); + for (const List<InternalCall>::Element *E = builtin_method_icalls.front(); E; E = E->next()) + ADD_INTERNAL_CALL(E->get()); #undef ADD_INTERNAL_CALL @@ -579,14 +601,14 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir, if (!solution.set_path(p_output_dir)) return ERR_FILE_NOT_FOUND; - for (Map<StringName, TypeInterface>::Element *E = obj_types.front(); E; E = E->next()) { - const TypeInterface &itype = E->get(); + for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) { + const TypeInterface &itype = E.get(); if (itype.api_type != ClassDB::API_EDITOR) continue; - String output_file = path_join(obj_type_dir, E->get().proxy_name + ".cs"); - Error err = _generate_cs_type(E->get(), output_file); + String output_file = path_join(obj_type_dir, itype.proxy_name + ".cs"); + Error err = _generate_cs_type(itype, output_file); if (err == ERR_SKIP) continue; @@ -615,6 +637,8 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir, cs_icalls_content.push_back(m_icall.im_sig + ");\n"); \ } + // No need to add builtin_method_icalls. Builtin types are core only + for (const List<InternalCall>::Element *E = editor_custom_icalls.front(); E; E = E->next()) ADD_INTERNAL_CALL(E->get()); for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next()) @@ -693,9 +717,9 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str output.push_back(itype.is_singleton ? "static class " : "class "); output.push_back(itype.proxy_name); - if (itype.is_singleton || !itype.is_object_type) { + if (itype.is_singleton) { output.push_back("\n"); - } else if (!is_derived_type) { + } else if (!is_derived_type || !itype.is_object_type /* assuming only object types inherit */) { output.push_back(" : IDisposable\n"); } else if (obj_types.has(itype.base_name)) { output.push_back(" : "); @@ -837,7 +861,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str output.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2); // Add the virtual Dispose - output.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2 + output.push_back(MEMBER_BEGIN "protected virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2 "if (disposed) return;\n" INDENT3 "if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3 "NativeCalls.godot_icall_"); output.push_back(itype.proxy_name); @@ -928,7 +952,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str output.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2); // Add the virtual Dispose - output.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2 + output.push_back(MEMBER_BEGIN "protected virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2 "if (disposed) return;\n" INDENT3 "if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3 "if (" CS_FIELD_MEMORYOWN ")\n" OPEN_BLOCK_L4 CS_FIELD_MEMORYOWN @@ -944,7 +968,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str return ERR_BUG; } - Map<StringName, TypeInterface>::Element *object_itype = obj_types.find("Object"); + OrderedHashMap<StringName, TypeInterface>::Element object_itype = obj_types.find("Object"); if (!object_itype) { ERR_PRINT("BUG: Object type interface not found!"); @@ -952,7 +976,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str } output.push_back(MEMBER_BEGIN "public " CS_CLASS_SIGNALAWAITER " ToSignal("); - output.push_back(object_itype->get().cs_type); + output.push_back(object_itype.get().cs_type); output.push_back(" source, string signal)\n" OPEN_BLOCK_L2 "return new " CS_CLASS_SIGNALAWAITER "(source, signal, this);\n" CLOSE_BLOCK_L2); } @@ -998,9 +1022,9 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte // Search it in base types too const TypeInterface *current_type = &p_itype; while (!setter && current_type->base_name != StringName()) { - Map<StringName, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name); - ERR_FAIL_NULL_V(base_match, ERR_BUG); - current_type = &base_match->get(); + OrderedHashMap<StringName, TypeInterface>::Element base_match = obj_types.find(current_type->base_name); + ERR_FAIL_COND_V(!base_match, ERR_BUG); + current_type = &base_match.get(); setter = current_type->find_method_by_name(p_iprop.setter); } @@ -1009,9 +1033,9 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte // Search it in base types too current_type = &p_itype; while (!getter && current_type->base_name != StringName()) { - Map<StringName, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name); - ERR_FAIL_NULL_V(base_match, ERR_BUG); - current_type = &base_match->get(); + OrderedHashMap<StringName, TypeInterface>::Element base_match = obj_types.find(current_type->base_name); + ERR_FAIL_COND_V(!base_match, ERR_BUG); + current_type = &base_match.get(); getter = current_type->find_method_by_name(p_iprop.getter); } @@ -1121,10 +1145,14 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf String method_bind_field = "method_bind_" + itos(p_method_bind_count); - String icall_params = method_bind_field + ", " + sformat(p_itype.cs_in, "this"); String arguments_sig; String cs_in_statements; + String icall_params; + if (p_itype.is_object_type) + icall_params += method_bind_field + ", "; + icall_params += sformat(p_itype.cs_in, "this"); + List<String> default_args_doc; // Retrieve information from the arguments @@ -1199,9 +1227,8 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf // Generate method { - if (!p_imethod.is_virtual && !p_imethod.requires_object_call) { - p_output.push_back(MEMBER_BEGIN "private "); - p_output.push_back(p_itype.is_singleton ? "static IntPtr " : "IntPtr "); + if (p_itype.is_object_type && !p_imethod.is_virtual && !p_imethod.requires_object_call) { + p_output.push_back(MEMBER_BEGIN "private static IntPtr "); p_output.push_back(method_bind_field + " = " CS_CLASS_NATIVECALLS "." ICALL_GET_METHODBIND "(" BINDINGS_NATIVE_NAME_FIELD ", \""); p_output.push_back(p_imethod.name); p_output.push_back("\");\n"); @@ -1323,8 +1350,8 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) { generated_icall_funcs.clear(); - for (Map<StringName, TypeInterface>::Element *type_elem = obj_types.front(); type_elem; type_elem = type_elem->next()) { - const TypeInterface &itype = type_elem->get(); + for (OrderedHashMap<StringName, TypeInterface>::Element type_elem = obj_types.front(); type_elem; type_elem = type_elem.next()) { + const TypeInterface &itype = type_elem.get(); List<InternalCall> &custom_icalls = itype.api_type == ClassDB::API_EDITOR ? editor_custom_icalls : core_custom_icalls; @@ -1380,6 +1407,7 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) { output.push_back(itos(GDMono::get_singleton()->get_api_editor_hash()) + "; }\n#endif // TOOLS_ENABLED\n"); output.push_back("void register_generated_icalls() " OPEN_BLOCK); + output.push_back("\tgodot_register_header_icalls();"); #define ADD_INTERNAL_CALL_REGISTRATION(m_icall) \ { \ @@ -1442,6 +1470,9 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) { output.push_back("#endif\n"); } + for (const List<InternalCall>::Element *E = builtin_method_icalls.front(); E; E = E->next()) + ADD_INTERNAL_CALL_REGISTRATION(E->get()); + #undef ADD_INTERNAL_CALL_REGISTRATION output.push_back(CLOSE_BLOCK "}\n"); @@ -1517,6 +1548,9 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte i++; } + if (!p_itype.is_object_type) + return OK; // no auto-generated icall functions for builtin types + const Map<const MethodInterface *, const InternalCall *>::Element *match = method_icalls_map.find(&p_imethod); ERR_FAIL_NULL_V(match, ERR_BUG); @@ -1630,20 +1664,20 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte const BindingsGenerator::TypeInterface *BindingsGenerator::_get_type_by_name_or_null(const StringName &p_cname) { - const Map<StringName, TypeInterface>::Element *match = builtin_types.find(p_cname); + const Map<StringName, TypeInterface>::Element *builtin_type_match = builtin_types.find(p_cname); - if (match) - return &match->get(); + if (builtin_type_match) + return &builtin_type_match->get(); - match = obj_types.find(p_cname); + const OrderedHashMap<StringName, TypeInterface>::Element obj_type_match = obj_types.find(p_cname); - if (match) - return &match->get(); + if (obj_type_match) + return &obj_type_match.get(); - match = enum_types.find(p_cname); + const Map<StringName, TypeInterface>::Element *enum_match = enum_types.find(p_cname); - if (match) - return &match->get(); + if (enum_match) + return &enum_match->get(); return NULL; } @@ -1810,7 +1844,7 @@ void BindingsGenerator::_populate_object_type_interfaces() { imethod.return_type = name_cache.type_void; // Actually, more methods like this may be added in the future, - // which could actually will return something differnet. + // which could actually will return something different. // Let's put this to notify us if that ever happens. if (itype.cname != name_cache.type_Object || imethod.name != "free") { if (verbose_output) { @@ -2112,36 +2146,34 @@ void BindingsGenerator::_populate_builtin_type_interfaces() { #undef INSERT_STRUCT_TYPE -#define INSERT_PRIMITIVE_TYPE(m_type) \ - { \ - itype = TypeInterface::create_value_type(String(#m_type)); \ - itype.c_arg_in = "&%s"; \ - itype.c_type_in = #m_type; \ - itype.c_type_out = #m_type; \ - itype.im_type_in = #m_type; \ - itype.im_type_out = #m_type; \ - builtin_types.insert(itype.cname, itype); \ - } - - INSERT_PRIMITIVE_TYPE(bool) - //INSERT_PRIMITIVE_TYPE(int) + // bool + itype = TypeInterface::create_value_type(String("bool")); + itype.c_arg_in = "&%s"; + // /* MonoBoolean <---> bool + itype.c_in = "\t%0 %1_in = (%0)%1;\n"; + itype.c_out = "\treturn (%0)%1;\n"; + itype.c_type = "bool"; + // */ + itype.c_type_in = "MonoBoolean"; + itype.c_type_out = itype.c_type_in; + itype.im_type_in = itype.name; + itype.im_type_out = itype.name; + builtin_types.insert(itype.cname, itype); // int itype = TypeInterface::create_value_type(String("int")); itype.c_arg_in = "&%s_in"; - //* ptrcall only supports int64_t and uint64_t + // /* ptrcall only supports int64_t and uint64_t itype.c_in = "\t%0 %1_in = (%0)%1;\n"; itype.c_out = "\treturn (%0)%1;\n"; itype.c_type = "int64_t"; - //*/ - itype.c_type_in = itype.name; - itype.c_type_out = itype.name; + // */ + itype.c_type_in = "int32_t"; + itype.c_type_out = itype.c_type_in; itype.im_type_in = itype.name; itype.im_type_out = itype.name; builtin_types.insert(itype.cname, itype); -#undef INSERT_PRIMITIVE_TYPE - // real_t itype = TypeInterface(); #ifdef REAL_T_IS_DOUBLE @@ -2483,8 +2515,8 @@ void BindingsGenerator::initialize() { _generate_header_icalls(); - for (Map<StringName, TypeInterface>::Element *E = obj_types.front(); E; E = E->next()) - _generate_method_icalls(E->get()); + for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) + _generate_method_icalls(E.get()); _generate_method_icalls(builtin_types["NodePath"]); _generate_method_icalls(builtin_types["RID"]); diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h index 9da7add867..4ab8d86cf3 100644 --- a/modules/mono/editor/bindings_generator.h +++ b/modules/mono/editor/bindings_generator.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BINDINGS_GENERATOR_H #define BINDINGS_GENERATOR_H @@ -428,10 +429,11 @@ class BindingsGenerator { static bool verbose_output; + OrderedHashMap<StringName, TypeInterface> obj_types; + Map<StringName, TypeInterface> placeholder_types; Map<StringName, TypeInterface> builtin_types; Map<StringName, TypeInterface> enum_types; - Map<StringName, TypeInterface> obj_types; List<EnumInterface> global_enums; List<ConstantInterface> global_constants; @@ -439,6 +441,7 @@ class BindingsGenerator { Map<StringName, String> extra_members; List<InternalCall> method_icalls; + List<InternalCall> builtin_method_icalls; Map<const MethodInterface *, const InternalCall *> method_icalls_map; List<const InternalCall *> generated_icall_funcs; diff --git a/modules/mono/editor/csharp_project.cpp b/modules/mono/editor/csharp_project.cpp index 89e72e5c4b..e4269b0aec 100644 --- a/modules/mono/editor/csharp_project.cpp +++ b/modules/mono/editor/csharp_project.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "csharp_project.h" #include "os/os.h" diff --git a/modules/mono/editor/csharp_project.h b/modules/mono/editor/csharp_project.h index 59277664b2..381dd17e02 100644 --- a/modules/mono/editor/csharp_project.h +++ b/modules/mono/editor/csharp_project.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CSHARP_PROJECT_H #define CSHARP_PROJECT_H diff --git a/modules/mono/editor/godotsharp_builds.cpp b/modules/mono/editor/godotsharp_builds.cpp index 58d26a0f83..6b41b10981 100644 --- a/modules/mono/editor/godotsharp_builds.cpp +++ b/modules/mono/editor/godotsharp_builds.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "godotsharp_builds.h" #include "main/main.h" @@ -446,7 +447,7 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) { GDMonoClass *klass = GDMono::get_singleton()->get_editor_tools_assembly()->get_class("GodotSharpTools.Build", "BuildInstance"); - MonoObject *mono_object = mono_object_new(mono_domain_get(), klass->get_raw()); + MonoObject *mono_object = mono_object_new(mono_domain_get(), klass->get_mono_ptr()); // Construct diff --git a/modules/mono/editor/godotsharp_builds.h b/modules/mono/editor/godotsharp_builds.h index 956f8f6253..5d2390ecd9 100644 --- a/modules/mono/editor/godotsharp_builds.h +++ b/modules/mono/editor/godotsharp_builds.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOTSHARP_BUILDS_H #define GODOTSHARP_BUILDS_H diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp index f964fac8e9..0ef3adfdd0 100644 --- a/modules/mono/editor/godotsharp_editor.cpp +++ b/modules/mono/editor/godotsharp_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "godotsharp_editor.h" #include "core/os/os.h" @@ -111,6 +112,21 @@ void GodotSharpEditor::_remove_create_sln_menu_option() { bottom_panel_btn->show(); } +void GodotSharpEditor::_show_about_dialog() { + + bool show_on_start = EDITOR_GET("mono/editor/show_info_on_start"); + about_dialog_checkbox->set_pressed(show_on_start); + about_dialog->popup_centered_minsize(); +} + +void GodotSharpEditor::_toggle_about_dialog_on_start(bool p_enabled) { + + bool show_on_start = EDITOR_GET("mono/editor/show_info_on_start"); + if (show_on_start != p_enabled) { + EditorSettings::get_singleton()->set_setting("mono/editor/show_info_on_start", p_enabled); + } +} + void GodotSharpEditor::_menu_option_pressed(int p_id) { switch (p_id) { @@ -118,15 +134,37 @@ void GodotSharpEditor::_menu_option_pressed(int p_id) { _create_project_solution(); } break; + case MENU_ABOUT_CSHARP: { + + _show_about_dialog(); + } break; default: ERR_FAIL(); } } +void GodotSharpEditor::_notification(int p_notification) { + + switch (p_notification) { + + case NOTIFICATION_READY: { + + bool show_info_dialog = EDITOR_GET("mono/editor/show_info_on_start"); + if (show_info_dialog) { + about_dialog->set_exclusive(true); + _show_about_dialog(); + // Once shown a first time, it can be seen again via the Mono menu - it doesn't have to be exclusive then. + about_dialog->set_exclusive(false); + } + } + } +} + void GodotSharpEditor::_bind_methods() { ClassDB::bind_method(D_METHOD("_create_project_solution"), &GodotSharpEditor::_create_project_solution); ClassDB::bind_method(D_METHOD("_remove_create_sln_menu_option"), &GodotSharpEditor::_remove_create_sln_menu_option); + ClassDB::bind_method(D_METHOD("_toggle_about_dialog_on_start"), &GodotSharpEditor::_toggle_about_dialog_on_start); ClassDB::bind_method(D_METHOD("_menu_option_pressed", "id"), &GodotSharpEditor::_menu_option_pressed); } @@ -150,7 +188,7 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int if (p_line >= 0) { args.push_back("-g"); - args.push_back(script_path + ":" + itos(p_line) + ":" + itos(p_col)); + args.push_back(script_path + ":" + itos(p_line + 1) + ":" + itos(p_col)); } else { args.push_back(script_path); } @@ -169,6 +207,11 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int monodevel_instance = memnew(MonoDevelopInstance(GodotSharpDirs::get_project_sln_path())); String script_path = ProjectSettings::get_singleton()->globalize_path(p_script->get_path()); + + if (p_line >= 0) { + script_path += ";" + itos(p_line + 1) + ";" + itos(p_col); + } + monodevel_instance->execute(script_path); } break; default: @@ -204,6 +247,55 @@ GodotSharpEditor::GodotSharpEditor(EditorNode *p_editor) { menu_button->set_text(TTR("Mono")); menu_popup = menu_button->get_popup(); + // TODO: Remove or edit this info dialog once Mono support is no longer in alpha + { + menu_popup->add_item(TTR("About C# support"), MENU_ABOUT_CSHARP); + about_dialog = memnew(AcceptDialog); + editor->get_gui_base()->add_child(about_dialog); + about_dialog->set_title("Important: C# support is not feature-complete"); + + // We don't use set_text() as the default AcceptDialog Label doesn't play well with the TextureRect and CheckBox + // we'll add. Instead we add containers and a new autowrapped Label inside. + + // Main VBoxContainer (icon + label on top, checkbox at bottom) + VBoxContainer *about_vbc = memnew(VBoxContainer); + about_dialog->add_child(about_vbc); + + // HBoxContainer for icon + label + HBoxContainer *about_hbc = memnew(HBoxContainer); + about_vbc->add_child(about_hbc); + + TextureRect *about_icon = memnew(TextureRect); + about_hbc->add_child(about_icon); + Ref<Texture> about_icon_tex = about_icon->get_icon("NodeWarning", "EditorIcons"); + about_icon->set_texture(about_icon_tex); + + Label *about_label = memnew(Label); + about_hbc->add_child(about_label); + about_label->set_custom_minimum_size(Size2(600, 150) * EDSCALE); + about_label->set_v_size_flags(Control::SIZE_EXPAND_FILL); + about_label->set_autowrap(true); + String about_text = + String("C# support in Godot Engine is a brand new feature and a work in progress.\n") + + "It is at the alpha stage and thus not suitable for use in production.\n\n" + + "As of Godot 3.0, C# support is not feature-complete and can crash in some situations. " + + "Bugs and usability issues will be addressed gradually over 3.0.x and 3.x releases.\n" + + "The main missing feature is the ability to export games using C# assemblies - you will therefore be able to develop and run games in the editor, " + + "but not to share them as standalone binaries. This feature is of course high on the priority list and should be available in 3.0.1.\n\n" + + "If you experience issues with this Mono build, please report them on Godot's issue tracker with details about your system, Mono version, IDE, etc.:\n\n" + + " https://github.com/godotengine/godot/issues\n\n" + + "Your critical feedback at this stage will play a great role in shaping the C# support in future releases, so thank you!"; + about_label->set_text(about_text); + + EDITOR_DEF("mono/editor/show_info_on_start", true); + + // CheckBox in main container + about_dialog_checkbox = memnew(CheckBox); + about_vbc->add_child(about_dialog_checkbox); + about_dialog_checkbox->set_text("Show this warning when starting the editor"); + about_dialog_checkbox->connect("toggled", this, "_toggle_about_dialog_on_start"); + } + String sln_path = GodotSharpDirs::get_project_sln_path(); String csproj_path = GodotSharpDirs::get_project_csproj_path(); diff --git a/modules/mono/editor/godotsharp_editor.h b/modules/mono/editor/godotsharp_editor.h index f9b4fb42fb..81c49aec30 100644 --- a/modules/mono/editor/godotsharp_editor.h +++ b/modules/mono/editor/godotsharp_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOTSHARP_EDITOR_H #define GODOTSHARP_EDITOR_H @@ -43,6 +44,8 @@ class GodotSharpEditor : public Node { PopupMenu *menu_popup; AcceptDialog *error_dialog; + AcceptDialog *about_dialog; + CheckBox *about_dialog_checkbox; ToolButton *bottom_panel_btn; @@ -53,17 +56,21 @@ class GodotSharpEditor : public Node { bool _create_project_solution(); void _remove_create_sln_menu_option(); + void _show_about_dialog(); + void _toggle_about_dialog_on_start(bool p_enabled); void _menu_option_pressed(int p_id); static GodotSharpEditor *singleton; protected: + void _notification(int p_notification); static void _bind_methods(); public: enum MenuOptions { - MENU_CREATE_SLN + MENU_CREATE_SLN, + MENU_ABOUT_CSHARP, }; enum ExternalEditor { diff --git a/modules/mono/editor/mono_bottom_panel.cpp b/modules/mono/editor/mono_bottom_panel.cpp index 7c8d822037..43689548b5 100644 --- a/modules/mono/editor/mono_bottom_panel.cpp +++ b/modules/mono/editor/mono_bottom_panel.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mono_bottom_panel.h" #include "../csharp_script.h" diff --git a/modules/mono/editor/mono_bottom_panel.h b/modules/mono/editor/mono_bottom_panel.h index d7573361ab..a44d3a9af8 100644 --- a/modules/mono/editor/mono_bottom_panel.h +++ b/modules/mono/editor/mono_bottom_panel.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MONO_BOTTOM_PANEL_H #define MONO_BOTTOM_PANEL_H diff --git a/modules/mono/editor/mono_build_info.h b/modules/mono/editor/mono_build_info.h index 115fc9ea55..4806764a61 100644 --- a/modules/mono/editor/mono_build_info.h +++ b/modules/mono/editor/mono_build_info.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MONO_BUILD_INFO_H #define MONO_BUILD_INFO_H diff --git a/modules/mono/editor/monodevelop_instance.cpp b/modules/mono/editor/monodevelop_instance.cpp index 57b3382bff..48a285561d 100644 --- a/modules/mono/editor/monodevelop_instance.cpp +++ b/modules/mono/editor/monodevelop_instance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "monodevelop_instance.h" #include "../mono_gd/gd_mono.h" @@ -34,6 +35,8 @@ void MonoDevelopInstance::execute(const Vector<String> &p_files) { + _GDMONO_SCOPE_DOMAIN_(TOOLS_DOMAIN) + ERR_FAIL_NULL(execute_method); ERR_FAIL_COND(gc_handle.is_null()); @@ -62,7 +65,7 @@ MonoDevelopInstance::MonoDevelopInstance(const String &p_solution) { GDMonoClass *klass = GDMono::get_singleton()->get_editor_tools_assembly()->get_class("GodotSharpTools.Editor", "MonoDevelopInstance"); - MonoObject *obj = mono_object_new(TOOLS_DOMAIN, klass->get_raw()); + MonoObject *obj = mono_object_new(TOOLS_DOMAIN, klass->get_mono_ptr()); GDMonoMethod *ctor = klass->get_method(".ctor", 1); MonoObject *ex = NULL; diff --git a/modules/mono/editor/monodevelop_instance.h b/modules/mono/editor/monodevelop_instance.h index 783d12325f..7e8a76b595 100644 --- a/modules/mono/editor/monodevelop_instance.h +++ b/modules/mono/editor/monodevelop_instance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MONODEVELOP_INSTANCE_H #define MONODEVELOP_INSTANCE_H diff --git a/modules/mono/editor/net_solution.cpp b/modules/mono/editor/net_solution.cpp index b9df5b5327..dab96e44e9 100644 --- a/modules/mono/editor/net_solution.cpp +++ b/modules/mono/editor/net_solution.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "net_solution.h" #include "os/dir_access.h" diff --git a/modules/mono/editor/net_solution.h b/modules/mono/editor/net_solution.h index 21af1938cb..293e86917a 100644 --- a/modules/mono/editor/net_solution.h +++ b/modules/mono/editor/net_solution.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NET_SOLUTION_H #define NET_SOLUTION_H diff --git a/modules/mono/glue/builtin_types_glue.h b/modules/mono/glue/builtin_types_glue.h new file mode 100644 index 0000000000..460de84b65 --- /dev/null +++ b/modules/mono/glue/builtin_types_glue.h @@ -0,0 +1,59 @@ +#ifndef BUILTIN_TYPES_GLUE_H +#define BUILTIN_TYPES_GLUE_H + +#include "core/node_path.h" +#include "core/rid.h" + +#include <mono/metadata/object.h> + +#include "../mono_gd/gd_mono_marshal.h" + +MonoBoolean godot_icall_NodePath_is_absolute(NodePath *p_ptr) { + return (MonoBoolean)p_ptr->is_absolute(); +} + +uint32_t godot_icall_NodePath_get_name_count(NodePath *p_ptr) { + return p_ptr->get_name_count(); +} + +MonoString *godot_icall_NodePath_get_name(NodePath *p_ptr, uint32_t p_idx) { + return GDMonoMarshal::mono_string_from_godot(p_ptr->get_name(p_idx)); +} + +uint32_t godot_icall_NodePath_get_subname_count(NodePath *p_ptr) { + return p_ptr->get_subname_count(); +} + +MonoString *godot_icall_NodePath_get_subname(NodePath *p_ptr, uint32_t p_idx) { + return GDMonoMarshal::mono_string_from_godot(p_ptr->get_subname(p_idx)); +} + +MonoString *godot_icall_NodePath_get_concatenated_subnames(NodePath *p_ptr) { + return GDMonoMarshal::mono_string_from_godot(p_ptr->get_concatenated_subnames()); +} + +NodePath *godot_icall_NodePath_get_as_property_path(NodePath *p_ptr) { + return memnew(NodePath(p_ptr->get_as_property_path())); +} + +MonoBoolean godot_icall_NodePath_is_empty(NodePath *p_ptr) { + return (MonoBoolean)p_ptr->is_empty(); +} + +uint32_t godot_icall_RID_get_id(RID *p_ptr) { + return p_ptr->get_id(); +} + +void godot_register_builtin_type_icalls() { + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_as_property_path", (void *)godot_icall_NodePath_get_as_property_path); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_concatenated_subnames", (void *)godot_icall_NodePath_get_concatenated_subnames); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_name", (void *)godot_icall_NodePath_get_name); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_name_count", (void *)godot_icall_NodePath_get_name_count); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_subname", (void *)godot_icall_NodePath_get_subname); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_subname_count", (void *)godot_icall_NodePath_get_subname_count); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_is_absolute", (void *)godot_icall_NodePath_is_absolute); + mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_is_empty", (void *)godot_icall_NodePath_is_empty); + mono_add_internal_call("Godot.NativeCalls::godot_icall_RID_get_id", (void *)godot_icall_RID_get_id); +} + +#endif // BUILTIN_TYPES_GLUE_H diff --git a/modules/mono/glue/cs_files/Color.cs b/modules/mono/glue/cs_files/Color.cs index db0e1fb744..f9e31e9703 100644 --- a/modules/mono/glue/cs_files/Color.cs +++ b/modules/mono/glue/cs_files/Color.cs @@ -336,7 +336,7 @@ namespace Godot this.r = (rgba & 0xFF) / 255.0f; } - private static float _parse_col(string str, int ofs) + private static int _parse_col(string str, int ofs) { int ig = 0; @@ -415,17 +415,17 @@ namespace Godot if (alpha) { - if ((int)_parse_col(color, 0) < 0) + if (_parse_col(color, 0) < 0) return false; } int from = alpha ? 2 : 0; - if ((int)_parse_col(color, from + 0) < 0) + if (_parse_col(color, from + 0) < 0) return false; - if ((int)_parse_col(color, from + 2) < 0) + if (_parse_col(color, from + 2) < 0) return false; - if ((int)_parse_col(color, from + 4) < 0) + if (_parse_col(color, from + 4) < 0) return false; return true; @@ -467,10 +467,10 @@ namespace Godot if (alpha) { - a = _parse_col(rgba, 0); + a = _parse_col(rgba, 0) / 255f; if (a < 0) - throw new ArgumentOutOfRangeException("Invalid color code. Alpha is " + a + " but zero or greater is expected: " + rgba); + throw new ArgumentOutOfRangeException("Invalid color code. Alpha part is not valid hexadecimal: " + rgba); } else { @@ -479,20 +479,20 @@ namespace Godot int from = alpha ? 2 : 0; - r = _parse_col(rgba, from + 0); + r = _parse_col(rgba, from + 0) / 255f; if (r < 0) - throw new ArgumentOutOfRangeException("Invalid color code. Red is " + r + " but zero or greater is expected: " + rgba); + throw new ArgumentOutOfRangeException("Invalid color code. Red part is not valid hexadecimal: " + rgba); - g = _parse_col(rgba, from + 2); + g = _parse_col(rgba, from + 2) / 255f; if (g < 0) - throw new ArgumentOutOfRangeException("Invalid color code. Green is " + g + " but zero or greater is expected: " + rgba); + throw new ArgumentOutOfRangeException("Invalid color code. Green part is not valid hexadecimal: " + rgba); - b = _parse_col(rgba, from + 4); + b = _parse_col(rgba, from + 4) / 255f; if (b < 0) - throw new ArgumentOutOfRangeException("Invalid color code. Blue is " + b + " but zero or greater is expected: " + rgba); + throw new ArgumentOutOfRangeException("Invalid color code. Blue part is not valid hexadecimal: " + rgba); } public static bool operator ==(Color left, Color right) diff --git a/modules/mono/glue/cs_files/DebuggingUtils.cs b/modules/mono/glue/cs_files/DebuggingUtils.cs new file mode 100644 index 0000000000..ffaaf00837 --- /dev/null +++ b/modules/mono/glue/cs_files/DebuggingUtils.cs @@ -0,0 +1,83 @@ +using System; +using System.Diagnostics; +using System.Reflection; +using System.Text; + +namespace Godot +{ + internal static class DebuggingUtils + { + internal static void AppendTypeName(this StringBuilder sb, Type type) + { + if (type.IsPrimitive) + sb.Append(type.Name); + else if (type == typeof(void)) + sb.Append("void"); + else + sb.Append(type.ToString()); + + sb.Append(" "); + } + + public static void GetStackFrameInfo(StackFrame frame, out string fileName, out int fileLineNumber, out string methodDecl) + { + fileName = frame.GetFileName(); + fileLineNumber = frame.GetFileLineNumber(); + + MethodBase methodBase = frame.GetMethod(); + + if (methodBase == null) + { + methodDecl = string.Empty; + return; + } + + StringBuilder sb = new StringBuilder(); + + if (methodBase is MethodInfo) + sb.AppendTypeName(((MethodInfo)methodBase).ReturnType); + + sb.Append(methodBase.DeclaringType.FullName); + sb.Append("."); + sb.Append(methodBase.Name); + + if (methodBase.IsGenericMethod) + { + Type[] genericParams = methodBase.GetGenericArguments(); + + sb.Append("<"); + + for (int j = 0; j < genericParams.Length; j++) + { + if (j > 0) + sb.Append(", "); + + sb.AppendTypeName(genericParams[j]); + } + + sb.Append(">"); + } + + sb.Append("("); + + bool varArgs = (methodBase.CallingConvention & CallingConventions.VarArgs) != 0; + + ParameterInfo[] parameter = methodBase.GetParameters(); + + for (int i = 0; i < parameter.Length; i++) + { + if (i > 0) + sb.Append(", "); + + if (i == parameter.Length - 1 && varArgs) + sb.Append("params "); + + sb.AppendTypeName(parameter[i].ParameterType); + } + + sb.Append(")"); + + methodDecl = sb.ToString(); + } + } +} diff --git a/modules/mono/glue/cs_files/Plane.cs b/modules/mono/glue/cs_files/Plane.cs index 6365e71826..b347c0835a 100644 --- a/modules/mono/glue/cs_files/Plane.cs +++ b/modules/mono/glue/cs_files/Plane.cs @@ -91,7 +91,7 @@ namespace Godot float dist = (normal.Dot(from) - d) / den; - // This is a ray, before the emiting pos (from) does not exist + // This is a ray, before the emitting pos (from) does not exist if (dist > Mathf.Epsilon) return new Vector3(); diff --git a/modules/mono/glue/glue_header.h b/modules/mono/glue/glue_header.h index 1d64fa4d72..cedc8e9992 100644 --- a/modules/mono/glue/glue_header.h +++ b/modules/mono/glue/glue_header.h @@ -27,6 +27,9 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + +#include "builtin_types_glue.h" + #include "../csharp_script.h" #include "../mono_gd/gd_mono_class.h" #include "../mono_gd/gd_mono_internals.h" @@ -90,12 +93,6 @@ MonoString *godot_icall_NodePath_operator_String(NodePath *p_np) { return GDMonoMarshal::mono_string_from_godot(p_np->operator String()); } -MonoArray *godot_icall_String_md5_buffer(MonoString *p_str) { - Vector<uint8_t> ret = GDMonoMarshal::mono_string_to_godot(p_str).md5_buffer(); - // TODO Check possible Array/Vector<uint8_t> problem? - return GDMonoMarshal::Array_to_mono_array(Variant(ret)); -} - // -- RID -- RID *godot_icall_RID_Ctor(Object *p_from) { @@ -114,6 +111,12 @@ void godot_icall_RID_Dtor(RID *p_ptr) { // -- String -- +MonoArray *godot_icall_String_md5_buffer(MonoString *p_str) { + Vector<uint8_t> ret = GDMonoMarshal::mono_string_to_godot(p_str).md5_buffer(); + // TODO Check possible Array/Vector<uint8_t> problem? + return GDMonoMarshal::Array_to_mono_array(Variant(ret)); +} + MonoString *godot_icall_String_md5_text(MonoString *p_str) { String ret = GDMonoMarshal::mono_string_to_godot(p_str).md5_text(); return GDMonoMarshal::mono_string_from_godot(ret); @@ -302,3 +305,7 @@ MonoObject *godot_icall_Godot_weakref(Object *p_obj) { return GDMonoUtils::create_managed_for_godot_object(CACHED_CLASS(WeakRef), Reference::get_class_static(), Object::cast_to<Object>(wref.ptr())); } + +void godot_register_header_icalls() { + godot_register_builtin_type_icalls(); +} diff --git a/modules/mono/godotsharp_defs.h b/modules/mono/godotsharp_defs.h index 1679eb6242..4c26c3e6bd 100644 --- a/modules/mono/godotsharp_defs.h +++ b/modules/mono/godotsharp_defs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOTSHARP_DEFS_H #define GODOTSHARP_DEFS_H diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp index a2965080d6..92c5cdc5c1 100644 --- a/modules/mono/godotsharp_dirs.cpp +++ b/modules/mono/godotsharp_dirs.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "godotsharp_dirs.h" #include "os/os.h" diff --git a/modules/mono/godotsharp_dirs.h b/modules/mono/godotsharp_dirs.h index 0e484fea91..e87b5a4150 100644 --- a/modules/mono/godotsharp_dirs.h +++ b/modules/mono/godotsharp_dirs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GODOTSHARP_DIRS_H #define GODOTSHARP_DIRS_H diff --git a/modules/mono/mono_gc_handle.cpp b/modules/mono/mono_gc_handle.cpp index 5ae12f5ebf..4e82bcd03e 100644 --- a/modules/mono/mono_gc_handle.cpp +++ b/modules/mono/mono_gc_handle.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mono_gc_handle.h" #include "mono_gd/gd_mono.h" diff --git a/modules/mono/mono_gc_handle.h b/modules/mono/mono_gc_handle.h index 565f5d4f76..9cb3ef0fbb 100644 --- a/modules/mono/mono_gc_handle.h +++ b/modules/mono/mono_gc_handle.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CSHARP_GC_HANDLE_H #define CSHARP_GC_HANDLE_H diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index 5b65f020fc..f5febd415b 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono.h" #include <mono/metadata/exception.h> @@ -52,8 +53,7 @@ void gdmono_unhandled_exception_hook(MonoObject *exc, void *user_data) { (void)user_data; // UNUSED - ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8()); - mono_print_unhandled_exception(exc); + GDMonoUtils::print_unhandled_exception(exc); abort(); } @@ -226,7 +226,7 @@ void GDMono::initialize() { mono_install_unhandled_exception_hook(gdmono_unhandled_exception_hook, NULL); - OS::get_singleton()->print("Mono: ALL IS GOOD\n"); + OS::get_singleton()->print("Mono: INITIALIZED\n"); } #ifndef MONO_GLUE_DISABLED @@ -696,11 +696,13 @@ bool _GodotSharp::is_domain_loaded() { return GDMono::get_singleton()->get_scripts_domain() != NULL; } -#define ENQUEUE_FOR_DISPOSAL(m_queue, m_inst) \ - m_queue.push_back(m_inst); \ - if (queue_empty) { \ - queue_empty = false; \ - call_deferred("_dispose_callback"); \ +#define ENQUEUE_FOR_DISPOSAL(m_queue, m_inst) \ + m_queue.push_back(m_inst); \ + if (queue_empty) { \ + queue_empty = false; \ + if (!is_finalizing_domain()) { /* call_deferred may not be safe here */ \ + call_deferred("_dispose_callback"); \ + } \ } void _GodotSharp::queue_dispose(MonoObject *p_mono_object, Object *p_object) { diff --git a/modules/mono/mono_gd/gd_mono.h b/modules/mono/mono_gd/gd_mono.h index c565e26de6..67251778c6 100644 --- a/modules/mono/mono_gd/gd_mono.h +++ b/modules/mono/mono_gd/gd_mono.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_H #define GD_MONO_H @@ -112,14 +113,6 @@ public: #endif #endif - enum MemberVisibility { - PRIVATE, - PROTECTED_AND_INTERNAL, // FAM_AND_ASSEM - INTERNAL, // ASSEMBLY - PROTECTED, // FAMILY - PUBLIC - }; - static GDMono *get_singleton() { return singleton; } // Do not use these, unless you know what you're doing diff --git a/modules/mono/mono_gd/gd_mono_assembly.cpp b/modules/mono/mono_gd/gd_mono_assembly.cpp index 7a1bf99a36..ba56ed6ed5 100644 --- a/modules/mono/mono_gd/gd_mono_assembly.cpp +++ b/modules/mono/mono_gd/gd_mono_assembly.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_assembly.h" #include <mono/metadata/mono-debug.h> @@ -318,7 +319,7 @@ GDMonoClass *GDMonoAssembly::get_object_derived_class(const StringName &p_class) void *iter = NULL; while (true) { - MonoClass *raw_nested = mono_class_get_nested_types(current_nested->get_raw(), &iter); + MonoClass *raw_nested = mono_class_get_nested_types(current_nested->get_mono_ptr(), &iter); if (!raw_nested) break; diff --git a/modules/mono/mono_gd/gd_mono_assembly.h b/modules/mono/mono_gd/gd_mono_assembly.h index 9f38202758..8e7aa701bf 100644 --- a/modules/mono/mono_gd/gd_mono_assembly.h +++ b/modules/mono/mono_gd/gd_mono_assembly.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_ASSEMBLY_H #define GD_MONO_ASSEMBLY_H diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp index 2bcce86d8c..b826352f02 100644 --- a/modules/mono/mono_gd/gd_mono_class.cpp +++ b/modules/mono/mono_gd/gd_mono_class.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_class.h" #include <mono/metadata/attrdefs.h> @@ -35,7 +36,7 @@ MonoType *GDMonoClass::get_raw_type(GDMonoClass *p_class) { - return mono_class_get_type(p_class->get_raw()); + return mono_class_get_type(p_class->get_mono_ptr()); } bool GDMonoClass::is_assignable_from(GDMonoClass *p_from) const { @@ -74,7 +75,7 @@ Vector<MonoClassField *> GDMonoClass::get_enum_fields() { void *iter = NULL; MonoClassField *raw_field = NULL; - while ((raw_field = mono_class_get_fields(get_raw(), &iter)) != NULL) { + while ((raw_field = mono_class_get_fields(get_mono_ptr(), &iter)) != NULL) { uint32_t field_flags = mono_field_get_flags(raw_field); // Enums have an instance field named value__ which holds the value of the enum. @@ -88,11 +89,6 @@ Vector<MonoClassField *> GDMonoClass::get_enum_fields() { } #endif -bool GDMonoClass::has_method(const StringName &p_name) { - - return get_method(p_name) != NULL; -} - bool GDMonoClass::has_attribute(GDMonoClass *p_attr_class) { #ifdef DEBUG_ENABLED @@ -105,7 +101,7 @@ bool GDMonoClass::has_attribute(GDMonoClass *p_attr_class) { if (!attributes) return false; - return mono_custom_attrs_has_attr(attributes, p_attr_class->get_raw()); + return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr()); } MonoObject *GDMonoClass::get_attribute(GDMonoClass *p_attr_class) { @@ -120,14 +116,14 @@ MonoObject *GDMonoClass::get_attribute(GDMonoClass *p_attr_class) { if (!attributes) return NULL; - return mono_custom_attrs_get_attr(attributes, p_attr_class->get_raw()); + return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr()); } void GDMonoClass::fetch_attributes() { ERR_FAIL_COND(attributes != NULL); - attributes = mono_custom_attrs_from_class(get_raw()); + attributes = mono_custom_attrs_from_class(get_mono_ptr()); attrs_fetched = true; } @@ -140,7 +136,7 @@ void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base void *iter = NULL; MonoMethod *raw_method = NULL; - while ((raw_method = mono_class_get_methods(get_raw(), &iter)) != NULL) { + while ((raw_method = mono_class_get_methods(get_mono_ptr(), &iter)) != NULL) { StringName name = mono_method_get_name(raw_method); GDMonoMethod *method = get_method(raw_method, name); @@ -224,7 +220,7 @@ void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base methods_fetched = true; } -GDMonoMethod *GDMonoClass::get_method(const StringName &p_name) { +GDMonoMethod *GDMonoClass::get_fetched_method_unknown_params(const StringName &p_name) { ERR_FAIL_COND_V(!methods_fetched, NULL); @@ -238,6 +234,11 @@ GDMonoMethod *GDMonoClass::get_method(const StringName &p_name) { return NULL; } +bool GDMonoClass::has_fetched_method_unknown_params(const StringName &p_name) { + + return get_fetched_method_unknown_params(p_name) != NULL; +} + GDMonoMethod *GDMonoClass::get_method(const StringName &p_name, int p_params_count) { MethodKey key = MethodKey(p_name, p_params_count); @@ -302,6 +303,8 @@ GDMonoMethod *GDMonoClass::get_method_with_desc(const String &p_description, boo MonoMethod *method = mono_method_desc_search_in_class(desc, mono_class); mono_method_desc_free(desc); + ERR_FAIL_COND_V(mono_method_get_class(method) != mono_class, NULL); + return get_method(method); } @@ -334,7 +337,7 @@ const Vector<GDMonoField *> &GDMonoClass::get_all_fields() { void *iter = NULL; MonoClassField *raw_field = NULL; - while ((raw_field = mono_class_get_fields(get_raw(), &iter)) != NULL) { + while ((raw_field = mono_class_get_fields(mono_class, &iter)) != NULL) { StringName name = mono_field_get_name(raw_field); Map<StringName, GDMonoField *>::Element *match = fields.find(name); @@ -353,6 +356,54 @@ const Vector<GDMonoField *> &GDMonoClass::get_all_fields() { return fields_list; } +GDMonoProperty *GDMonoClass::get_property(const StringName &p_name) { + + Map<StringName, GDMonoProperty *>::Element *result = properties.find(p_name); + + if (result) + return result->value(); + + if (properties_fetched) + return NULL; + + MonoProperty *raw_property = mono_class_get_property_from_name(mono_class, String(p_name).utf8().get_data()); + + if (raw_property) { + GDMonoProperty *property = memnew(GDMonoProperty(raw_property, this)); + properties.insert(p_name, property); + + return property; + } + + return NULL; +} + +const Vector<GDMonoProperty *> &GDMonoClass::get_all_properties() { + + if (properties_fetched) + return properties_list; + + void *iter = NULL; + MonoProperty *raw_property = NULL; + while ((raw_property = mono_class_get_properties(mono_class, &iter)) != NULL) { + StringName name = mono_property_get_name(raw_property); + + Map<StringName, GDMonoProperty *>::Element *match = properties.find(name); + + if (match) { + properties_list.push_back(match->get()); + } else { + GDMonoProperty *property = memnew(GDMonoProperty(raw_property, this)); + properties.insert(name, property); + properties_list.push_back(property); + } + } + + properties_fetched = true; + + return properties_list; +} + GDMonoClass::GDMonoClass(const StringName &p_namespace, const StringName &p_name, MonoClass *p_class, GDMonoAssembly *p_assembly) { namespace_name = p_namespace; @@ -365,6 +416,7 @@ GDMonoClass::GDMonoClass(const StringName &p_namespace, const StringName &p_name methods_fetched = false; fields_fetched = false; + properties_fetched = false; } GDMonoClass::~GDMonoClass() { @@ -377,6 +429,10 @@ GDMonoClass::~GDMonoClass() { memdelete(E->value()); } + for (Map<StringName, GDMonoProperty *>::Element *E = properties.front(); E; E = E->next()) { + memdelete(E->value()); + } + { // Ugly workaround... // We may have duplicated values, because we redirect snake_case methods to PascalCasel (only Godot API methods). diff --git a/modules/mono/mono_gd/gd_mono_class.h b/modules/mono/mono_gd/gd_mono_class.h index b9d34eef3a..f5895be144 100644 --- a/modules/mono/mono_gd/gd_mono_class.h +++ b/modules/mono/mono_gd/gd_mono_class.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_CLASS_H #define GD_MONO_CLASS_H @@ -38,6 +39,7 @@ #include "gd_mono_field.h" #include "gd_mono_header.h" #include "gd_mono_method.h" +#include "gd_mono_property.h" #include "gd_mono_utils.h" class GDMonoClass { @@ -84,6 +86,10 @@ class GDMonoClass { Map<StringName, GDMonoField *> fields; Vector<GDMonoField *> fields_list; + bool properties_fetched; + Map<StringName, GDMonoProperty *> properties; + Vector<GDMonoProperty *> properties_list; + friend class GDMonoAssembly; GDMonoClass(const StringName &p_namespace, const StringName &p_name, MonoClass *p_class, GDMonoAssembly *p_assembly); @@ -95,7 +101,7 @@ public: _FORCE_INLINE_ StringName get_namespace() const { return namespace_name; } _FORCE_INLINE_ StringName get_name() const { return class_name; } - _FORCE_INLINE_ MonoClass *get_raw() const { return mono_class; } + _FORCE_INLINE_ MonoClass *get_mono_ptr() const { return mono_class; } _FORCE_INLINE_ const GDMonoAssembly *get_assembly() const { return assembly; } String get_full_name() const; @@ -106,7 +112,8 @@ public: Vector<MonoClassField *> get_enum_fields(); #endif - bool has_method(const StringName &p_name); + GDMonoMethod *get_fetched_method_unknown_params(const StringName &p_name); + bool has_fetched_method_unknown_params(const StringName &p_name); bool has_attribute(GDMonoClass *p_attr_class); MonoObject *get_attribute(GDMonoClass *p_attr_class); @@ -114,8 +121,7 @@ public: void fetch_attributes(); void fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base); - GDMonoMethod *get_method(const StringName &p_name); - GDMonoMethod *get_method(const StringName &p_name, int p_params_count); + GDMonoMethod *get_method(const StringName &p_name, int p_params_count = 0); GDMonoMethod *get_method(MonoMethod *p_raw_method); GDMonoMethod *get_method(MonoMethod *p_raw_method, const StringName &p_name); GDMonoMethod *get_method(MonoMethod *p_raw_method, const StringName &p_name, int p_params_count); @@ -124,6 +130,9 @@ public: GDMonoField *get_field(const StringName &p_name); const Vector<GDMonoField *> &get_all_fields(); + GDMonoProperty *get_property(const StringName &p_name); + const Vector<GDMonoProperty *> &get_all_properties(); + ~GDMonoClass(); }; diff --git a/modules/pbm/bitmap_loader_pbm.h b/modules/mono/mono_gd/gd_mono_class_member.h index d5955adba3..008ea0e416 100644 --- a/modules/pbm/bitmap_loader_pbm.h +++ b/modules/mono/mono_gd/gd_mono_class_member.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* bitmap_loader_pbm.h */ +/* gd_mono_class_member.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,21 +27,41 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef BITMAP_LOADER_PBM_H -#define BITMAP_LOADER_PBM_H +#ifndef GD_MONO_CLASS_MEMBER_H +#define GD_MONO_CLASS_MEMBER_H -#include "io/resource_loader.h" +#include "gd_mono_header.h" -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ -class ResourceFormatPBM : public ResourceFormatLoader { +#include <mono/metadata/object.h> +class GDMonoClassMember { public: - virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL); - virtual void get_recognized_extensions(List<String> *p_extensions) const; - virtual bool handles_type(const String &p_type) const; - virtual String get_resource_type(const String &p_path) const; + enum Visibility { + PRIVATE, + PROTECTED_AND_INTERNAL, // FAM_AND_ASSEM + INTERNAL, // ASSEMBLY + PROTECTED, // FAMILY + PUBLIC + }; + + enum MemberType { + MEMBER_TYPE_FIELD, + MEMBER_TYPE_PROPERTY, + MEMBER_TYPE_METHOD + }; + + virtual ~GDMonoClassMember() {} + + virtual MemberType get_member_type() = 0; + + virtual StringName get_name() = 0; + + virtual bool is_static() = 0; + + virtual Visibility get_visibility() = 0; + + virtual bool has_attribute(GDMonoClass *p_attr_class) = 0; + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class) = 0; }; -#endif +#endif // GD_MONO_CLASS_MEMBER_H diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index 133cfc9145..3b91777ed4 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_field.h" #include <mono/metadata/attrdefs.h> @@ -38,7 +39,7 @@ void GDMonoField::set_value_raw(MonoObject *p_object, void *p_ptr) { mono_field_set_value(p_object, mono_field, &p_ptr); } -void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) { +void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_value) { #define SET_FROM_STRUCT_AND_BREAK(m_type) \ { \ const m_type &val = p_value.operator ::m_type(); \ @@ -138,7 +139,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) { if (tclass == CACHED_CLASS(Plane)) SET_FROM_STRUCT_AND_BREAK(Plane); - if (mono_class_is_enum(tclass->get_raw())) + if (mono_class_is_enum(tclass->get_mono_ptr())) SET_FROM_PRIMITIVE(signed int); ERR_EXPLAIN(String() + "Attempted to set the value of a field of unmarshallable type: " + tclass->get_name()); @@ -264,7 +265,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) { } break; case MONO_TYPE_GENERICINST: { - if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_raw()) { + if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_mono_ptr()) { MonoObject *managed = GDMonoMarshal::Dictionary_to_mono_object(p_value.operator Dictionary()); mono_field_set_value(p_object, mono_field, managed); break; @@ -280,6 +281,10 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) { #undef SET_FROM_PRIMITIVE } +MonoObject *GDMonoField::get_value(MonoObject *p_object) { + return mono_field_get_value_object(mono_domain_get(), mono_field, p_object); +} + bool GDMonoField::get_bool_value(MonoObject *p_object) { return (bool)GDMonoMarshal::unbox<MonoBoolean>(get_value(p_object)); } @@ -302,7 +307,7 @@ bool GDMonoField::has_attribute(GDMonoClass *p_attr_class) { if (!attributes) return false; - return mono_custom_attrs_has_attr(attributes, p_attr_class->get_raw()); + return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr()); } MonoObject *GDMonoField::get_attribute(GDMonoClass *p_attr_class) { @@ -314,12 +319,12 @@ MonoObject *GDMonoField::get_attribute(GDMonoClass *p_attr_class) { if (!attributes) return NULL; - return mono_custom_attrs_get_attr(attributes, p_attr_class->get_raw()); + return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr()); } void GDMonoField::fetch_attributes() { ERR_FAIL_COND(attributes != NULL); - attributes = mono_custom_attrs_from_field(owner->get_raw(), get_raw()); + attributes = mono_custom_attrs_from_field(owner->get_mono_ptr(), mono_field); attrs_fetched = true; } @@ -327,26 +332,26 @@ bool GDMonoField::is_static() { return mono_field_get_flags(mono_field) & MONO_FIELD_ATTR_STATIC; } -GDMono::MemberVisibility GDMonoField::get_visibility() { +GDMonoClassMember::Visibility GDMonoField::get_visibility() { switch (mono_field_get_flags(mono_field) & MONO_FIELD_ATTR_FIELD_ACCESS_MASK) { case MONO_FIELD_ATTR_PRIVATE: - return GDMono::PRIVATE; + return GDMonoClassMember::PRIVATE; case MONO_FIELD_ATTR_FAM_AND_ASSEM: - return GDMono::PROTECTED_AND_INTERNAL; + return GDMonoClassMember::PROTECTED_AND_INTERNAL; case MONO_FIELD_ATTR_ASSEMBLY: - return GDMono::INTERNAL; + return GDMonoClassMember::INTERNAL; case MONO_FIELD_ATTR_FAMILY: - return GDMono::PROTECTED; + return GDMonoClassMember::PROTECTED; case MONO_FIELD_ATTR_PUBLIC: - return GDMono::PUBLIC; + return GDMonoClassMember::PUBLIC; default: - ERR_FAIL_V(GDMono::PRIVATE); + ERR_FAIL_V(GDMonoClassMember::PRIVATE); } } -GDMonoField::GDMonoField(MonoClassField *p_raw_field, GDMonoClass *p_owner) { +GDMonoField::GDMonoField(MonoClassField *p_mono_field, GDMonoClass *p_owner) { owner = p_owner; - mono_field = p_raw_field; + mono_field = p_mono_field; name = mono_field_get_name(mono_field); MonoType *field_type = mono_field_get_type(mono_field); type.type_encoding = mono_type_get_type(field_type); diff --git a/modules/mono/mono_gd/gd_mono_field.h b/modules/mono/mono_gd/gd_mono_field.h index a5559df059..a6b368c4d6 100644 --- a/modules/mono/mono_gd/gd_mono_field.h +++ b/modules/mono/mono_gd/gd_mono_field.h @@ -27,47 +27,49 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDMONOFIELD_H #define GDMONOFIELD_H #include "gd_mono.h" +#include "gd_mono_class_member.h" #include "gd_mono_header.h" -class GDMonoField { +class GDMonoField : public GDMonoClassMember { + GDMonoClass *owner; MonoClassField *mono_field; - String name; + StringName name; ManagedType type; bool attrs_fetched; MonoCustomAttrInfo *attributes; public: - _FORCE_INLINE_ String get_name() const { return name; } - _FORCE_INLINE_ ManagedType get_type() const { return type; } + virtual MemberType get_member_type() { return MEMBER_TYPE_FIELD; } - _FORCE_INLINE_ MonoClassField *get_raw() const { return mono_field; } + virtual StringName get_name() { return name; } + + virtual bool is_static(); + virtual Visibility get_visibility(); + + virtual bool has_attribute(GDMonoClass *p_attr_class); + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class); + void fetch_attributes(); + + _FORCE_INLINE_ ManagedType get_type() const { return type; } void set_value_raw(MonoObject *p_object, void *p_ptr); - void set_value(MonoObject *p_object, const Variant &p_value); + void set_value_from_variant(MonoObject *p_object, const Variant &p_value); - _FORCE_INLINE_ MonoObject *get_value(MonoObject *p_object) { - return mono_field_get_value_object(mono_domain_get(), mono_field, p_object); - } + MonoObject *get_value(MonoObject *p_object); bool get_bool_value(MonoObject *p_object); int get_int_value(MonoObject *p_object); String get_string_value(MonoObject *p_object); - bool has_attribute(GDMonoClass *p_attr_class); - MonoObject *get_attribute(GDMonoClass *p_attr_class); - void fetch_attributes(); - - bool is_static(); - GDMono::MemberVisibility get_visibility(); - - GDMonoField(MonoClassField *p_raw_field, GDMonoClass *p_owner); + GDMonoField(MonoClassField *p_mono_field, GDMonoClass *p_owner); ~GDMonoField(); }; diff --git a/modules/mono/mono_gd/gd_mono_header.h b/modules/mono/mono_gd/gd_mono_header.h index a749aa8768..2b5110f0b9 100644 --- a/modules/mono/mono_gd/gd_mono_header.h +++ b/modules/mono/mono_gd/gd_mono_header.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_HEADER_H #define GD_MONO_HEADER_H @@ -34,8 +35,10 @@ class GDMonoAssembly; class GDMonoClass; -class GDMonoMethod; +class GDMonoClassMember; class GDMonoField; +class GDMonoProperty; +class GDMonoMethod; struct ManagedType { int type_encoding; diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp index 95d15c3581..a1a79f957f 100644 --- a/modules/mono/mono_gd/gd_mono_internals.cpp +++ b/modules/mono/mono_gd/gd_mono_internals.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* godotsharp_internals.cpp */ +/* gd_mono_internals.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_internals.h" #include "../csharp_script.h" diff --git a/modules/mono/mono_gd/gd_mono_internals.h b/modules/mono/mono_gd/gd_mono_internals.h index 91f6fcbbc7..abec65e7d4 100644 --- a/modules/mono/mono_gd/gd_mono_internals.h +++ b/modules/mono/mono_gd/gd_mono_internals.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* godotsharp_internals.h */ +/* gd_mono_internals.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_INTERNALS_H #define GD_MONO_INTERNALS_H diff --git a/modules/mono/mono_gd/gd_mono_log.cpp b/modules/mono/mono_gd/gd_mono_log.cpp index f954530552..eabea8dc3c 100644 --- a/modules/mono/mono_gd/gd_mono_log.cpp +++ b/modules/mono/mono_gd/gd_mono_log.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_log.h" #include <mono/utils/mono-logger.h> diff --git a/modules/mono/mono_gd/gd_mono_log.h b/modules/mono/mono_gd/gd_mono_log.h index 4ed5f2a255..a7e374858c 100644 --- a/modules/mono/mono_gd/gd_mono_log.h +++ b/modules/mono/mono_gd/gd_mono_log.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_LOG_H #define GD_MONO_LOG_H diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp index 48d08b159c..aa1a8e39c7 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.cpp +++ b/modules/mono/mono_gd/gd_mono_marshal.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_marshal.h" #include "gd_mono.h" @@ -113,7 +114,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) { if (tclass == CACHED_CLASS(Plane)) return Variant::PLANE; - if (mono_class_is_enum(tclass->get_raw())) + if (mono_class_is_enum(tclass->get_mono_ptr())) return Variant::INT; } break; @@ -164,7 +165,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) { } break; case MONO_TYPE_GENERICINST: { - if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_raw()) { + if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_mono_ptr()) { return Variant::DICTIONARY; } } break; @@ -306,9 +307,9 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty if (tclass == CACHED_CLASS(Plane)) RETURN_BOXED_STRUCT(Plane, p_var); - if (mono_class_is_enum(tclass->get_raw())) { + if (mono_class_is_enum(tclass->get_mono_ptr())) { int val = p_var->operator signed int(); - return BOX_ENUM(tclass->get_raw(), val); + return BOX_ENUM(tclass->get_mono_ptr(), val); } } break; @@ -432,7 +433,7 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty } break; case MONO_TYPE_GENERICINST: { - if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_raw()) { + if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_mono_ptr()) { return Dictionary_to_mono_object(p_var->operator Dictionary()); } } break; @@ -458,11 +459,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) { type.type_encoding = mono_type_get_type(raw_type); type.type_class = tclass; - return mono_object_to_variant(p_obj, type); -} - -Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) { - switch (p_type.type_encoding) { + switch (type.type_encoding) { case MONO_TYPE_BOOLEAN: return (bool)unbox<MonoBoolean>(p_obj); @@ -496,7 +493,7 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) { } break; case MONO_TYPE_VALUETYPE: { - GDMonoClass *tclass = p_type.type_class; + GDMonoClass *tclass = type.type_class; if (tclass == CACHED_CLASS(Vector2)) RETURN_UNBOXED_STRUCT(Vector2, p_obj); @@ -528,13 +525,13 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) { if (tclass == CACHED_CLASS(Plane)) RETURN_UNBOXED_STRUCT(Plane, p_obj); - if (mono_class_is_enum(tclass->get_raw())) + if (mono_class_is_enum(tclass->get_mono_ptr())) return unbox<int32_t>(p_obj); } break; case MONO_TYPE_ARRAY: case MONO_TYPE_SZARRAY: { - MonoArrayType *array_type = mono_type_get_array_type(GDMonoClass::get_raw_type(p_type.type_class)); + MonoArrayType *array_type = mono_type_get_array_type(GDMonoClass::get_raw_type(type.type_class)); if (array_type->eklass == CACHED_CLASS_RAW(MonoObject)) return mono_array_to_Array((MonoArray *)p_obj); @@ -565,7 +562,7 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) { } break; case MONO_TYPE_CLASS: { - GDMonoClass *type_class = p_type.type_class; + GDMonoClass *type_class = type.type_class; // GodotObject if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) { @@ -585,14 +582,14 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) { } break; case MONO_TYPE_GENERICINST: { - if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_raw()) { + if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_mono_ptr()) { return mono_object_to_Dictionary(p_obj); } } break; } ERR_EXPLAIN(String() + "Attempted to convert an unmarshallable managed type to Variant. Name: \'" + - p_type.type_class->get_name() + "\' Encoding: " + itos(p_type.type_encoding)); + type.type_class->get_name() + "\' Encoding: " + itos(type.type_encoding)); ERR_FAIL_V(Variant()); } diff --git a/modules/mono/mono_gd/gd_mono_marshal.h b/modules/mono/mono_gd/gd_mono_marshal.h index 0570415575..6572408ab5 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.h +++ b/modules/mono/mono_gd/gd_mono_marshal.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GDMONOMARSHAL_H #define GDMONOMARSHAL_H @@ -101,7 +102,6 @@ _FORCE_INLINE_ MonoObject *variant_to_mono_object(Variant p_var) { } Variant mono_object_to_variant(MonoObject *p_obj); -Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type); // Array diff --git a/modules/mono/mono_gd/gd_mono_method.cpp b/modules/mono/mono_gd/gd_mono_method.cpp index 01afd1e51e..1f8e9a1926 100644 --- a/modules/mono/mono_gd/gd_mono_method.cpp +++ b/modules/mono/mono_gd/gd_mono_method.cpp @@ -27,11 +27,14 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_method.h" #include "gd_mono_class.h" #include "gd_mono_marshal.h" +#include <mono/metadata/attrdefs.h> + void GDMonoMethod::_update_signature() { // Apparently MonoMethodSignature needs not to be freed. // mono_method_signature caches the result, we don't need to cache it ourselves. @@ -41,7 +44,6 @@ void GDMonoMethod::_update_signature() { } void GDMonoMethod::_update_signature(MonoMethodSignature *p_method_sig) { - is_instance = mono_signature_is_instance(p_method_sig); params_count = mono_signature_get_param_count(p_method_sig); MonoType *ret_type = mono_signature_get_return_type(p_method_sig); @@ -61,15 +63,34 @@ void GDMonoMethod::_update_signature(MonoMethodSignature *p_method_sig) { param_type.type_encoding = mono_type_get_type(param_raw_type); - if (param_type.type_encoding != MONO_TYPE_VOID) { - MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type); - param_type.type_class = GDMono::get_singleton()->get_class(param_type_class); - } + MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type); + param_type.type_class = GDMono::get_singleton()->get_class(param_type_class); param_types.push_back(param_type); } } +bool GDMonoMethod::is_static() { + return mono_method_get_flags(mono_method, NULL) & MONO_METHOD_ATTR_STATIC; +} + +GDMonoClassMember::Visibility GDMonoMethod::get_visibility() { + switch (mono_method_get_flags(mono_method, NULL) & MONO_METHOD_ATTR_ACCESS_MASK) { + case MONO_METHOD_ATTR_PRIVATE: + return GDMonoClassMember::PRIVATE; + case MONO_METHOD_ATTR_FAM_AND_ASSEM: + return GDMonoClassMember::PROTECTED_AND_INTERNAL; + case MONO_METHOD_ATTR_ASSEM: + return GDMonoClassMember::INTERNAL; + case MONO_METHOD_ATTR_FAMILY: + return GDMonoClassMember::PROTECTED; + case MONO_METHOD_ATTR_PUBLIC: + return GDMonoClassMember::PUBLIC; + default: + ERR_FAIL_V(GDMonoClassMember::PRIVATE); + } +} + void *GDMonoMethod::get_thunk() { return mono_method_get_unmanaged_thunk(mono_method); } @@ -87,11 +108,11 @@ MonoObject *GDMonoMethod::invoke(MonoObject *p_object, const Variant **p_params, MonoObject *ret = mono_runtime_invoke_array(mono_method, p_object, params, &exc); if (exc) { + ret = NULL; if (r_exc) { *r_exc = exc; } else { - ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8()); - mono_print_unhandled_exception(exc); + GDMonoUtils::print_unhandled_exception(exc); } } @@ -104,8 +125,7 @@ MonoObject *GDMonoMethod::invoke(MonoObject *p_object, const Variant **p_params, if (r_exc) { *r_exc = exc; } else { - ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8()); - mono_print_unhandled_exception(exc); + GDMonoUtils::print_unhandled_exception(exc); } } @@ -123,11 +143,11 @@ MonoObject *GDMonoMethod::invoke_raw(MonoObject *p_object, void **p_params, Mono MonoObject *ret = mono_runtime_invoke(mono_method, p_object, p_params, &exc); if (exc) { + ret = NULL; if (r_exc) { *r_exc = exc; } else { - ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8()); - mono_print_unhandled_exception(exc); + GDMonoUtils::print_unhandled_exception(exc); } } @@ -143,7 +163,7 @@ bool GDMonoMethod::has_attribute(GDMonoClass *p_attr_class) { if (!attributes) return false; - return mono_custom_attrs_has_attr(attributes, p_attr_class->get_raw()); + return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr()); } MonoObject *GDMonoMethod::get_attribute(GDMonoClass *p_attr_class) { @@ -155,7 +175,7 @@ MonoObject *GDMonoMethod::get_attribute(GDMonoClass *p_attr_class) { if (!attributes) return NULL; - return mono_custom_attrs_get_attr(attributes, p_attr_class->get_raw()); + return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr()); } void GDMonoMethod::fetch_attributes() { diff --git a/modules/mono/mono_gd/gd_mono_method.h b/modules/mono/mono_gd/gd_mono_method.h index f1f6e51d45..14df8dcfb4 100644 --- a/modules/mono/mono_gd/gd_mono_method.h +++ b/modules/mono/mono_gd/gd_mono_method.h @@ -27,17 +27,18 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONO_METHOD_H #define GD_MONO_METHOD_H #include "gd_mono.h" +#include "gd_mono_class_member.h" #include "gd_mono_header.h" -class GDMonoMethod { +class GDMonoMethod : public GDMonoClassMember { StringName name; - bool is_instance; int params_count; ManagedType return_type; Vector<ManagedType> param_types; @@ -53,9 +54,18 @@ class GDMonoMethod { MonoMethod *mono_method; public: - _FORCE_INLINE_ StringName get_name() { return name; } + virtual MemberType get_member_type() { return MEMBER_TYPE_METHOD; } + + virtual StringName get_name() { return name; } + + virtual bool is_static(); + + virtual Visibility get_visibility(); + + virtual bool has_attribute(GDMonoClass *p_attr_class); + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class); + virtual void fetch_attributes(); - _FORCE_INLINE_ bool is_static() { return !is_instance; } _FORCE_INLINE_ int get_parameters_count() { return params_count; } _FORCE_INLINE_ ManagedType get_return_type() { return return_type; } @@ -65,10 +75,6 @@ public: MonoObject *invoke(MonoObject *p_object, MonoObject **r_exc = NULL); MonoObject *invoke_raw(MonoObject *p_object, void **p_params, MonoObject **r_exc = NULL); - bool has_attribute(GDMonoClass *p_attr_class); - MonoObject *get_attribute(GDMonoClass *p_attr_class); - void fetch_attributes(); - String get_full_name(bool p_signature = false) const; String get_full_name_no_class() const; String get_ret_type_full_name() const; diff --git a/modules/mono/mono_gd/gd_mono_property.cpp b/modules/mono/mono_gd/gd_mono_property.cpp new file mode 100644 index 0000000000..0fe527b199 --- /dev/null +++ b/modules/mono/mono_gd/gd_mono_property.cpp @@ -0,0 +1,199 @@ +/*************************************************************************/ +/* gd_mono_property.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "gd_mono_property.h" + +#include "gd_mono_class.h" +#include "gd_mono_marshal.h" + +#include <mono/metadata/attrdefs.h> + +GDMonoProperty::GDMonoProperty(MonoProperty *p_mono_property, GDMonoClass *p_owner) { + owner = p_owner; + mono_property = p_mono_property; + name = mono_property_get_name(mono_property); + + MonoMethod *prop_method = mono_property_get_get_method(mono_property); + + if (prop_method) { + MonoMethodSignature *getter_sig = mono_method_signature(prop_method); + + MonoType *ret_type = mono_signature_get_return_type(getter_sig); + + type.type_encoding = mono_type_get_type(ret_type); + MonoClass *ret_type_class = mono_class_from_mono_type(ret_type); + type.type_class = GDMono::get_singleton()->get_class(ret_type_class); + } else { + prop_method = mono_property_get_set_method(mono_property); + + MonoMethodSignature *setter_sig = mono_method_signature(prop_method); + + void *iter = NULL; + MonoType *param_raw_type = mono_signature_get_params(setter_sig, &iter); + + type.type_encoding = mono_type_get_type(param_raw_type); + MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type); + type.type_class = GDMono::get_singleton()->get_class(param_type_class); + } + + attrs_fetched = false; + attributes = NULL; +} + +GDMonoProperty::~GDMonoProperty() { + if (attributes) { + mono_custom_attrs_free(attributes); + } +} + +bool GDMonoProperty::is_static() { + MonoMethod *prop_method = mono_property_get_get_method(mono_property); + if (prop_method == NULL) + prop_method = mono_property_get_set_method(mono_property); + return mono_method_get_flags(prop_method, NULL) & MONO_METHOD_ATTR_STATIC; +} + +GDMonoClassMember::Visibility GDMonoProperty::get_visibility() { + MonoMethod *prop_method = mono_property_get_get_method(mono_property); + if (prop_method == NULL) + prop_method = mono_property_get_set_method(mono_property); + + switch (mono_method_get_flags(prop_method, NULL) & MONO_METHOD_ATTR_ACCESS_MASK) { + case MONO_METHOD_ATTR_PRIVATE: + return GDMonoClassMember::PRIVATE; + case MONO_METHOD_ATTR_FAM_AND_ASSEM: + return GDMonoClassMember::PROTECTED_AND_INTERNAL; + case MONO_METHOD_ATTR_ASSEM: + return GDMonoClassMember::INTERNAL; + case MONO_METHOD_ATTR_FAMILY: + return GDMonoClassMember::PROTECTED; + case MONO_METHOD_ATTR_PUBLIC: + return GDMonoClassMember::PUBLIC; + default: + ERR_FAIL_V(GDMonoClassMember::PRIVATE); + } +} + +bool GDMonoProperty::has_attribute(GDMonoClass *p_attr_class) { + ERR_FAIL_NULL_V(p_attr_class, false); + + if (!attrs_fetched) + fetch_attributes(); + + if (!attributes) + return false; + + return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr()); +} + +MonoObject *GDMonoProperty::get_attribute(GDMonoClass *p_attr_class) { + ERR_FAIL_NULL_V(p_attr_class, NULL); + + if (!attrs_fetched) + fetch_attributes(); + + if (!attributes) + return NULL; + + return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr()); +} + +void GDMonoProperty::fetch_attributes() { + ERR_FAIL_COND(attributes != NULL); + attributes = mono_custom_attrs_from_property(owner->get_mono_ptr(), mono_property); + attrs_fetched = true; +} + +bool GDMonoProperty::has_getter() { + return mono_property_get_get_method(mono_property) != NULL; +} + +bool GDMonoProperty::has_setter() { + return mono_property_get_set_method(mono_property) != NULL; +} + +void GDMonoProperty::set_value(MonoObject *p_object, MonoObject *p_value, MonoObject **r_exc) { + MonoMethod *prop_method = mono_property_get_set_method(mono_property); + + MonoArray *params = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(MonoObject), 1); + mono_array_set(params, MonoObject *, 0, p_value); + + MonoObject *exc = NULL; + mono_runtime_invoke_array(prop_method, p_object, params, &exc); + + if (exc) { + if (r_exc) { + *r_exc = exc; + } else { + GDMonoUtils::print_unhandled_exception(exc); + } + } +} + +void GDMonoProperty::set_value(MonoObject *p_object, void **p_params, MonoObject **r_exc) { + MonoObject *exc = NULL; + mono_property_set_value(mono_property, p_object, p_params, &exc); + + if (exc) { + if (r_exc) { + *r_exc = exc; + } else { + GDMonoUtils::print_unhandled_exception(exc); + } + } +} + +MonoObject *GDMonoProperty::get_value(MonoObject *p_object, MonoObject **r_exc) { + MonoObject *exc = NULL; + MonoObject *ret = mono_property_get_value(mono_property, p_object, NULL, &exc); + + if (exc) { + ret = NULL; + if (r_exc) { + *r_exc = exc; + } else { + GDMonoUtils::print_unhandled_exception(exc); + } + } + + return ret; +} + +bool GDMonoProperty::get_bool_value(MonoObject *p_object) { + return (bool)GDMonoMarshal::unbox<MonoBoolean>(get_value(p_object)); +} + +int GDMonoProperty::get_int_value(MonoObject *p_object) { + return GDMonoMarshal::unbox<int32_t>(get_value(p_object)); +} + +String GDMonoProperty::get_string_value(MonoObject *p_object) { + MonoObject *val = get_value(p_object); + return GDMonoMarshal::mono_string_to_godot((MonoString *)val); +} diff --git a/modules/pbm/register_types.cpp b/modules/mono/mono_gd/gd_mono_property.h index c2a1585afa..2a0065e850 100644 --- a/modules/pbm/register_types.cpp +++ b/modules/mono/mono_gd/gd_mono_property.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* register_types.cpp */ +/* gd_mono_property.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,19 +27,51 @@ /* 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" +#ifndef GD_MONO_PROPERTY_H +#define GD_MONO_PROPERTY_H -#include "bitmap_loader_pbm.h" +#include "gd_mono.h" +#include "gd_mono_class_member.h" +#include "gd_mono_header.h" -static ResourceFormatPBM *pbm_loader = NULL; +class GDMonoProperty : public GDMonoClassMember { -void register_pbm_types() { + GDMonoClass *owner; + MonoProperty *mono_property; - pbm_loader = memnew(ResourceFormatPBM); - ResourceLoader::add_resource_format_loader(pbm_loader); -} + StringName name; + ManagedType type; -void unregister_pbm_types() { + bool attrs_fetched; + MonoCustomAttrInfo *attributes; - memdelete(pbm_loader); -} +public: + virtual MemberType get_member_type() { return MEMBER_TYPE_PROPERTY; } + + virtual StringName get_name() { return name; } + + virtual bool is_static(); + virtual Visibility get_visibility(); + + virtual bool has_attribute(GDMonoClass *p_attr_class); + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class); + void fetch_attributes(); + + bool has_getter(); + bool has_setter(); + + _FORCE_INLINE_ ManagedType get_type() const { return type; } + + void set_value(MonoObject *p_object, MonoObject *p_value, MonoObject **r_exc = NULL); + void set_value(MonoObject *p_object, void **p_params, MonoObject **r_exc = NULL); + MonoObject *get_value(MonoObject *p_object, MonoObject **r_exc = NULL); + + bool get_bool_value(MonoObject *p_object); + int get_int_value(MonoObject *p_object); + String get_string_value(MonoObject *p_object); + + GDMonoProperty(MonoProperty *p_mono_property, GDMonoClass *p_owner); + ~GDMonoProperty(); +}; + +#endif // GD_MONO_PROPERTY_H diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp index 03f3053372..a2f0819a72 100644 --- a/modules/mono/mono_gd/gd_mono_utils.cpp +++ b/modules/mono/mono_gd/gd_mono_utils.cpp @@ -27,9 +27,11 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gd_mono_utils.h" #include "os/dir_access.h" +#include "os/os.h" #include "project_settings.h" #include "reference.h" @@ -42,16 +44,20 @@ namespace GDMonoUtils { MonoCache mono_cache; -#define CACHE_AND_CHECK(m_var, m_val) \ - { \ - m_var = m_val; \ - if (!m_var) ERR_PRINT("Mono Cache: Member " #m_var " is null. This is really bad!"); \ +#define CACHE_AND_CHECK(m_var, m_val) \ + { \ + m_var = m_val; \ + if (!m_var) { \ + ERR_EXPLAIN("Mono Cache: Member " #m_var " is null"); \ + ERR_FAIL(); \ + } \ } #define CACHE_CLASS_AND_CHECK(m_class, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.class_##m_class, m_val) #define CACHE_NS_CLASS_AND_CHECK(m_ns, m_class, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.class_##m_ns##_##m_class, m_val) #define CACHE_RAW_MONO_CLASS_AND_CHECK(m_class, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.rawclass_##m_class, m_val) #define CACHE_FIELD_AND_CHECK(m_class, m_field, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.field_##m_class##_##m_field, m_val) +#define CACHE_METHOD_AND_CHECK(m_class, m_method, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.method_##m_class##_##m_method, m_val) #define CACHE_METHOD_THUNK_AND_CHECK(m_class, m_method, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.methodthunk_##m_class##_##m_method, m_val) void MonoCache::clear_members() { @@ -71,6 +77,13 @@ void MonoCache::clear_members() { class_String = NULL; class_IntPtr = NULL; +#ifdef DEBUG_ENABLED + class_System_Diagnostics_StackTrace = NULL; + methodthunk_System_Diagnostics_StackTrace_GetFrames = NULL; + method_System_Diagnostics_StackTrace_ctor_bool = NULL; + method_System_Diagnostics_StackTrace_ctor_Exception_bool = NULL; +#endif + rawclass_Dictionary = NULL; class_Vector2 = NULL; @@ -93,6 +106,11 @@ void MonoCache::clear_members() { class_WeakRef = NULL; class_MarshalUtils = NULL; +#ifdef DEBUG_ENABLED + class_DebuggingUtils = NULL; + methodthunk_DebuggingUtils_GetStackFrameInfo = NULL; +#endif + class_ExportAttribute = NULL; field_ExportAttribute_hint = NULL; field_ExportAttribute_hintString = NULL; @@ -118,6 +136,12 @@ void MonoCache::clear_members() { task_scheduler_handle = Ref<MonoGCHandle>(); } +void MonoCache::cleanup() { + + corlib_cache_updated = false; + godot_api_cache_updated = false; +} + #define GODOT_API_CLASS(m_class) (GDMono::get_singleton()->get_api_assembly()->get_class(BINDINGS_NAMESPACE, #m_class)) void update_corlib_cache() { @@ -136,6 +160,15 @@ void update_corlib_cache() { CACHE_CLASS_AND_CHECK(double, GDMono::get_singleton()->get_corlib_assembly()->get_class(mono_get_double_class())); CACHE_CLASS_AND_CHECK(String, GDMono::get_singleton()->get_corlib_assembly()->get_class(mono_get_string_class())); CACHE_CLASS_AND_CHECK(IntPtr, GDMono::get_singleton()->get_corlib_assembly()->get_class(mono_get_intptr_class())); + +#ifdef DEBUG_ENABLED + CACHE_CLASS_AND_CHECK(System_Diagnostics_StackTrace, GDMono::get_singleton()->get_corlib_assembly()->get_class("System.Diagnostics", "StackTrace")); + CACHE_METHOD_THUNK_AND_CHECK(System_Diagnostics_StackTrace, GetFrames, (StackTrace_GetFrames)CACHED_CLASS(System_Diagnostics_StackTrace)->get_method("GetFrames")->get_thunk()); + CACHE_METHOD_AND_CHECK(System_Diagnostics_StackTrace, ctor_bool, CACHED_CLASS(System_Diagnostics_StackTrace)->get_method_with_desc("System.Diagnostics.StackTrace:.ctor(bool)", true)); + CACHE_METHOD_AND_CHECK(System_Diagnostics_StackTrace, ctor_Exception_bool, CACHED_CLASS(System_Diagnostics_StackTrace)->get_method_with_desc("System.Diagnostics.StackTrace:.ctor(System.Exception,bool)", true)); +#endif + + mono_cache.corlib_cache_updated = true; } void update_godot_api_cache() { @@ -151,7 +184,7 @@ void update_godot_api_cache() { CACHE_CLASS_AND_CHECK(Color, GODOT_API_CLASS(Color)); CACHE_CLASS_AND_CHECK(Plane, GODOT_API_CLASS(Plane)); CACHE_CLASS_AND_CHECK(NodePath, GODOT_API_CLASS(NodePath)); - CACHE_CLASS_AND_CHECK(RID, GODOT_API_CLASS(NodePath)); + CACHE_CLASS_AND_CHECK(RID, GODOT_API_CLASS(RID)); CACHE_CLASS_AND_CHECK(GodotObject, GODOT_API_CLASS(Object)); CACHE_CLASS_AND_CHECK(GodotReference, GODOT_API_CLASS(Reference)); CACHE_CLASS_AND_CHECK(Node, GODOT_API_CLASS(Node)); @@ -160,6 +193,10 @@ void update_godot_api_cache() { CACHE_CLASS_AND_CHECK(WeakRef, GODOT_API_CLASS(WeakRef)); CACHE_CLASS_AND_CHECK(MarshalUtils, GODOT_API_CLASS(MarshalUtils)); +#ifdef DEBUG_ENABLED + CACHE_CLASS_AND_CHECK(DebuggingUtils, GODOT_API_CLASS(DebuggingUtils)); +#endif + // Attributes CACHE_CLASS_AND_CHECK(ExportAttribute, GODOT_API_CLASS(ExportAttribute)); CACHE_FIELD_AND_CHECK(ExportAttribute, hint, CACHED_CLASS(ExportAttribute)->get_field("hint")); @@ -182,6 +219,10 @@ void update_godot_api_cache() { CACHE_METHOD_THUNK_AND_CHECK(SignalAwaiter, FailureCallback, (SignalAwaiter_FailureCallback)GODOT_API_CLASS(SignalAwaiter)->get_method("FailureCallback", 0)->get_thunk()); CACHE_METHOD_THUNK_AND_CHECK(GodotTaskScheduler, Activate, (GodotTaskScheduler_Activate)GODOT_API_CLASS(GodotTaskScheduler)->get_method("Activate", 0)->get_thunk()); +#ifdef DEBUG_ENABLED + CACHE_METHOD_THUNK_AND_CHECK(DebuggingUtils, GetStackFrameInfo, (DebugUtils_StackFrameInfo)GODOT_API_CLASS(DebuggingUtils)->get_method("GetStackFrameInfo", 4)->get_thunk()); +#endif + { /* * TODO Right now we only support Dictionary<object, object>. @@ -198,9 +239,11 @@ void update_godot_api_cache() { CACHE_RAW_MONO_CLASS_AND_CHECK(Dictionary, mono_class_from_mono_type(dict_type)); } - MonoObject *task_scheduler = mono_object_new(SCRIPTS_DOMAIN, GODOT_API_CLASS(GodotTaskScheduler)->get_raw()); + MonoObject *task_scheduler = mono_object_new(SCRIPTS_DOMAIN, GODOT_API_CLASS(GodotTaskScheduler)->get_mono_ptr()); mono_runtime_object_init(task_scheduler); mono_cache.task_scheduler_handle = MonoGCHandle::create_strong(task_scheduler); + + mono_cache.corlib_cache_updated = true; } void clear_cache() { @@ -298,7 +341,7 @@ MonoObject *create_managed_for_godot_object(GDMonoClass *p_class, const StringNa ERR_FAIL_V(NULL); } - MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, p_class->get_raw()); + MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, p_class->get_mono_ptr()); ERR_FAIL_NULL_V(mono_object, NULL); CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, p_object); @@ -364,4 +407,51 @@ String get_exception_name_and_message(MonoObject *p_ex) { return res; } + +void print_unhandled_exception(MonoObject *p_exc) { + print_unhandled_exception(p_exc, false); +} + +void print_unhandled_exception(MonoObject *p_exc, bool p_recursion_caution) { + mono_print_unhandled_exception(p_exc); +#ifdef DEBUG_ENABLED + if (!ScriptDebugger::get_singleton()) + return; + + GDMonoClass *st_klass = CACHED_CLASS(System_Diagnostics_StackTrace); + MonoObject *stack_trace = mono_object_new(mono_domain_get(), st_klass->get_mono_ptr()); + + MonoBoolean need_file_info = true; + void *ctor_args[2] = { p_exc, &need_file_info }; + + MonoObject *unexpected_exc = NULL; + CACHED_METHOD(System_Diagnostics_StackTrace, ctor_Exception_bool)->invoke_raw(stack_trace, ctor_args, &unexpected_exc); + + if (unexpected_exc != NULL) { + mono_print_unhandled_exception(unexpected_exc); + + if (p_recursion_caution) { + // Called from CSharpLanguage::get_current_stack_info, + // so printing an error here could result in endless recursion + OS::get_singleton()->printerr("Mono: Method GDMonoUtils::print_unhandled_exception failed"); + return; + } else { + ERR_FAIL(); + } + } + + Vector<ScriptLanguage::StackInfo> si; + if (stack_trace != NULL && !p_recursion_caution) + si = CSharpLanguage::get_singleton()->stack_trace_get_info(stack_trace); + + String file = si.size() ? si[0].file : __FILE__; + String func = si.size() ? si[0].func : FUNCTION_STR; + int line = si.size() ? si[0].line : __LINE__; + String error_msg = "Unhandled exception"; + String exc_msg = GDMonoUtils::get_exception_name_and_message(p_exc); + + ScriptDebugger::get_singleton()->send_error(func, file, line, error_msg, exc_msg, ERR_HANDLER_ERROR, si); +#endif +} + } // namespace GDMonoUtils diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h index 62d31f78fb..259da46c31 100644 --- a/modules/mono/mono_gd/gd_mono_utils.h +++ b/modules/mono/mono_gd/gd_mono_utils.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GD_MONOUTILS_H #define GD_MONOUTILS_H @@ -42,16 +43,13 @@ namespace GDMonoUtils { typedef MonoObject *(*MarshalUtils_DictToArrays)(MonoObject *, MonoArray **, MonoArray **, MonoObject **); typedef MonoObject *(*MarshalUtils_ArraysToDict)(MonoArray *, MonoArray *, MonoObject **); -typedef MonoObject *(*SignalAwaiter_SignalCallback)(MonoObject *, MonoArray **, MonoObject **); +typedef MonoObject *(*SignalAwaiter_SignalCallback)(MonoObject *, MonoArray *, MonoObject **); typedef MonoObject *(*SignalAwaiter_FailureCallback)(MonoObject *, MonoObject **); typedef MonoObject *(*GodotTaskScheduler_Activate)(MonoObject *, MonoObject **); +typedef MonoArray *(*StackTrace_GetFrames)(MonoObject *, MonoObject **); +typedef void (*DebugUtils_StackFrameInfo)(MonoObject *, MonoString **, int *, MonoString **, MonoObject **); struct MonoCache { - // Format for cached classes in the Godot namespace: class_<Class> - // Macro: CACHED_CLASS(<Class>) - - // Format for cached classes in a different namespace: class_<Namespace>_<Class> - // Macro: CACHED_NS_CLASS(<Namespace>, <Class>) // ----------------------------------------------- // corlib classes @@ -72,6 +70,13 @@ struct MonoCache { GDMonoClass *class_String; GDMonoClass *class_IntPtr; +#ifdef DEBUG_ENABLED + GDMonoClass *class_System_Diagnostics_StackTrace; + StackTrace_GetFrames methodthunk_System_Diagnostics_StackTrace_GetFrames; + GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_bool; + GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_Exception_bool; +#endif + MonoClass *rawclass_Dictionary; // ----------------------------------------------- @@ -95,6 +100,11 @@ struct MonoCache { GDMonoClass *class_WeakRef; GDMonoClass *class_MarshalUtils; +#ifdef DEBUG_ENABLED + GDMonoClass *class_DebuggingUtils; + DebugUtils_StackFrameInfo methodthunk_DebuggingUtils_GetStackFrameInfo; +#endif + GDMonoClass *class_ExportAttribute; GDMonoField *field_ExportAttribute_hint; GDMonoField *field_ExportAttribute_hintString; @@ -119,10 +129,16 @@ struct MonoCache { Ref<MonoGCHandle> task_scheduler_handle; + bool corlib_cache_updated; + bool godot_api_cache_updated; + void clear_members(); - void cleanup() {} + void cleanup(); MonoCache() { + corlib_cache_updated = false; + godot_api_cache_updated = false; + clear_members(); } }; @@ -166,15 +182,18 @@ MonoDomain *create_domain(const String &p_friendly_name); String get_exception_name_and_message(MonoObject *p_ex); +void print_unhandled_exception(MonoObject *p_exc); +void print_unhandled_exception(MonoObject *p_exc, bool p_recursion_caution); + } // namespace GDMonoUtils #define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoMarshal::mono_string_to_godot((MonoString *)m_class->get_field(BINDINGS_NATIVE_NAME_FIELD)->get_value(NULL))) #define CACHED_CLASS(m_class) (GDMonoUtils::mono_cache.class_##m_class) -#define CACHED_CLASS_RAW(m_class) (GDMonoUtils::mono_cache.class_##m_class->get_raw()) -#define CACHED_NS_CLASS(m_ns, m_class) (GDMonoUtils::mono_cache.class_##m_ns##_##m_class) +#define CACHED_CLASS_RAW(m_class) (GDMonoUtils::mono_cache.class_##m_class->get_mono_ptr()) #define CACHED_RAW_MONO_CLASS(m_class) (GDMonoUtils::mono_cache.rawclass_##m_class) #define CACHED_FIELD(m_class, m_field) (GDMonoUtils::mono_cache.field_##m_class##_##m_field) +#define CACHED_METHOD(m_class, m_method) (GDMonoUtils::mono_cache.method_##m_class##_##m_method) #define CACHED_METHOD_THUNK(m_class, m_method) (GDMonoUtils::mono_cache.methodthunk_##m_class##_##m_method) #ifdef REAL_T_IS_DOUBLE diff --git a/modules/mono/register_types.cpp b/modules/mono/register_types.cpp index 9bc384063d..4410996546 100644 --- a/modules/mono/register_types.cpp +++ b/modules/mono/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "engine.h" diff --git a/modules/mono/register_types.h b/modules/mono/register_types.h index d4f052b793..ab8a7d6463 100644 --- a/modules/mono/register_types.h +++ b/modules/mono/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_mono_types(); void unregister_mono_types(); diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp index bad75224dc..b9d8520ac9 100644 --- a/modules/mono/signal_awaiter_utils.cpp +++ b/modules/mono/signal_awaiter_utils.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "signal_awaiter_utils.h" #include "csharp_script.h" @@ -101,7 +102,7 @@ Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argc GDMonoUtils::SignalAwaiter_SignalCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback); MonoObject *ex = NULL; - thunk(get_target(), &signal_args, &ex); + thunk(get_target(), signal_args, &ex); if (ex) { mono_print_unhandled_exception(ex); diff --git a/modules/mono/signal_awaiter_utils.h b/modules/mono/signal_awaiter_utils.h index 97cf4238da..a6a205ff8d 100644 --- a/modules/mono/signal_awaiter_utils.h +++ b/modules/mono/signal_awaiter_utils.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SIGNAL_AWAITER_UTILS_H #define SIGNAL_AWAITER_UTILS_H diff --git a/modules/mono/utils/mono_reg_utils.cpp b/modules/mono/utils/mono_reg_utils.cpp index 8d91e16c5c..9bb8da8ac0 100644 --- a/modules/mono/utils/mono_reg_utils.cpp +++ b/modules/mono/utils/mono_reg_utils.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mono_reg_utils.h" #ifdef WINDOWS_ENABLED diff --git a/modules/mono/utils/mono_reg_utils.h b/modules/mono/utils/mono_reg_utils.h index 80270ad794..edf31f5a07 100644 --- a/modules/mono/utils/mono_reg_utils.h +++ b/modules/mono/utils/mono_reg_utils.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MONO_REG_UTILS_H #define MONO_REG_UTILS_H diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp index dfbb1b9ba4..4b77aeb54e 100644 --- a/modules/mono/utils/path_utils.cpp +++ b/modules/mono/utils/path_utils.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path_utils.h" #include "os/dir_access.h" diff --git a/modules/mono/utils/path_utils.h b/modules/mono/utils/path_utils.h index 4e8d8f2815..184cacfac7 100644 --- a/modules/mono/utils/path_utils.h +++ b/modules/mono/utils/path_utils.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_UTILS_H #define PATH_UTILS_H diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp index 4bea504d28..8691932f9a 100644 --- a/modules/mono/utils/string_utils.cpp +++ b/modules/mono/utils/string_utils.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "string_utils.h" namespace { diff --git a/modules/mono/utils/string_utils.h b/modules/mono/utils/string_utils.h index b02abc77be..5dddaee6e8 100644 --- a/modules/mono/utils/string_utils.h +++ b/modules/mono/utils/string_utils.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STRING_FORMAT_H #define STRING_FORMAT_H diff --git a/modules/ogg/register_types.cpp b/modules/ogg/register_types.cpp index 993b2f9e1b..dba5dcc6e2 100644 --- a/modules/ogg/register_types.cpp +++ b/modules/ogg/register_types.cpp @@ -27,6 +27,7 @@ /* 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" // Dummy module as libogg is needed by other modules (vorbis, theora, opus, ...) diff --git a/modules/ogg/register_types.h b/modules/ogg/register_types.h index 39482dc71b..e82c90de0b 100644 --- a/modules/ogg/register_types.h +++ b/modules/ogg/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_ogg_types(); void unregister_ogg_types(); diff --git a/modules/openssl/register_types.cpp b/modules/openssl/register_types.cpp index e103b3b9bf..916acc260e 100644 --- a/modules/openssl/register_types.cpp +++ b/modules/openssl/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "stream_peer_openssl.h" diff --git a/modules/openssl/register_types.h b/modules/openssl/register_types.h index d87f1a31df..94d917ca81 100644 --- a/modules/openssl/register_types.h +++ b/modules/openssl/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_openssl_types(); void unregister_openssl_types(); diff --git a/modules/openssl/stream_peer_openssl.cpp b/modules/openssl/stream_peer_openssl.cpp index 30a03f9000..e3cb9bbdf8 100644 --- a/modules/openssl/stream_peer_openssl.cpp +++ b/modules/openssl/stream_peer_openssl.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "stream_peer_openssl.h" // Compatibility with OpenSSL 1.1.0. diff --git a/modules/openssl/stream_peer_openssl.h b/modules/openssl/stream_peer_openssl.h index a696e29d6c..29c8647e58 100644 --- a/modules/openssl/stream_peer_openssl.h +++ b/modules/openssl/stream_peer_openssl.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STREAM_PEER_OPEN_SSL_H #define STREAM_PEER_OPEN_SSL_H diff --git a/modules/opus/audio_stream_opus.cpp b/modules/opus/audio_stream_opus.cpp index 260612e370..8323ff33ac 100644 --- a/modules/opus/audio_stream_opus.cpp +++ b/modules/opus/audio_stream_opus.cpp @@ -8,8 +8,6 @@ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ /* */ -/* Author: George Marques <george@gmarqu.es> */ -/* */ /* 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 */ @@ -29,8 +27,13 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_stream_opus.h" +/** + @author George Marques <george@gmarqu.es> +*/ + const float AudioStreamPlaybackOpus::osrate = 48000.0f; int AudioStreamPlaybackOpus::_op_read_func(void *_stream, unsigned char *_ptr, int _nbytes) { diff --git a/modules/opus/audio_stream_opus.h b/modules/opus/audio_stream_opus.h index 7be133b5bc..3ffdaf2c18 100644 --- a/modules/opus/audio_stream_opus.h +++ b/modules/opus/audio_stream_opus.h @@ -8,8 +8,6 @@ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ /* */ -/* Author: George Marques <george@gmarqu.es> */ -/* */ /* 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 */ @@ -39,6 +37,10 @@ #include <opus/opusfile.h> +/** + @author George Marques <george@gmarqu.es> +*/ + class AudioStreamPlaybackOpus : public AudioStreamPlayback { GDCLASS(AudioStreamPlaybackOpus, AudioStreamPlayback) diff --git a/modules/opus/register_types.cpp b/modules/opus/register_types.cpp index 41bee6d552..f34555841e 100644 --- a/modules/opus/register_types.cpp +++ b/modules/opus/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "audio_stream_opus.h" diff --git a/modules/opus/register_types.h b/modules/opus/register_types.h index 85a7efbfc0..84335adfc9 100644 --- a/modules/opus/register_types.h +++ b/modules/opus/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_opus_types(); void unregister_opus_types(); diff --git a/modules/opus/stub/register_types.cpp b/modules/opus/stub/register_types.cpp index 449edcc0f5..fe2bce63ba 100644 --- a/modules/opus/stub/register_types.cpp +++ b/modules/opus/stub/register_types.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* 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" // Dummy module as libvorbis is needed by other modules (theora ...) diff --git a/modules/opus/stub/register_types.h b/modules/opus/stub/register_types.h index c41cc4818c..84335adfc9 100644 --- a/modules/opus/stub/register_types.h +++ b/modules/opus/stub/register_types.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_opus_types(); void unregister_opus_types(); diff --git a/modules/pbm/SCsub b/modules/pbm/SCsub deleted file mode 100644 index fa328be025..0000000000 --- a/modules/pbm/SCsub +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python - -Import('env') -Import('env_modules') - -env_pbm = env_modules.Clone() - -env_pbm.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/pbm/bitmap_loader_pbm.cpp b/modules/pbm/bitmap_loader_pbm.cpp deleted file mode 100644 index 39d238ae5c..0000000000 --- a/modules/pbm/bitmap_loader_pbm.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/*************************************************************************/ -/* bitmap_loader_pbm.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 Godot Engine contributors (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 "bitmap_loader_pbm.h" -#include "os/file_access.h" -#include "scene/resources/bit_mask.h" - -static bool _get_token(FileAccessRef &f, uint8_t &saved, PoolVector<uint8_t> &r_token, bool p_binary = false, bool p_single_chunk = false) { - - int token_max = r_token.size(); - PoolVector<uint8_t>::Write w; - if (token_max) - w = r_token.write(); - int ofs = 0; - bool lf = false; - - while (true) { - - uint8_t b; - if (saved) { - b = saved; - saved = 0; - } else { - b = f->get_8(); - } - if (f->eof_reached()) { - if (ofs) { - w = PoolVector<uint8_t>::Write(); - r_token.resize(ofs); - return true; - } else { - return false; - } - } - - if (!ofs && !p_binary && b == '#') { - //skip comment - while (b != '\n') { - if (f->eof_reached()) { - return false; - } - - b = f->get_8(); - } - - lf = true; - - } else if (b <= 32 && !(p_binary && (ofs || lf))) { - - if (b == '\n') { - lf = true; - } - - if (ofs && !p_single_chunk) { - w = PoolVector<uint8_t>::Write(); - r_token.resize(ofs); - saved = b; - - return true; - } - } else { - - bool resized = false; - while (ofs >= token_max) { - if (token_max) - token_max <<= 1; - else - token_max = 1; - resized = true; - } - if (resized) { - // Note: Certain C++ static analyzers might point out that the following assigment is unnecessary. - // This is wrong since PoolVector<class T>::Write has an operator= method where the lhs gets updated under certain conditions. - // See core/dvector.h. - w = PoolVector<uint8_t>::Write(); - r_token.resize(token_max); - w = r_token.write(); - } - w[ofs++] = b; - } - } - - return false; -} - -static int _get_number_from_token(PoolVector<uint8_t> &r_token) { - - int len = r_token.size(); - PoolVector<uint8_t>::Read r = r_token.read(); - return String::to_int((const char *)r.ptr(), len); -} - -RES ResourceFormatPBM::load(const String &p_path, const String &p_original_path, Error *r_error) { - -#define _RETURN(m_err) \ - { \ - if (r_error) \ - *r_error = m_err; \ - ERR_FAIL_V(RES()); \ - } - - FileAccessRef f = FileAccess::open(p_path, FileAccess::READ); - uint8_t saved = 0; - if (!f) - _RETURN(ERR_CANT_OPEN); - - PoolVector<uint8_t> token; - - if (!_get_token(f, saved, token)) { - _RETURN(ERR_PARSE_ERROR); - } - - if (token.size() != 2) { - _RETURN(ERR_FILE_CORRUPT); - } - if (token[0] != 'P') { - _RETURN(ERR_FILE_CORRUPT); - } - if (token[1] != '1' && token[1] != '4') { - _RETURN(ERR_FILE_CORRUPT); - } - - bool bits = token[1] == '4'; - - if (!_get_token(f, saved, token)) { - _RETURN(ERR_PARSE_ERROR); - } - - int width = _get_number_from_token(token); - if (width <= 0) { - _RETURN(ERR_FILE_CORRUPT); - } - - if (!_get_token(f, saved, token)) { - _RETURN(ERR_PARSE_ERROR); - } - - int height = _get_number_from_token(token); - if (height <= 0) { - _RETURN(ERR_FILE_CORRUPT); - } - - Ref<BitMap> bm; - bm.instance(); - bm->create(Size2i(width, height)); - - if (!bits) { - - int required_bytes = width * height; - if (!_get_token(f, saved, token, false, true)) { - _RETURN(ERR_PARSE_ERROR); - } - - if (token.size() < required_bytes) { - _RETURN(ERR_FILE_CORRUPT); - } - - PoolVector<uint8_t>::Read r = token.read(); - - for (int i = 0; i < height; i++) { - for (int j = 0; j < width; j++) { - - char num = r[i * width + j]; - bm->set_bit(Point2i(j, i), num == '0'); - } - } - - } else { - //a single, entire token of bits! - if (!_get_token(f, saved, token, true)) { - _RETURN(ERR_PARSE_ERROR); - } - int required_bytes = Math::ceil((width * height) / 8.0); - if (token.size() < required_bytes) { - _RETURN(ERR_FILE_CORRUPT); - } - - PoolVector<uint8_t>::Read r = token.read(); - int bitwidth = width; - if (bitwidth % 8) - bitwidth += 8 - (bitwidth % 8); - - for (int i = 0; i < height; i++) { - for (int j = 0; j < width; j++) { - - int ofs = bitwidth * i + j; - - uint8_t byte = r[ofs / 8]; - bool bit = (byte >> (7 - (ofs % 8))) & 1; - - bm->set_bit(Point2i(j, i), !bit); - } - } - } - - return bm; -} - -void ResourceFormatPBM::get_recognized_extensions(List<String> *p_extensions) const { - p_extensions->push_back("pbm"); -} -bool ResourceFormatPBM::handles_type(const String &p_type) const { - return p_type == "BitMap"; -} -String ResourceFormatPBM::get_resource_type(const String &p_path) const { - - if (p_path.get_extension().to_lower() == "pbm") - return "BitMap"; - return ""; -} diff --git a/modules/pbm/config.py b/modules/pbm/config.py deleted file mode 100644 index 5f133eba90..0000000000 --- a/modules/pbm/config.py +++ /dev/null @@ -1,5 +0,0 @@ -def can_build(platform): - return True - -def configure(env): - pass diff --git a/modules/pbm/register_types.h b/modules/pbm/register_types.h deleted file mode 100644 index 958e162da1..0000000000 --- a/modules/pbm/register_types.h +++ /dev/null @@ -1,31 +0,0 @@ -/*************************************************************************/ -/* register_types.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2018 Godot Engine contributors (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. */ -/*************************************************************************/ -void register_pbm_types(); -void unregister_pbm_types(); diff --git a/modules/pvr/register_types.cpp b/modules/pvr/register_types.cpp index f1cd481a4a..0991828ef2 100644 --- a/modules/pvr/register_types.cpp +++ b/modules/pvr/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "texture_loader_pvr.h" diff --git a/modules/pvr/register_types.h b/modules/pvr/register_types.h index b53dd8da52..d187ab5334 100644 --- a/modules/pvr/register_types.h +++ b/modules/pvr/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_pvr_types(); void unregister_pvr_types(); diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp index 5046526d81..76c0b969d8 100644 --- a/modules/pvr/texture_loader_pvr.cpp +++ b/modules/pvr/texture_loader_pvr.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_loader_pvr.h" #include "PvrTcEncoder.h" #include "RgbaBitmap.h" diff --git a/modules/pvr/texture_loader_pvr.h b/modules/pvr/texture_loader_pvr.h index ae6df3658a..9369178336 100644 --- a/modules/pvr/texture_loader_pvr.h +++ b/modules/pvr/texture_loader_pvr.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_LOADER_PVR_H #define TEXTURE_LOADER_PVR_H diff --git a/modules/regex/doc_classes/RegEx.xml b/modules/regex/doc_classes/RegEx.xml index 8cd163b0c8..2cf80acd28 100644 --- a/modules/regex/doc_classes/RegEx.xml +++ b/modules/regex/doc_classes/RegEx.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RegEx" inherits="Reference" category="Core" version="3.0-beta"> +<class name="RegEx" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Class for searching text for patterns using regular expressions. </brief_description> diff --git a/modules/regex/doc_classes/RegExMatch.xml b/modules/regex/doc_classes/RegExMatch.xml index 0217099ce6..9eba0f738b 100644 --- a/modules/regex/doc_classes/RegExMatch.xml +++ b/modules/regex/doc_classes/RegExMatch.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="RegExMatch" inherits="Reference" category="Core" version="3.0-beta"> +<class name="RegExMatch" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> Contains the results of a regex search. </brief_description> @@ -28,13 +28,6 @@ Returns the number of capturing groups. </description> </method> - <method name="get_names" qualifiers="const"> - <return type="Dictionary"> - </return> - <description> - Returns a dictionary of named groups and its corresponding group number. Only groups with that were matched are included. If multiple groups have the same name, that name would refer to the first matching one. - </description> - </method> <method name="get_start" qualifiers="const"> <return type="int"> </return> @@ -55,21 +48,18 @@ Returns an empty string if the group did not match or doesn't exist. </description> </method> - <method name="get_strings" qualifiers="const"> - <return type="Array"> - </return> - <description> - Returns an [Array] of the match and its capturing groups. - </description> - </method> - <method name="get_subject" qualifiers="const"> - <return type="String"> - </return> - <description> - Returns the source string used with the search pattern to find this matching result. - </description> - </method> </methods> + <members> + <member name="names" type="Dictionary" setter="" getter="get_names"> + A dictionary of named groups and its corresponding group number. Only groups with that were matched are included. If multiple groups have the same name, that name would refer to the first matching one. + </member> + <member name="strings" type="Array" setter="" getter="get_strings"> + An [Array] of the match and its capturing groups. + </member> + <member name="subject" type="String" setter="" getter="get_subject"> + The source string used with the search pattern to find this matching result. + </member> + </members> <constants> </constants> </class> diff --git a/modules/regex/regex.cpp b/modules/regex/regex.cpp index 9bcbc4c4ea..6f2bb46fc8 100644 --- a/modules/regex/regex.cpp +++ b/modules/regex/regex.cpp @@ -156,6 +156,10 @@ void RegExMatch::_bind_methods() { ClassDB::bind_method(D_METHOD("get_string", "name"), &RegExMatch::get_string, DEFVAL(0)); ClassDB::bind_method(D_METHOD("get_start", "name"), &RegExMatch::get_start, DEFVAL(0)); ClassDB::bind_method(D_METHOD("get_end", "name"), &RegExMatch::get_end, DEFVAL(0)); + + ADD_PROPERTY(PropertyInfo(Variant::STRING, "subject"), "", "get_subject"); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "names"), "", "get_names"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "strings"), "", "get_strings"); } void RegEx::_pattern_info(uint32_t what, void *where) const { @@ -343,15 +347,20 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a ERR_FAIL_COND_V(!is_valid(), String()); - String output; - output.resize(p_subject.length()); + // safety_zone is the number of chars we allocate in addition to the number of chars expected in order to + // guard against the PCRE API writing one additional \0 at the end. PCRE's API docs are unclear on whether + // PCRE understands outlength in pcre2_substitute() as counting an implicit additional terminating char or + // not. always allocating one char more than telling PCRE has us on the safe side. + const int safety_zone = 1; + + PCRE2_SIZE olength = p_subject.length() + 1; // space for output string and one terminating \0 character + Vector<CharType> output; + output.resize(olength + safety_zone); uint32_t flags = PCRE2_SUBSTITUTE_OVERFLOW_LENGTH; if (p_all) flags |= PCRE2_SUBSTITUTE_GLOBAL; - PCRE2_SIZE olength = output.length(); - PCRE2_SIZE length = p_subject.length(); if (p_end >= 0 && (uint32_t)p_end < length) length = p_end; @@ -363,15 +372,15 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a pcre2_match_context_16 *mctx = pcre2_match_context_create_16(gctx); PCRE2_SPTR16 s = (PCRE2_SPTR16)p_subject.c_str(); PCRE2_SPTR16 r = (PCRE2_SPTR16)p_replacement.c_str(); - PCRE2_UCHAR16 *o = (PCRE2_UCHAR16 *)output.c_str(); + PCRE2_UCHAR16 *o = (PCRE2_UCHAR16 *)output.ptrw(); pcre2_match_data_16 *match = pcre2_match_data_create_from_pattern_16(c, gctx); int res = pcre2_substitute_16(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength); if (res == PCRE2_ERROR_NOMEMORY) { - output.resize(olength); - o = (PCRE2_UCHAR16 *)output.c_str(); + output.resize(olength + safety_zone); + o = (PCRE2_UCHAR16 *)output.ptrw(); res = pcre2_substitute_16(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength); } @@ -388,15 +397,15 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a pcre2_match_context_32 *mctx = pcre2_match_context_create_32(gctx); PCRE2_SPTR32 s = (PCRE2_SPTR32)p_subject.c_str(); PCRE2_SPTR32 r = (PCRE2_SPTR32)p_replacement.c_str(); - PCRE2_UCHAR32 *o = (PCRE2_UCHAR32 *)output.c_str(); + PCRE2_UCHAR32 *o = (PCRE2_UCHAR32 *)output.ptrw(); pcre2_match_data_32 *match = pcre2_match_data_create_from_pattern_32(c, gctx); int res = pcre2_substitute_32(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength); if (res == PCRE2_ERROR_NOMEMORY) { - output.resize(olength); - o = (PCRE2_UCHAR32 *)output.c_str(); + output.resize(olength + safety_zone); + o = (PCRE2_UCHAR32 *)output.ptrw(); res = pcre2_substitute_32(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength); } @@ -407,7 +416,7 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a return String(); } - return output; + return String(output.ptr(), olength); } bool RegEx::is_valid() const { diff --git a/modules/register_module_types.h b/modules/register_module_types.h index 4f9c2eb41f..f4163418e8 100644 --- a/modules/register_module_types.h +++ b/modules/register_module_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_MODULE_TYPES_H #define REGISTER_MODULE_TYPES_H diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp index c97cee6e1d..0cf24dd8d8 100644 --- a/modules/squish/image_compress_squish.cpp +++ b/modules/squish/image_compress_squish.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_compress_squish.h" #include "print_string.h" diff --git a/modules/squish/image_compress_squish.h b/modules/squish/image_compress_squish.h index 83dab024b2..c022063fe5 100644 --- a/modules/squish/image_compress_squish.h +++ b/modules/squish/image_compress_squish.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_COMPRESS_SQUISH_H #define IMAGE_COMPRESS_SQUISH_H diff --git a/modules/squish/register_types.cpp b/modules/squish/register_types.cpp index 600a33cdd6..d4ed676cce 100644 --- a/modules/squish/register_types.cpp +++ b/modules/squish/register_types.cpp @@ -27,6 +27,7 @@ /* 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" #ifdef TOOLS_ENABLED diff --git a/modules/squish/register_types.h b/modules/squish/register_types.h index f9971f4f19..00f5c345c4 100644 --- a/modules/squish/register_types.h +++ b/modules/squish/register_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef TOOLS_ENABLED void register_squish_types(); void unregister_squish_types(); diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp index 7ab3d0a140..18ab616826 100644 --- a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp +++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_stream_ogg_vorbis.h" #include "os/file_access.h" @@ -114,7 +115,7 @@ void AudioStreamPlaybackOGGVorbis::seek(float p_time) { if (!active) return; - if (p_time >= get_length()) { + if (p_time >= vorbis_stream->get_length()) { p_time = 0; } frames_mixed = uint32_t(vorbis_stream->sample_rate * p_time); @@ -122,11 +123,6 @@ void AudioStreamPlaybackOGGVorbis::seek(float p_time) { stb_vorbis_seek(ogg_stream, frames_mixed); } -float AudioStreamPlaybackOGGVorbis::get_length() const { - - return vorbis_stream->length; -} - AudioStreamPlaybackOGGVorbis::~AudioStreamPlaybackOGGVorbis() { if (ogg_alloc.alloc_buffer) { stb_vorbis_close(ogg_stream); @@ -164,6 +160,14 @@ String AudioStreamOGGVorbis::get_stream_name() const { return ""; //return stream_name; } +void AudioStreamOGGVorbis::clear_data() { + if (data) { + AudioServer::get_singleton()->audio_data_free(data); + data = NULL; + data_len = 0; + } +} + void AudioStreamOGGVorbis::set_data(const PoolVector<uint8_t> &p_data) { int src_data_len = p_data.size(); @@ -209,6 +213,9 @@ void AudioStreamOGGVorbis::set_data(const PoolVector<uint8_t> &p_data) { length = stb_vorbis_stream_length_in_seconds(ogg_stream); stb_vorbis_close(ogg_stream); + // free any existing data + clear_data(); + data = AudioServer::get_singleton()->audio_data_alloc(src_data_len, src_datar.ptr()); data_len = src_data_len; @@ -249,10 +256,15 @@ float AudioStreamOGGVorbis::get_loop_offset() const { return loop_offset; } +float AudioStreamOGGVorbis::get_length() const { + + return length; +} + void AudioStreamOGGVorbis::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_data", "data"), &AudioStreamOGGVorbis::set_data); - ClassDB::bind_method(D_METHOD("get_data"), &AudioStreamOGGVorbis::get_data); + ClassDB::bind_method(D_METHOD("_set_data", "data"), &AudioStreamOGGVorbis::set_data); + ClassDB::bind_method(D_METHOD("_get_data"), &AudioStreamOGGVorbis::get_data); ClassDB::bind_method(D_METHOD("set_loop", "enable"), &AudioStreamOGGVorbis::set_loop); ClassDB::bind_method(D_METHOD("has_loop"), &AudioStreamOGGVorbis::has_loop); @@ -260,7 +272,7 @@ void AudioStreamOGGVorbis::_bind_methods() { ClassDB::bind_method(D_METHOD("set_loop_offset", "seconds"), &AudioStreamOGGVorbis::set_loop_offset); ClassDB::bind_method(D_METHOD("get_loop_offset"), &AudioStreamOGGVorbis::get_loop_offset); - ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_data", "get_data"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_loop", "has_loop"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "loop_offset", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_loop_offset", "get_loop_offset"); } @@ -275,3 +287,7 @@ AudioStreamOGGVorbis::AudioStreamOGGVorbis() { decode_mem_size = 0; loop = false; } + +AudioStreamOGGVorbis::~AudioStreamOGGVorbis() { + clear_data(); +} diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.h b/modules/stb_vorbis/audio_stream_ogg_vorbis.h index f920047703..d7bc7cc0d7 100644 --- a/modules/stb_vorbis/audio_stream_ogg_vorbis.h +++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_STREAM_STB_VORBIS_H #define AUDIO_STREAM_STB_VORBIS_H @@ -70,8 +71,6 @@ public: virtual float get_playback_position() const; virtual void seek(float p_time); - virtual float get_length() const; //if supported, otherwise return 0 - AudioStreamPlaybackOGGVorbis() {} ~AudioStreamPlaybackOGGVorbis(); }; @@ -93,6 +92,7 @@ class AudioStreamOGGVorbis : public AudioStream { float length; bool loop; float loop_offset; + void clear_data(); protected: static void _bind_methods(); @@ -110,7 +110,10 @@ public: void set_data(const PoolVector<uint8_t> &p_data); PoolVector<uint8_t> get_data() const; + virtual float get_length() const; //if supported, otherwise return 0 + AudioStreamOGGVorbis(); + virtual ~AudioStreamOGGVorbis(); }; #endif diff --git a/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml b/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml index 4533d59cae..827e947a79 100644 --- a/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml +++ b/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="AudioStreamOGGVorbis" inherits="AudioStream" category="Core" version="3.0-beta"> +<class name="AudioStreamOGGVorbis" inherits="AudioStream" category="Core" version="3.0-stable"> <brief_description> OGG Vorbis audio stream driver. </brief_description> @@ -11,49 +11,13 @@ <demos> </demos> <methods> - <method name="get_data" qualifiers="const"> - <return type="PoolByteArray"> - </return> - <description> - </description> - </method> - <method name="get_loop_offset" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_data"> - <return type="void"> - </return> - <argument index="0" name="data" type="PoolByteArray"> - </argument> - <description> - </description> - </method> - <method name="set_loop"> - <return type="void"> - </return> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> - <method name="set_loop_offset"> - <return type="void"> - </return> - <argument index="0" name="seconds" type="float"> - </argument> - <description> - </description> - </method> </methods> + <members> + <member name="loop" type="bool" setter="set_loop" getter="has_loop"> + </member> + <member name="loop_offset" type="float" setter="set_loop_offset" getter="get_loop_offset"> + </member> + </members> <constants> </constants> </class> diff --git a/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml b/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml index 9d541cda58..9a095c3ddd 100644 --- a/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml +++ b/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceImporterOGGVorbis" inherits="ResourceImporter" category="Core" version="3.0-beta"> +<class name="ResourceImporterOGGVorbis" inherits="ResourceImporter" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/stb_vorbis/register_types.cpp b/modules/stb_vorbis/register_types.cpp index 992cc1f159..514ef4c071 100644 --- a/modules/stb_vorbis/register_types.cpp +++ b/modules/stb_vorbis/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "audio_stream_ogg_vorbis.h" #include "resource_importer_ogg_vorbis.h" diff --git a/modules/stb_vorbis/register_types.h b/modules/stb_vorbis/register_types.h index 9af22e2374..142be0efdf 100644 --- a/modules/stb_vorbis/register_types.h +++ b/modules/stb_vorbis/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_stb_vorbis_types(); void unregister_stb_vorbis_types(); diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp index db4443255d..16ebfa2832 100644 --- a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp +++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_ogg_vorbis.h" #include "io/resource_saver.h" diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.h b/modules/stb_vorbis/resource_importer_ogg_vorbis.h index 9b7bf1946e..a1847545aa 100644 --- a/modules/stb_vorbis/resource_importer_ogg_vorbis.h +++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTEROGGVORBIS_H #define RESOURCEIMPORTEROGGVORBIS_H diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp index ea538a2895..8ccd229f3d 100644 --- a/modules/svg/image_loader_svg.cpp +++ b/modules/svg/image_loader_svg.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_svg.h" #include "os/os.h" diff --git a/modules/svg/image_loader_svg.h b/modules/svg/image_loader_svg.h index 61bf390bc7..63854da2f6 100644 --- a/modules/svg/image_loader_svg.h +++ b/modules/svg/image_loader_svg.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_SVG_H #define IMAGE_LOADER_SVG_H diff --git a/modules/svg/register_types.cpp b/modules/svg/register_types.cpp index ddd63009f7..56426662cd 100644 --- a/modules/svg/register_types.cpp +++ b/modules/svg/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_loader_svg.h" diff --git a/modules/svg/register_types.h b/modules/svg/register_types.h index 8759e3cdd5..015c586c6b 100644 --- a/modules/svg/register_types.h +++ b/modules/svg/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_svg_types(); void unregister_svg_types(); diff --git a/modules/tga/image_loader_tga.cpp b/modules/tga/image_loader_tga.cpp index dec8526b0a..7391bed699 100644 --- a/modules/tga/image_loader_tga.cpp +++ b/modules/tga/image_loader_tga.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_tga.h" #include "os/os.h" diff --git a/modules/tga/image_loader_tga.h b/modules/tga/image_loader_tga.h index 2a0b6f4504..c4b10b7f49 100644 --- a/modules/tga/image_loader_tga.h +++ b/modules/tga/image_loader_tga.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_TGA_H #define IMAGE_LOADER_TGA_H diff --git a/modules/tga/register_types.cpp b/modules/tga/register_types.cpp index 81991b1142..ac1b56af16 100644 --- a/modules/tga/register_types.cpp +++ b/modules/tga/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_loader_tga.h" diff --git a/modules/tga/register_types.h b/modules/tga/register_types.h index 1b6f66a4d0..6483f2576e 100644 --- a/modules/tga/register_types.h +++ b/modules/tga/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_tga_types(); void unregister_tga_types(); diff --git a/modules/thekla_unwrap/SCsub b/modules/thekla_unwrap/SCsub index c57bf326ea..d23ba10d4c 100644 --- a/modules/thekla_unwrap/SCsub +++ b/modules/thekla_unwrap/SCsub @@ -1,5 +1,7 @@ #!/usr/bin/env python +import platform + Import('env') Import('env_modules') @@ -60,7 +62,13 @@ if env['builtin_thekla_atlas']: env_thekla_unwrap.Append(CXXFLAGS="-std=c++11") if env["platform"] == 'x11': - env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_LINUX", "-DPOSH_COMPILER_GCC"]) + # if not specifically one of the *BSD, then use LINUX as default + if platform.system() == "FreeBSD": + env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_FREEBSD", "-DPOSH_COMPILER_GCC"]) + elif platform.system() == "OpenBSD": + env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_OPENBSD", "-DPOSH_COMPILER_GCC"]) + else: + env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_LINUX", "-DPOSH_COMPILER_GCC"]) elif env["platform"] == 'osx': env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_DARWIN", "-DPOSH_COMPILER_GCC"]) elif env["platform"] == 'windows': @@ -69,6 +77,6 @@ if env['builtin_thekla_atlas']: else: env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_MINGW", "-DNV_CC_GNUC", "-DPOSH_COMPILER_GCC", "-U__STRICT_ANSI__"]) env.Append(LIBS=["dbghelp"]) - + # Godot source files env_thekla_unwrap.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/thekla_unwrap/register_types.cpp b/modules/thekla_unwrap/register_types.cpp index 2dc9217e48..c74cbd9d18 100644 --- a/modules/thekla_unwrap/register_types.cpp +++ b/modules/thekla_unwrap/register_types.cpp @@ -27,8 +27,11 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" +#include "error_macros.h" #include "thirdparty/thekla_atlas/thekla/thekla_atlas.h" + #include <stdio.h> #include <stdlib.h> extern bool (*array_mesh_lightmap_unwrap_callback)(float p_texel_size, const float *p_vertices, const float *p_normals, int p_vertex_count, const int *p_indices, const int *p_face_materials, int p_index_count, float **r_uv, int **r_vertex, int *r_vertex_count, int **r_index, int *r_index_count, int *r_size_hint_x, int *r_size_hint_y); @@ -74,6 +77,11 @@ bool thekla_mesh_lightmap_unwrap_callback(float p_texel_size, const float *p_ver delete[] input_mesh.face_array; delete[] input_mesh.vertex_array; + if (output == NULL) { + ERR_PRINT("could not generate atlas output mesh"); + return false; + } + if (err != Thekla::Atlas_Error_Success) { printf("error with atlas\n"); } else { diff --git a/modules/thekla_unwrap/register_types.h b/modules/thekla_unwrap/register_types.h index 7a542592b5..8a0eab9437 100644 --- a/modules/thekla_unwrap/register_types.h +++ b/modules/thekla_unwrap/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_thekla_unwrap_types(); void unregister_thekla_unwrap_types(); diff --git a/modules/theora/doc_classes/ResourceImporterTheora.xml b/modules/theora/doc_classes/ResourceImporterTheora.xml index 85c7c6bf89..a280d767c3 100644 --- a/modules/theora/doc_classes/ResourceImporterTheora.xml +++ b/modules/theora/doc_classes/ResourceImporterTheora.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceImporterTheora" inherits="ResourceImporter" category="Core" version="3.0-beta"> +<class name="ResourceImporterTheora" inherits="ResourceImporter" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/theora/doc_classes/VideoStreamTheora.xml b/modules/theora/doc_classes/VideoStreamTheora.xml index 6c8806ed72..9da3dc0d02 100644 --- a/modules/theora/doc_classes/VideoStreamTheora.xml +++ b/modules/theora/doc_classes/VideoStreamTheora.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VideoStreamTheora" inherits="VideoStream" category="Core" version="3.0-beta"> +<class name="VideoStreamTheora" inherits="VideoStream" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/theora/register_types.cpp b/modules/theora/register_types.cpp index c6d125226b..9bc5ed903a 100644 --- a/modules/theora/register_types.cpp +++ b/modules/theora/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "resource_importer_theora.h" #include "video_stream_theora.h" diff --git a/modules/theora/register_types.h b/modules/theora/register_types.h index 69b43744b5..4a81d7743b 100644 --- a/modules/theora/register_types.h +++ b/modules/theora/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_theora_types(); void unregister_theora_types(); diff --git a/modules/theora/resource_importer_theora.cpp b/modules/theora/resource_importer_theora.cpp index 0c9a21c825..ee9bab74a7 100644 --- a/modules/theora/resource_importer_theora.cpp +++ b/modules/theora/resource_importer_theora.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_theora.h" #include "io/resource_saver.h" diff --git a/modules/theora/resource_importer_theora.h b/modules/theora/resource_importer_theora.h index 913bf87a42..e3c79287ad 100644 --- a/modules/theora/resource_importer_theora.h +++ b/modules/theora/resource_importer_theora.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTEROGGTHEORA_H #define RESOURCEIMPORTEROGGTHEORA_H diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp index 5702134791..58c6d73ab2 100644 --- a/modules/theora/video_stream_theora.cpp +++ b/modules/theora/video_stream_theora.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "video_stream_theora.h" #include "os/os.h" @@ -309,9 +310,6 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) { /* and now we have it all. initialize decoders */ if (theora_p) { td = th_decode_alloc(&ti, ts); - printf("Ogg logical stream %lx is Theora %dx%d %.02f fps", - to.serialno, ti.pic_width, ti.pic_height, - (double)ti.fps_numerator / ti.fps_denominator); px_fmt = ti.pixel_fmt; switch (ti.pixel_fmt) { case TH_PF_420: printf(" 4:2:0 video\n"); break; @@ -322,9 +320,6 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) { printf(" video\n (UNKNOWN Chroma sampling!)\n"); break; } - if (ti.pic_width != ti.frame_width || ti.pic_height != ti.frame_height) - printf(" Frame content is %dx%d with offset (%d,%d).\n", - ti.frame_width, ti.frame_height, ti.pic_x, ti.pic_y); th_decode_ctl(td, TH_DECCTL_GET_PPLEVEL_MAX, &pp_level_max, sizeof(pp_level_max)); pp_level = 0; @@ -351,10 +346,7 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) { if (vorbis_p) { vorbis_synthesis_init(&vd, &vi); vorbis_block_init(&vd, &vb); - fprintf(stderr, "Ogg logical stream %lx is Vorbis %d channel %ld Hz audio.\n", - vo.serialno, vi.channels, vi.rate); //_setup(vi.channels, vi.rate); - } else { /* tear down the partial vorbis setup */ vorbis_info_clear(&vi); @@ -732,5 +724,5 @@ void VideoStreamTheora::_bind_methods() { ClassDB::bind_method(D_METHOD("set_file", "file"), &VideoStreamTheora::set_file); ClassDB::bind_method(D_METHOD("get_file"), &VideoStreamTheora::get_file); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_file", "get_file"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_file", "get_file"); } diff --git a/modules/theora/video_stream_theora.h b/modules/theora/video_stream_theora.h index cbcdd34bfc..4bdbbdae20 100644 --- a/modules/theora/video_stream_theora.h +++ b/modules/theora/video_stream_theora.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VIDEO_STREAM_THEORA_H #define VIDEO_STREAM_THEORA_H diff --git a/modules/tinyexr/image_loader_tinyexr.cpp b/modules/tinyexr/image_loader_tinyexr.cpp index c4d9e7c7e0..0abefe11ee 100644 --- a/modules/tinyexr/image_loader_tinyexr.cpp +++ b/modules/tinyexr/image_loader_tinyexr.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_tinyexr.h" #include "os/os.h" diff --git a/modules/tinyexr/image_loader_tinyexr.h b/modules/tinyexr/image_loader_tinyexr.h index b46c9582e1..6706e0972a 100644 --- a/modules/tinyexr/image_loader_tinyexr.h +++ b/modules/tinyexr/image_loader_tinyexr.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_TINYEXR_H #define IMAGE_LOADER_TINYEXR_H diff --git a/modules/tinyexr/register_types.cpp b/modules/tinyexr/register_types.cpp index 648cc98c25..61217805cf 100644 --- a/modules/tinyexr/register_types.cpp +++ b/modules/tinyexr/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_loader_tinyexr.h" diff --git a/modules/tinyexr/register_types.h b/modules/tinyexr/register_types.h index e2bd8a0cbe..70cd0bfbf8 100644 --- a/modules/tinyexr/register_types.h +++ b/modules/tinyexr/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_tinyexr_types(); void unregister_tinyexr_types(); diff --git a/modules/visual_script/doc_classes/VisualScript.xml b/modules/visual_script/doc_classes/VisualScript.xml index 46bd35dd73..a6a43f31b8 100644 --- a/modules/visual_script/doc_classes/VisualScript.xml +++ b/modules/visual_script/doc_classes/VisualScript.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScript" inherits="Script" category="Core" version="3.0-beta"> +<class name="VisualScript" inherits="Script" category="Core" version="3.0-stable"> <brief_description> A script implemented in the Visual Script programming environment. </brief_description> @@ -9,6 +9,7 @@ You are most likely to use this class via the Visual Script editor or when writing plugins for it. </description> <tutorials> + http://docs.godotengine.org/en/3.0/getting_started/scripting/visual_script/index.html </tutorials> <demos> </demos> diff --git a/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml b/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml index e602214a66..d63a6ad524 100644 --- a/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml +++ b/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptBasicTypeConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptBasicTypeConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node representing a constant from the base types. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml b/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml index 9f7d38e957..da4db29086 100644 --- a/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml +++ b/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptBuiltinFunc" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptBuiltinFunc" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node used to call built-in functions. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptClassConstant.xml b/modules/visual_script/doc_classes/VisualScriptClassConstant.xml index 78757843cd..189a6f6ad8 100644 --- a/modules/visual_script/doc_classes/VisualScriptClassConstant.xml +++ b/modules/visual_script/doc_classes/VisualScriptClassConstant.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptClassConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptClassConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Gets a constant from a given class. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptComment.xml b/modules/visual_script/doc_classes/VisualScriptComment.xml index c21a082362..5462c379ad 100644 --- a/modules/visual_script/doc_classes/VisualScriptComment.xml +++ b/modules/visual_script/doc_classes/VisualScriptComment.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptComment" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptComment" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node used to annotate the script. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptCondition.xml b/modules/visual_script/doc_classes/VisualScriptCondition.xml index f1f87c010d..bb70a17357 100644 --- a/modules/visual_script/doc_classes/VisualScriptCondition.xml +++ b/modules/visual_script/doc_classes/VisualScriptCondition.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptCondition" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptCondition" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node which branches the flow. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptConstant.xml b/modules/visual_script/doc_classes/VisualScriptConstant.xml index 39a1e5eba8..e2ccb50bfd 100644 --- a/modules/visual_script/doc_classes/VisualScriptConstant.xml +++ b/modules/visual_script/doc_classes/VisualScriptConstant.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Gets a contant's value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptConstructor.xml b/modules/visual_script/doc_classes/VisualScriptConstructor.xml index cbe8c6c096..da6779b79d 100644 --- a/modules/visual_script/doc_classes/VisualScriptConstructor.xml +++ b/modules/visual_script/doc_classes/VisualScriptConstructor.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptConstructor" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptConstructor" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node which calls a base type constructor. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml index c321c616af..33d2f1437a 100644 --- a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml +++ b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptCustomNode" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptCustomNode" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A scripted Visual Script node. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml b/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml index 0f396564e2..09fcba4314 100644 --- a/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml +++ b/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptDeconstruct" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptDeconstruct" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node which deconstructs a base type instance into its parts. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptEditor.xml b/modules/visual_script/doc_classes/VisualScriptEditor.xml index b433f132c1..8e26758a31 100644 --- a/modules/visual_script/doc_classes/VisualScriptEditor.xml +++ b/modules/visual_script/doc_classes/VisualScriptEditor.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptEditor" inherits="Object" category="Core" version="3.0-beta"> +<class name="VisualScriptEditor" inherits="Object" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml b/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml index 71e8c7d93c..30f96011d4 100644 --- a/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml +++ b/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptEmitSignal" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptEmitSignal" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Emits a specified signal. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml b/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml index b9f356412d..0dc0cdf5eb 100644 --- a/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml +++ b/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptEngineSingleton" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptEngineSingleton" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> A Visual Script node returning a singleton from [@GlobalScope] </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptExpression.xml b/modules/visual_script/doc_classes/VisualScriptExpression.xml index 91c107e069..91f55edb2b 100644 --- a/modules/visual_script/doc_classes/VisualScriptExpression.xml +++ b/modules/visual_script/doc_classes/VisualScriptExpression.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptExpression" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptExpression" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptFunction.xml b/modules/visual_script/doc_classes/VisualScriptFunction.xml index 2c63b98b22..bd59d739ea 100644 --- a/modules/visual_script/doc_classes/VisualScriptFunction.xml +++ b/modules/visual_script/doc_classes/VisualScriptFunction.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptFunction" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptFunction" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml b/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml index 03c47dca7c..e2b732a250 100644 --- a/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml +++ b/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptFunctionCall" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptFunctionCall" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptFunctionState.xml b/modules/visual_script/doc_classes/VisualScriptFunctionState.xml index 90ec85e4f4..614176498a 100644 --- a/modules/visual_script/doc_classes/VisualScriptFunctionState.xml +++ b/modules/visual_script/doc_classes/VisualScriptFunctionState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptFunctionState" inherits="Reference" category="Core" version="3.0-beta"> +<class name="VisualScriptFunctionState" inherits="Reference" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml b/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml index 4417c8a533..a36f7809c2 100644 --- a/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml +++ b/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptGlobalConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptGlobalConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptIndexGet.xml b/modules/visual_script/doc_classes/VisualScriptIndexGet.xml index c0a83f186a..b2d0a194e0 100644 --- a/modules/visual_script/doc_classes/VisualScriptIndexGet.xml +++ b/modules/visual_script/doc_classes/VisualScriptIndexGet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptIndexGet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptIndexGet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptIndexSet.xml b/modules/visual_script/doc_classes/VisualScriptIndexSet.xml index 8661341919..7ad200afa4 100644 --- a/modules/visual_script/doc_classes/VisualScriptIndexSet.xml +++ b/modules/visual_script/doc_classes/VisualScriptIndexSet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptIndexSet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptIndexSet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptInputAction.xml b/modules/visual_script/doc_classes/VisualScriptInputAction.xml index afe72ba564..45c493887b 100644 --- a/modules/visual_script/doc_classes/VisualScriptInputAction.xml +++ b/modules/visual_script/doc_classes/VisualScriptInputAction.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptInputAction" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptInputAction" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptIterator.xml b/modules/visual_script/doc_classes/VisualScriptIterator.xml index 08dfad5acb..28e8a66182 100644 --- a/modules/visual_script/doc_classes/VisualScriptIterator.xml +++ b/modules/visual_script/doc_classes/VisualScriptIterator.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptIterator" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptIterator" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Steps through items in a given input. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptLocalVar.xml b/modules/visual_script/doc_classes/VisualScriptLocalVar.xml index a4293adaae..66faf448cb 100644 --- a/modules/visual_script/doc_classes/VisualScriptLocalVar.xml +++ b/modules/visual_script/doc_classes/VisualScriptLocalVar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptLocalVar" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptLocalVar" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Gets a local variable's value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml b/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml index c1a279bdb2..8a816e5dd7 100644 --- a/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml +++ b/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptLocalVarSet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptLocalVarSet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Changes a local variable's value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptMathConstant.xml b/modules/visual_script/doc_classes/VisualScriptMathConstant.xml index 2cb053ee5f..45fa471c41 100644 --- a/modules/visual_script/doc_classes/VisualScriptMathConstant.xml +++ b/modules/visual_script/doc_classes/VisualScriptMathConstant.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptMathConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptMathConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Commonly used mathematical constants. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptNode.xml b/modules/visual_script/doc_classes/VisualScriptNode.xml index ef7cf7c3b8..e9d1cd949f 100644 --- a/modules/visual_script/doc_classes/VisualScriptNode.xml +++ b/modules/visual_script/doc_classes/VisualScriptNode.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptNode" inherits="Resource" category="Core" version="3.0-beta"> +<class name="VisualScriptNode" inherits="Resource" category="Core" version="3.0-stable"> <brief_description> A node which is part of a [VisualScript]. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptOperator.xml b/modules/visual_script/doc_classes/VisualScriptOperator.xml index b7819592d9..4538bd3c78 100644 --- a/modules/visual_script/doc_classes/VisualScriptOperator.xml +++ b/modules/visual_script/doc_classes/VisualScriptOperator.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptOperator" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptOperator" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptPreload.xml b/modules/visual_script/doc_classes/VisualScriptPreload.xml index 712ec99fdb..3dae0e4b81 100644 --- a/modules/visual_script/doc_classes/VisualScriptPreload.xml +++ b/modules/visual_script/doc_classes/VisualScriptPreload.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptPreload" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptPreload" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Creates a new [Resource] or loads one from the filesystem. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml b/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml index 11c50f2b97..7555c83960 100644 --- a/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml +++ b/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptPropertyGet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptPropertyGet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptPropertySet.xml b/modules/visual_script/doc_classes/VisualScriptPropertySet.xml index 2e96ccc1f6..dc6a9efd83 100644 --- a/modules/visual_script/doc_classes/VisualScriptPropertySet.xml +++ b/modules/visual_script/doc_classes/VisualScriptPropertySet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptPropertySet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptPropertySet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptResourcePath.xml b/modules/visual_script/doc_classes/VisualScriptResourcePath.xml index 36bcf2a460..3789626ed0 100644 --- a/modules/visual_script/doc_classes/VisualScriptResourcePath.xml +++ b/modules/visual_script/doc_classes/VisualScriptResourcePath.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptResourcePath" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptResourcePath" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptReturn.xml b/modules/visual_script/doc_classes/VisualScriptReturn.xml index a05c1076a4..1172b7555b 100644 --- a/modules/visual_script/doc_classes/VisualScriptReturn.xml +++ b/modules/visual_script/doc_classes/VisualScriptReturn.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptReturn" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptReturn" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Exits a function and returns an optional value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptSceneNode.xml b/modules/visual_script/doc_classes/VisualScriptSceneNode.xml index 1a73faaf67..4c6181e040 100644 --- a/modules/visual_script/doc_classes/VisualScriptSceneNode.xml +++ b/modules/visual_script/doc_classes/VisualScriptSceneNode.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSceneNode" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSceneNode" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Node reference. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptSceneTree.xml b/modules/visual_script/doc_classes/VisualScriptSceneTree.xml index 25ae9c26ac..68cc0d0b55 100644 --- a/modules/visual_script/doc_classes/VisualScriptSceneTree.xml +++ b/modules/visual_script/doc_classes/VisualScriptSceneTree.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSceneTree" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSceneTree" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptSelect.xml b/modules/visual_script/doc_classes/VisualScriptSelect.xml index 45ac505110..017efdb07a 100644 --- a/modules/visual_script/doc_classes/VisualScriptSelect.xml +++ b/modules/visual_script/doc_classes/VisualScriptSelect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSelect" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSelect" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Chooses between two input values. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptSelf.xml b/modules/visual_script/doc_classes/VisualScriptSelf.xml index 2b0c46a4bb..e9b480bbae 100644 --- a/modules/visual_script/doc_classes/VisualScriptSelf.xml +++ b/modules/visual_script/doc_classes/VisualScriptSelf.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Outputs a reference to the current instance. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptSequence.xml b/modules/visual_script/doc_classes/VisualScriptSequence.xml index 624663b0d3..be793ae36e 100644 --- a/modules/visual_script/doc_classes/VisualScriptSequence.xml +++ b/modules/visual_script/doc_classes/VisualScriptSequence.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Executes a series of Sequence ports. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptSubCall.xml b/modules/visual_script/doc_classes/VisualScriptSubCall.xml index b7dc5ad65f..85db63b78a 100644 --- a/modules/visual_script/doc_classes/VisualScriptSubCall.xml +++ b/modules/visual_script/doc_classes/VisualScriptSubCall.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSubCall" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSubCall" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptSwitch.xml b/modules/visual_script/doc_classes/VisualScriptSwitch.xml index a34754b596..ec7565b31a 100644 --- a/modules/visual_script/doc_classes/VisualScriptSwitch.xml +++ b/modules/visual_script/doc_classes/VisualScriptSwitch.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Branches program flow based on a given input's value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptTypeCast.xml b/modules/visual_script/doc_classes/VisualScriptTypeCast.xml index e61e81c397..d414a95657 100644 --- a/modules/visual_script/doc_classes/VisualScriptTypeCast.xml +++ b/modules/visual_script/doc_classes/VisualScriptTypeCast.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptTypeCast" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptTypeCast" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/doc_classes/VisualScriptVariableGet.xml b/modules/visual_script/doc_classes/VisualScriptVariableGet.xml index 7122d2d3f6..ccd2918ec8 100644 --- a/modules/visual_script/doc_classes/VisualScriptVariableGet.xml +++ b/modules/visual_script/doc_classes/VisualScriptVariableGet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptVariableGet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptVariableGet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Gets a variable's value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptVariableSet.xml b/modules/visual_script/doc_classes/VisualScriptVariableSet.xml index 3c39da0a8d..e1fc1ba762 100644 --- a/modules/visual_script/doc_classes/VisualScriptVariableSet.xml +++ b/modules/visual_script/doc_classes/VisualScriptVariableSet.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptVariableSet" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptVariableSet" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Changes a variable's value. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptWhile.xml b/modules/visual_script/doc_classes/VisualScriptWhile.xml index d8e59a7576..de1ff45746 100644 --- a/modules/visual_script/doc_classes/VisualScriptWhile.xml +++ b/modules/visual_script/doc_classes/VisualScriptWhile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptWhile" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptWhile" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> Conditional loop. </brief_description> diff --git a/modules/visual_script/doc_classes/VisualScriptYield.xml b/modules/visual_script/doc_classes/VisualScriptYield.xml index 72ef586c1f..f21b53861a 100644 --- a/modules/visual_script/doc_classes/VisualScriptYield.xml +++ b/modules/visual_script/doc_classes/VisualScriptYield.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptYield" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptYield" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> @@ -9,22 +9,10 @@ <demos> </demos> <methods> - <method name="get_yield_mode"> - <return type="int" enum="VisualScriptYield.YieldMode"> - </return> - <description> - </description> - </method> - <method name="set_yield_mode"> - <return type="void"> - </return> - <argument index="0" name="mode" type="int" enum="VisualScriptYield.YieldMode"> - </argument> - <description> - </description> - </method> </methods> <members> + <member name="mode" type="int" setter="set_yield_mode" getter="get_yield_mode" enum="VisualScriptYield.YieldMode"> + </member> <member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time"> </member> </members> diff --git a/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml b/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml index f69043a685..5075fb6ded 100644 --- a/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml +++ b/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualScriptYieldSignal" inherits="VisualScriptNode" category="Core" version="3.0-beta"> +<class name="VisualScriptYieldSignal" inherits="VisualScriptNode" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/visual_script/register_types.cpp b/modules/visual_script/register_types.cpp index a9c6554198..2809cff362 100644 --- a/modules/visual_script/register_types.cpp +++ b/modules/visual_script/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "core/engine.h" diff --git a/modules/visual_script/register_types.h b/modules/visual_script/register_types.h index 3d6eb25d10..27b3bd649a 100644 --- a/modules/visual_script/register_types.h +++ b/modules/visual_script/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_visual_script_types(); void unregister_visual_script_types(); diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp index 26c3aed465..5987fdf5da 100644 --- a/modules/visual_script/visual_script.cpp +++ b/modules/visual_script/visual_script.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script.h" #include "os/os.h" @@ -129,7 +130,7 @@ void VisualScriptNode::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_default_input_values", "values"), &VisualScriptNode::_set_default_input_values); ClassDB::bind_method(D_METHOD("_get_default_input_values"), &VisualScriptNode::_get_default_input_values); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_default_input_values", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_default_input_values", "_get_default_input_values"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_default_input_values", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_default_input_values", "_get_default_input_values"); ADD_SIGNAL(MethodInfo("ports_changed")); } @@ -1318,7 +1319,7 @@ void VisualScript::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data", "data"), &VisualScript::_set_data); ClassDB::bind_method(D_METHOD("_get_data"), &VisualScript::_get_data); - ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); ADD_SIGNAL(MethodInfo("node_ports_changed", PropertyInfo(Variant::STRING, "function"), PropertyInfo(Variant::INT, "id"))); } diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h index 76eadece66..69bb522173 100644 --- a/modules/visual_script/visual_script.h +++ b/modules/visual_script/visual_script.h @@ -27,8 +27,9 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef VSCRIPT_H -#define VSCRIPT_H + +#ifndef VISUAL_SCRIPT_H +#define VISUAL_SCRIPT_H #include "os/thread.h" #include "script_language.h" @@ -617,4 +618,4 @@ static Ref<VisualScriptNode> create_node_generic(const String &p_name) { return node; } -#endif // VSCRIPT_H +#endif // VISUAL_SCRIPT_H diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index 3ace2de176..7f0a42da82 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_builtin_funcs.h" #include "class_db.h" @@ -256,10 +257,10 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const case MATH_ASIN: case MATH_ACOS: case MATH_ATAN: - case MATH_ATAN2: case MATH_SQRT: { - return PropertyInfo(Variant::REAL, "num"); + return PropertyInfo(Variant::REAL, "s"); } break; + case MATH_ATAN2: case MATH_FMOD: case MATH_FPOSMOD: { if (p_idx == 0) @@ -272,7 +273,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const case MATH_ROUND: case MATH_ABS: case MATH_SIGN: { - return PropertyInfo(Variant::REAL, "num"); + return PropertyInfo(Variant::REAL, "s"); } break; @@ -286,7 +287,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const case MATH_EXP: case MATH_ISNAN: case MATH_ISINF: { - return PropertyInfo(Variant::REAL, "num"); + return PropertyInfo(Variant::REAL, "s"); } break; case MATH_EASE: { if (p_idx == 0) @@ -317,7 +318,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const else if (p_idx == 1) return PropertyInfo(Variant::REAL, "to"); else - return PropertyInfo(Variant::REAL, "value"); + return PropertyInfo(Variant::REAL, "weight"); } break; case MATH_RANGE_LERP: { if (p_idx == 0) @@ -414,14 +415,14 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const } break; case LOGIC_CLAMP: { if (p_idx == 0) - return PropertyInfo(Variant::REAL, "a"); - else if (p_idx == 0) // FIXME: is it ok to test p_idx == 0 twice? + return PropertyInfo(Variant::REAL, "value"); + else if (p_idx == 1) return PropertyInfo(Variant::REAL, "min"); else return PropertyInfo(Variant::REAL, "max"); } break; case LOGIC_NEAREST_PO2: { - return PropertyInfo(Variant::INT, "num"); + return PropertyInfo(Variant::INT, "value"); } break; case OBJ_WEAKREF: { diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h index 1e098535f3..f862d5c26f 100644 --- a/modules/visual_script/visual_script_builtin_funcs.h +++ b/modules/visual_script/visual_script_builtin_funcs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SCRIPT_BUILTIN_FUNCS_H #define VISUAL_SCRIPT_BUILTIN_FUNCS_H diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index dfd563499f..b116dfdcf7 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_editor.h" #include "core/script_language.h" @@ -317,7 +318,8 @@ protected: } p_list->push_back(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_ENUM, argt)); p_list->push_back(PropertyInfo(script->get_variable_info(var).type, "value", script->get_variable_info(var).hint, script->get_variable_info(var).hint_string, PROPERTY_USAGE_DEFAULT)); - p_list->push_back(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,ExpRange,Enum,ExpEasing,Length,SpriteFrame,KeyAccel,BitFlags,AllFlags,File,Dir,GlobalFile,GlobalDir,ResourceType,MultilineText")); + // Update this when PropertyHint changes + p_list->push_back(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,ExpRange,Enum,ExpEasing,Length,SpriteFrame,KeyAccel,Flags,Layers2dRender,Layers2dPhysics,Layer3dRender,Layer3dPhysics,File,Dir,GlobalFile,GlobalDir,ResourceType,MultilineText,ColorNoAlpha,ImageCompressLossy,ImageCompressLossLess,ObjectId,String,NodePathToEditedNode,MethodOfVariantType,MethodOfBaseType,MethodOfInstance,MethodOfScript,PropertyOfVariantType,PropertyOfBaseType,PropertyOfInstance,PropertyOfScript,ObjectTooBig")); p_list->push_back(PropertyInfo(Variant::STRING, "hint_string")); p_list->push_back(PropertyInfo(Variant::BOOL, "export")); } diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h index 48b6a92b76..4d789e6ef7 100644 --- a/modules/visual_script/visual_script_editor.h +++ b/modules/visual_script/visual_script_editor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSCRIPT_EDITOR_H #define VISUALSCRIPT_EDITOR_H diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp index 2a051b3288..16de04e4cf 100644 --- a/modules/visual_script/visual_script_expression.cpp +++ b/modules/visual_script/visual_script_expression.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_expression.h" bool VisualScriptExpression::_set(const StringName &p_name, const Variant &p_value) { diff --git a/modules/visual_script/visual_script_expression.h b/modules/visual_script/visual_script_expression.h index 628f06fc0b..1f41e442c5 100644 --- a/modules/visual_script/visual_script_expression.h +++ b/modules/visual_script/visual_script_expression.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSCRIPTEXPRESSION_H #define VISUALSCRIPTEXPRESSION_H diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp index 56aeeac7fb..5c097dfa76 100644 --- a/modules/visual_script/visual_script_flow_control.cpp +++ b/modules/visual_script/visual_script_flow_control.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_flow_control.h" #include "io/resource_loader.h" diff --git a/modules/visual_script/visual_script_flow_control.h b/modules/visual_script/visual_script_flow_control.h index c985d1b9a9..40809d488a 100644 --- a/modules/visual_script/visual_script_flow_control.h +++ b/modules/visual_script/visual_script_flow_control.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SCRIPT_FLOW_CONTROL_H #define VISUAL_SCRIPT_FLOW_CONTROL_H diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp index 345d2f7df8..187c9b0b9e 100644 --- a/modules/visual_script/visual_script_func_nodes.cpp +++ b/modules/visual_script/visual_script_func_nodes.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_func_nodes.h" #include "engine.h" @@ -424,7 +425,7 @@ void VisualScriptFunctionCall::_update_method_cache() { #ifdef DEBUG_METHODS_ENABLED - method_cache.return_val = mb->get_argument_info(-1); + method_cache.return_val = mb->get_return_info(); #endif if (mb->is_vararg()) { @@ -545,7 +546,7 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo &property) const if (property.name == "base_type") { if (call_mode != CALL_MODE_INSTANCE) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } @@ -738,7 +739,7 @@ void VisualScriptFunctionCall::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::STRING, "singleton"), "set_singleton", "get_singleton"); ADD_PROPERTY(PropertyInfo(Variant::INT, "basic_type", PROPERTY_HINT_ENUM, bt), "set_basic_type", "get_basic_type"); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path"); - ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "argument_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_argument_cache", "_get_argument_cache"); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "argument_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_argument_cache", "_get_argument_cache"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "function"), "set_function", "get_function"); //when set, if loaded properly, will override argument count. ADD_PROPERTY(PropertyInfo(Variant::INT, "use_default_args"), "set_use_default_args", "get_use_default_args"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "validate"), "set_validate", "get_validate"); @@ -1349,7 +1350,7 @@ void VisualScriptPropertySet::_validate_property(PropertyInfo &property) const { if (property.name == "base_type") { if (call_mode != CALL_MODE_INSTANCE) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } @@ -1492,7 +1493,7 @@ void VisualScriptPropertySet::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "set_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type"), "set_call_mode", "get_call_mode"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_type", PROPERTY_HINT_TYPE_STRING, "Object"), "set_base_type", "get_base_type"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_script", PROPERTY_HINT_FILE, script_ext_hint), "set_base_script", "get_base_script"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_type_cache", "_get_type_cache"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_type_cache", "_get_type_cache"); ADD_PROPERTY(PropertyInfo(Variant::INT, "basic_type", PROPERTY_HINT_ENUM, bt), "set_basic_type", "get_basic_type"); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "property"), "set_property", "get_property"); @@ -2077,7 +2078,7 @@ void VisualScriptPropertyGet::_validate_property(PropertyInfo &property) const { if (property.name == "base_type") { if (call_mode != CALL_MODE_INSTANCE) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } @@ -2216,7 +2217,7 @@ void VisualScriptPropertyGet::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "set_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type"), "set_call_mode", "get_call_mode"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_type", PROPERTY_HINT_TYPE_STRING, "Object"), "set_base_type", "get_base_type"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_script", PROPERTY_HINT_FILE, script_ext_hint), "set_base_script", "get_base_script"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_type_cache", "_get_type_cache"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_type_cache", "_get_type_cache"); ADD_PROPERTY(PropertyInfo(Variant::INT, "basic_type", PROPERTY_HINT_ENUM, bt), "set_basic_type", "get_basic_type"); ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "property"), "set_property", "get_property"); diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h index 925f3b94aa..0b30eae65a 100644 --- a/modules/visual_script/visual_script_func_nodes.h +++ b/modules/visual_script/visual_script_func_nodes.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SCRIPT_FUNC_NODES_H #define VISUAL_SCRIPT_FUNC_NODES_H diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp index a41b3fc6c9..e0b4fde237 100644 --- a/modules/visual_script/visual_script_nodes.cpp +++ b/modules/visual_script/visual_script_nodes.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_nodes.h" #include "engine.h" @@ -3106,8 +3107,8 @@ void VisualScriptConstructor::_bind_methods() { ClassDB::bind_method(D_METHOD("set_constructor", "constructor"), &VisualScriptConstructor::set_constructor); ClassDB::bind_method(D_METHOD("get_constructor"), &VisualScriptConstructor::get_constructor); - ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_constructor_type", "get_constructor_type"); - ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "constructor", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_constructor", "get_constructor"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_constructor_type", "get_constructor_type"); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "constructor", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_constructor", "get_constructor"); } VisualScriptConstructor::VisualScriptConstructor() { @@ -3721,7 +3722,7 @@ void VisualScriptDeconstruct::_bind_methods() { } ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_ENUM, argt), "set_deconstruct_type", "get_deconstruct_type"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "elem_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_elem_cache", "_get_elem_cache"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "elem_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_elem_cache", "_get_elem_cache"); } VisualScriptDeconstruct::VisualScriptDeconstruct() { diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h index d49f64f3a6..a581e81c8c 100644 --- a/modules/visual_script/visual_script_nodes.h +++ b/modules/visual_script/visual_script_nodes.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SCRIPT_NODES_H #define VISUAL_SCRIPT_NODES_H diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp index 1961809be0..a96e8408c0 100644 --- a/modules/visual_script/visual_script_yield_nodes.cpp +++ b/modules/visual_script/visual_script_yield_nodes.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_script_yield_nodes.h" #include "os/os.h" diff --git a/modules/visual_script/visual_script_yield_nodes.h b/modules/visual_script/visual_script_yield_nodes.h index b6efd88c0e..4009240581 100644 --- a/modules/visual_script/visual_script_yield_nodes.h +++ b/modules/visual_script/visual_script_yield_nodes.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SCRIPT_YIELD_NODES_H #define VISUAL_SCRIPT_YIELD_NODES_H diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp index 999c06f664..bae8f7be5f 100644 --- a/modules/vorbis/audio_stream_ogg_vorbis.cpp +++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_stream_ogg_vorbis.h" size_t AudioStreamPlaybackOGGVorbis::_ov_read_func(void *p_dst, size_t p_data, size_t p_count, void *_f) { diff --git a/modules/vorbis/audio_stream_ogg_vorbis.h b/modules/vorbis/audio_stream_ogg_vorbis.h index 24102a43ec..01de8a3143 100644 --- a/modules/vorbis/audio_stream_ogg_vorbis.h +++ b/modules/vorbis/audio_stream_ogg_vorbis.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_STREAM_OGG_VORBIS_H #define AUDIO_STREAM_OGG_VORBIS_H diff --git a/modules/vorbis/register_types.cpp b/modules/vorbis/register_types.cpp index ffa3971c3e..0ea1fbe8b2 100644 --- a/modules/vorbis/register_types.cpp +++ b/modules/vorbis/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "audio_stream_ogg_vorbis.h" diff --git a/modules/vorbis/register_types.h b/modules/vorbis/register_types.h index 8e54747036..3885502da2 100644 --- a/modules/vorbis/register_types.h +++ b/modules/vorbis/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_vorbis_types(); void unregister_vorbis_types(); diff --git a/modules/vorbis/stub/register_types.cpp b/modules/vorbis/stub/register_types.cpp index 39abb9aafc..02ac9518c8 100644 --- a/modules/vorbis/stub/register_types.cpp +++ b/modules/vorbis/stub/register_types.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* 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" // Dummy module as libvorbis is needed by other modules (theora ...) diff --git a/modules/vorbis/stub/register_types.h b/modules/vorbis/stub/register_types.h index a6c51fb3e1..3885502da2 100644 --- a/modules/vorbis/stub/register_types.h +++ b/modules/vorbis/stub/register_types.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_vorbis_types(); void unregister_vorbis_types(); diff --git a/modules/webm/doc_classes/ResourceImporterWebm.xml b/modules/webm/doc_classes/ResourceImporterWebm.xml index 5dadb83b07..20e0e48187 100644 --- a/modules/webm/doc_classes/ResourceImporterWebm.xml +++ b/modules/webm/doc_classes/ResourceImporterWebm.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceImporterWebm" inherits="ResourceImporter" category="Core" version="3.0-beta"> +<class name="ResourceImporterWebm" inherits="ResourceImporter" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/webm/doc_classes/VideoStreamWebm.xml b/modules/webm/doc_classes/VideoStreamWebm.xml index 6e8120b1de..94aea5c8d2 100644 --- a/modules/webm/doc_classes/VideoStreamWebm.xml +++ b/modules/webm/doc_classes/VideoStreamWebm.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VideoStreamWebm" inherits="VideoStream" category="Core" version="3.0-beta"> +<class name="VideoStreamWebm" inherits="VideoStream" category="Core" version="3.0-stable"> <brief_description> </brief_description> <description> diff --git a/modules/webm/register_types.cpp b/modules/webm/register_types.cpp index 10c06ca4e5..1183dd41f7 100644 --- a/modules/webm/register_types.cpp +++ b/modules/webm/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "resource_importer_webm.h" #include "video_stream_webm.h" diff --git a/modules/webm/register_types.h b/modules/webm/register_types.h index a429a9a398..102da2b0f5 100644 --- a/modules/webm/register_types.h +++ b/modules/webm/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_webm_types(); void unregister_webm_types(); diff --git a/modules/webm/resource_importer_webm.cpp b/modules/webm/resource_importer_webm.cpp index 2ea1485437..7124a503e8 100644 --- a/modules/webm/resource_importer_webm.cpp +++ b/modules/webm/resource_importer_webm.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_importer_webm.h" #include "io/resource_saver.h" diff --git a/modules/webm/resource_importer_webm.h b/modules/webm/resource_importer_webm.h index 7cce805e70..d61e6e2a93 100644 --- a/modules/webm/resource_importer_webm.h +++ b/modules/webm/resource_importer_webm.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCEIMPORTERWEBM_H #define RESOURCEIMPORTERWEBM_H diff --git a/modules/webm/video_stream_webm.cpp b/modules/webm/video_stream_webm.cpp index e915af3e6c..fac47225bc 100644 --- a/modules/webm/video_stream_webm.cpp +++ b/modules/webm/video_stream_webm.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "video_stream_webm.h" #include "OpusVorbisDecoder.hpp" @@ -435,7 +436,7 @@ void VideoStreamWebm::_bind_methods() { ClassDB::bind_method(D_METHOD("set_file", "file"), &VideoStreamWebm::set_file); ClassDB::bind_method(D_METHOD("get_file"), &VideoStreamWebm::get_file); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_file", "get_file"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_file", "get_file"); } void VideoStreamWebm::set_audio_track(int p_track) { diff --git a/modules/webm/video_stream_webm.h b/modules/webm/video_stream_webm.h index c0b4490bf5..dde993d154 100644 --- a/modules/webm/video_stream_webm.h +++ b/modules/webm/video_stream_webm.h @@ -27,6 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + +#ifndef VIDEO_STREAM_WEBM_H +#define VIDEO_STREAM_WEBM_H + #include "io/resource_loader.h" #include "scene/resources/video_stream.h" @@ -122,3 +126,5 @@ public: String get_file(); virtual void set_audio_track(int p_track); }; + +#endif // VIDEO_STREAM_WEBM_H diff --git a/modules/webp/image_loader_webp.cpp b/modules/webp/image_loader_webp.cpp index 903b456540..cdf2d75e96 100644 --- a/modules/webp/image_loader_webp.cpp +++ b/modules/webp/image_loader_webp.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "image_loader_webp.h" #include "io/marshalls.h" diff --git a/modules/webp/image_loader_webp.h b/modules/webp/image_loader_webp.h index b00c8b1b05..f051fed4b8 100644 --- a/modules/webp/image_loader_webp.h +++ b/modules/webp/image_loader_webp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMAGE_LOADER_WEBP_H #define IMAGE_LOADER_WEBP_H diff --git a/modules/webp/register_types.cpp b/modules/webp/register_types.cpp index 86eb558dff..9a2e83c65d 100644 --- a/modules/webp/register_types.cpp +++ b/modules/webp/register_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_types.h" #include "image_loader_webp.h" diff --git a/modules/webp/register_types.h b/modules/webp/register_types.h index 025bc49be1..711f5be61d 100644 --- a/modules/webp/register_types.h +++ b/modules/webp/register_types.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_webp_types(); void unregister_webp_types(); diff --git a/platform/android/SCsub b/platform/android/SCsub index 0cd91276ef..d2285a82dd 100644 --- a/platform/android/SCsub +++ b/platform/android/SCsub @@ -104,7 +104,7 @@ gradle_asset_dirs_text = "" gradle_default_config_text = "" minSdk = 18 -targetSdk = 23 +targetSdk = 27 for x in env.android_default_config: if x.startswith("minSdkVersion") and int(x.split(" ")[-1]) < minSdk: diff --git a/platform/android/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp index 1f05d6cd9b..7545ee88d0 100644 --- a/platform/android/audio_driver_jandroid.cpp +++ b/platform/android/audio_driver_jandroid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_jandroid.h" #include "os/os.h" diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h index 5cd8eb8e0c..763f0e9b5a 100644 --- a/platform/android/audio_driver_jandroid.h +++ b/platform/android/audio_driver_jandroid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_ANDROID_H #define AUDIO_DRIVER_ANDROID_H diff --git a/platform/android/audio_driver_opensl.cpp b/platform/android/audio_driver_opensl.cpp index f0218e13bd..87a7d04e01 100644 --- a/platform/android/audio_driver_opensl.cpp +++ b/platform/android/audio_driver_opensl.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_opensl.h" #include <string.h> diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h index 9dc74c6c8a..2022bad02a 100644 --- a/platform/android/audio_driver_opensl.h +++ b/platform/android/audio_driver_opensl.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_OPENSL_H #define AUDIO_DRIVER_OPENSL_H diff --git a/platform/android/build.gradle.template b/platform/android/build.gradle.template index 4a44d1c5f9..7269e658b4 100644 --- a/platform/android/build.gradle.template +++ b/platform/android/build.gradle.template @@ -15,12 +15,13 @@ allprojects { repositories { jcenter() mavenCentral() + google() $$GRADLE_REPOSITORY_URLS$$ } } dependencies { - compile 'com.android.support:support-v4:23.+' // can be removed if minSdkVersion 16 and modify DownloadNotification.java & V14CustomNotification.java + compile 'com.android.support:support-v4:27.+' // can be removed if minSdkVersion 16 and modify DownloadNotification.java & V14CustomNotification.java $$GRADLE_DEPENDENCIES$$ } @@ -31,8 +32,8 @@ android { disable 'MissingTranslation' } - compileSdkVersion 26 - buildToolsVersion "26.0.1" + compileSdkVersion 27 + buildToolsVersion "27.0.3" useLibrary 'org.apache.http.legacy' packagingOptions { diff --git a/platform/android/dir_access_android.cpp b/platform/android/dir_access_android.cpp index c6e11ec505..402da4527e 100644 --- a/platform/android/dir_access_android.cpp +++ b/platform/android/dir_access_android.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef ANDROID_NATIVE_ACTIVITY #include "dir_access_android.h" #include "file_access_android.h" diff --git a/platform/android/dir_access_android.h b/platform/android/dir_access_android.h index 970202b5cc..085d7160cd 100644 --- a/platform/android/dir_access_android.h +++ b/platform/android/dir_access_android.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIR_ACCESS_ANDROID_H #define DIR_ACCESS_ANDROID_H diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp index 6abab3edf6..5601dcc763 100644 --- a/platform/android/dir_access_jandroid.cpp +++ b/platform/android/dir_access_jandroid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANDROID_NATIVE_ACTIVITY #include "dir_access_jandroid.h" diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h index 4a9112fb27..8dc52ab9c8 100644 --- a/platform/android/dir_access_jandroid.h +++ b/platform/android/dir_access_jandroid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIR_ACCESS_JANDROID_H #define DIR_ACCESS_JANDROID_H diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 922a53621f..2a61f8d873 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "export.h" #include "editor/editor_export.h" @@ -551,6 +552,10 @@ class EditorExportAndroid : public EditorExportPlatform { return OK; } + static Error ignore_apk_file(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total) { + return OK; + } + void _fix_manifest(const Ref<EditorExportPreset> &p_preset, Vector<uint8_t> &p_manifest, bool p_give_internet) { // Leaving the unused types commented because looking these constants up @@ -1503,6 +1508,10 @@ public: cl.push_back(passwd); }*/ + APKExportData ed; + ed.ep = &ep; + ed.apk = unaligned_apk; + err = export_project_files(p_preset, ignore_apk_file, &ed, save_apk_so); } else { //all files @@ -1530,17 +1539,17 @@ public: err = export_project_files(p_preset, save_apk_file, &ed, save_apk_so); } + } - if (!err) { - APKExportData ed; - ed.ep = &ep; - ed.apk = unaligned_apk; - for (int i = 0; i < sizeof(launcher_icons) / sizeof(launcher_icons[0]); ++i) { - String icon_path = String(p_preset->get(launcher_icons[i].option_id)).strip_edges(); - if (icon_path != "" && icon_path.ends_with(".png") && FileAccess::exists(icon_path)) { - Vector<uint8_t> data = FileAccess::get_file_as_array(icon_path); - store_in_apk(&ed, launcher_icons[i].export_path, data); - } + if (!err) { + APKExportData ed; + ed.ep = &ep; + ed.apk = unaligned_apk; + for (int i = 0; i < sizeof(launcher_icons) / sizeof(launcher_icons[0]); ++i) { + String icon_path = String(p_preset->get(launcher_icons[i].option_id)).strip_edges(); + if (icon_path != "" && icon_path.ends_with(".png") && FileAccess::exists(icon_path)) { + Vector<uint8_t> data = FileAccess::get_file_as_array(icon_path); + store_in_apk(&ed, launcher_icons[i].export_path, data); } } } diff --git a/platform/android/export/export.h b/platform/android/export/export.h index eb18e04863..9d66626866 100644 --- a/platform/android/export/export.h +++ b/platform/android/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_android_exporter(); diff --git a/platform/android/file_access_android.cpp b/platform/android/file_access_android.cpp index d958ef8294..c2eed50e4c 100644 --- a/platform/android/file_access_android.cpp +++ b/platform/android/file_access_android.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_access_android.h" #include "print_string.h" diff --git a/platform/android/file_access_android.h b/platform/android/file_access_android.h index f44c19f963..03f4c59521 100644 --- a/platform/android/file_access_android.h +++ b/platform/android/file_access_android.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_ANDROID_H #define FILE_ACCESS_ANDROID_H diff --git a/platform/android/file_access_jandroid.cpp b/platform/android/file_access_jandroid.cpp index 4285a136a2..1a9d3af4ea 100644 --- a/platform/android/file_access_jandroid.cpp +++ b/platform/android/file_access_jandroid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANDROID_NATIVE_ACTIVITY #include "file_access_jandroid.h" diff --git a/platform/android/file_access_jandroid.h b/platform/android/file_access_jandroid.h index c537f2f01a..72f81ee02e 100644 --- a/platform/android/file_access_jandroid.h +++ b/platform/android/file_access_jandroid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_ACCESS_JANDROID_H #define FILE_ACCESS_JANDROID_H diff --git a/platform/android/globals/global_defaults.cpp b/platform/android/globals/global_defaults.cpp index 4a7dd07090..a315f80452 100644 --- a/platform/android/globals/global_defaults.cpp +++ b/platform/android/globals/global_defaults.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "global_defaults.h" #include "project_settings.h" diff --git a/platform/android/globals/global_defaults.h b/platform/android/globals/global_defaults.h index 412942eb88..99da2dd527 100644 --- a/platform/android/globals/global_defaults.h +++ b/platform/android/globals/global_defaults.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_android_global_defaults(); diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp index 1643be7763..64715b3683 100644 --- a/platform/android/godot_android.cpp +++ b/platform/android/godot_android.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef ANDROID_NATIVE_ACTIVITY #include "engine.h" diff --git a/platform/android/java/gradle/wrapper/gradle-wrapper.properties b/platform/android/java/gradle/wrapper/gradle-wrapper.properties index ee6901c9d7..fe37fa74a9 100644 --- a/platform/android/java/gradle/wrapper/gradle-wrapper.properties +++ b/platform/android/java/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/platform/android/java/src/org/godotengine/godot/Dictionary.java b/platform/android/java/src/org/godotengine/godot/Dictionary.java index b7ced69d0e..de6b4af568 100644 --- a/platform/android/java/src/org/godotengine/godot/Dictionary.java +++ b/platform/android/java/src/org/godotengine/godot/Dictionary.java @@ -27,6 +27,7 @@ /* 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; import java.util.HashMap; diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java index d6e060f8d5..b5b0afb9e0 100644 --- a/platform/android/java/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/src/org/godotengine/godot/Godot.java @@ -27,6 +27,7 @@ /* 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; import android.R; @@ -827,7 +828,6 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC //@Override public boolean dispatchTouchEvent (MotionEvent event) { public boolean gotTouchEvent(final MotionEvent event) { - super.onTouchEvent(event); final int evcount = event.getPointerCount(); if (evcount == 0) return true; @@ -841,6 +841,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC arr[i * 3 + 1] = (int)event.getX(i); arr[i * 3 + 2] = (int)event.getY(i); } + final int pointer_idx = event.getPointerId(event.getActionIndex()); //System.out.printf("gaction: %d\n",event.getAction()); final int action = event.getAction() & MotionEvent.ACTION_MASK; @@ -861,13 +862,10 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC */ } break; case MotionEvent.ACTION_POINTER_UP: { - final int indexPointUp = event.getActionIndex(); - final int pointer_idx = event.getPointerId(indexPointUp); GodotLib.touch(4, pointer_idx, evcount, arr); //System.out.printf("%d - s.up at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx)); } break; case MotionEvent.ACTION_POINTER_DOWN: { - int pointer_idx = event.getActionIndex(); GodotLib.touch(3, pointer_idx, evcount, arr); //System.out.printf("%d - s.down at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx)); } break; diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java index a3fed28c6f..4701bac9df 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java +++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java @@ -27,6 +27,7 @@ /* 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; import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller; diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java index 9da705409b..3a94354843 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java +++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java @@ -27,6 +27,7 @@ /* 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; import android.content.Context; diff --git a/platform/android/java/src/org/godotengine/godot/GodotIO.java b/platform/android/java/src/org/godotengine/godot/GodotIO.java index 2382288ca8..a95c508d21 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotIO.java +++ b/platform/android/java/src/org/godotengine/godot/GodotIO.java @@ -27,6 +27,7 @@ /* 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; import java.util.HashMap; import java.util.Locale; diff --git a/platform/android/java/src/org/godotengine/godot/GodotLib.java b/platform/android/java/src/org/godotengine/godot/GodotLib.java index 9deb9dcb35..45eb188327 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotLib.java +++ b/platform/android/java/src/org/godotengine/godot/GodotLib.java @@ -27,6 +27,7 @@ /* 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; // Wrapper for native library diff --git a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java index 7db0ef1b18..6b7f7a283e 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java +++ b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java @@ -27,6 +27,7 @@ /* 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; import android.app.Activity; diff --git a/platform/android/java/src/org/godotengine/godot/GodotView.java b/platform/android/java/src/org/godotengine/godot/GodotView.java index db7daa1307..0222758c2b 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotView.java +++ b/platform/android/java/src/org/godotengine/godot/GodotView.java @@ -27,6 +27,7 @@ /* 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; import android.content.Context; import android.graphics.PixelFormat; @@ -109,7 +110,7 @@ public class GodotView extends GLSurfaceView implements InputDeviceListener { @Override public boolean onTouchEvent(MotionEvent event) { - + super.onTouchEvent(event); return activity.gotTouchEvent(event); }; diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java index df62ac5a01..53fcf5ef70 100644 --- a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java +++ b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java @@ -27,6 +27,7 @@ /* 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.input; import android.content.Context; import android.util.AttributeSet; diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java index eb3075fdfc..5d13f17ffb 100644 --- a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java +++ b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java @@ -27,6 +27,7 @@ /* 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.input; import android.content.Context; import android.text.Editable; @@ -102,13 +103,16 @@ public class GodotTextInputWrapper implements TextWatcher, OnEditorActionListene public void onTextChanged(final CharSequence pCharSequence, final int start, final int before, final int count) { //Log.d(TAG, "onTextChanged(" + pCharSequence + ")start: " + start + ",count: " + count + ",before: " + before); + final int[] newChars = new int[count]; + for (int i = start; i < start + count; ++i) { + newChars[i - start] = pCharSequence.charAt(i); + } mView.queueEvent(new Runnable() { @Override public void run() { - for (int i = start; i < start + count; ++i) { - final int ch = pCharSequence.charAt(i); - GodotLib.key(0, ch, true); - GodotLib.key(0, ch, false); + for (int i = 0; i < count; ++i) { + GodotLib.key(0, newChars[i], true); + GodotLib.key(0, newChars[i], false); } } }); diff --git a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java index f78e454d93..afe5f81b6d 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java @@ -27,6 +27,7 @@ /* 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.payments; import com.android.vending.billing.IInAppBillingService; diff --git a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java index 747eea5e5c..8b48193ae2 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java @@ -27,6 +27,7 @@ /* 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.payments; import com.android.vending.billing.IInAppBillingService; diff --git a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java index b49244cf09..766989f953 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java @@ -27,6 +27,7 @@ /* 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.payments; import org.json.JSONException; diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java index 05e634c13c..40cdeea72e 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java @@ -27,6 +27,7 @@ /* 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.payments; import android.content.Context; diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java index 8086489897..da6d66ae88 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java @@ -27,6 +27,7 @@ /* 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.payments; import android.app.Activity; diff --git a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java index a31b6ed9f2..e1d9bcee65 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java @@ -27,6 +27,7 @@ /* 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.payments; import org.json.JSONException; diff --git a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java index 6ab6673183..e00e37f9d1 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java @@ -27,6 +27,7 @@ /* 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.payments; import java.util.ArrayList; diff --git a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java index c10008c4e1..1eb9d001e0 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java @@ -27,6 +27,7 @@ /* 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.payments; import org.json.JSONException; diff --git a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java index cdaf60bded..f34511137e 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java +++ b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java @@ -27,6 +27,7 @@ /* 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 java.security.MessageDigest; diff --git a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java index 7bd8fb63b2..7216d8b5a4 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java +++ b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java @@ -27,6 +27,7 @@ /* 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 java.io.IOException; import java.net.Socket; diff --git a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java index ae1233674e..b84f5cce2e 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java +++ b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java @@ -27,6 +27,7 @@ /* 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 java.io.BufferedReader; diff --git a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java index 7df98fab85..2368766afa 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java +++ b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java @@ -27,6 +27,7 @@ /* 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 java.util.ArrayList; diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp index 1d03c3671a..80a32452a5 100644 --- a/platform/android/java_class_wrapper.cpp +++ b/platform/android/java_class_wrapper.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "java_class_wrapper.h" #include "thread_jandroid.h" diff --git a/platform/android/java_class_wrapper.h b/platform/android/java_class_wrapper.h index 4b374bc216..648c147ca8 100644 --- a/platform/android/java_class_wrapper.h +++ b/platform/android/java_class_wrapper.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JAVA_CLASS_WRAPPER_H #define JAVA_CLASS_WRAPPER_H diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index 25aee74c46..4e9e4f6260 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANDROID_NATIVE_ACTIVITY #include "java_glue.h" diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h index fb997e950b..d433b5f0d8 100644 --- a/platform/android/java_glue.h +++ b/platform/android/java_glue.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANDROID_NATIVE_ACTIVITY #ifndef JAVA_GLUE_H diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index dd23a81977..67ce796279 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_android.h" #include "core/io/file_access_buffered_fa.h" @@ -47,6 +48,8 @@ #include "file_access_jandroid.h" #endif +#include <dlfcn.h> + class AndroidLogger : public Logger { public: virtual void logv(const char *p_format, va_list p_list, bool p_err) { @@ -120,7 +123,7 @@ void OS_Android::set_opengl_extensions(const char *p_gl_extensions) { gl_extensions = p_gl_extensions; } -void OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { use_gl2 = p_video_driver != 1; @@ -146,6 +149,8 @@ void OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int input->set_fallback_mapping("Default Android Gamepad"); //power_manager = memnew(power_android); + + return OK; } void OS_Android::set_main_loop(MainLoop *p_main_loop) { @@ -170,6 +175,15 @@ void OS_Android::alert(const String &p_alert, const String &p_title) { alert_func(p_alert, p_title); } +Error OS_Android::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) { + p_library_handle = dlopen(p_path.utf8().get_data(), RTLD_NOW); + if (!p_library_handle) { + ERR_EXPLAIN("Can't open dynamic library: " + p_path + ". Error: " + dlerror()); + ERR_FAIL_V(ERR_CANT_OPEN); + } + return OK; +} + void OS_Android::set_mouse_show(bool p_show) { //android has no mouse... @@ -248,6 +262,9 @@ void OS_Android::set_cursor_shape(CursorShape p_shape) { //android really really really has no mouse.. how amazing.. } +void OS_Android::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { +} + void OS_Android::main_loop_begin() { if (main_loop) @@ -438,25 +455,27 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> } touch.clear(); } - } break; - case 3: { // add tuchi - - ERR_FAIL_INDEX(p_pointer, p_points.size()); + case 3: { // add touch - TouchPos tp = p_points[p_pointer]; - touch.push_back(tp); + for (int i = 0; i < p_points.size(); i++) { + if (p_points[i].id == p_pointer) { + TouchPos tp = p_points[i]; + touch.push_back(tp); - Ref<InputEventScreenTouch> ev; - ev.instance(); + Ref<InputEventScreenTouch> ev; + ev.instance(); - ev->set_index(tp.id); - ev->set_pressed(true); - ev->set_position(tp.pos); - input->parse_input_event(ev); + ev->set_index(tp.id); + ev->set_pressed(true); + ev->set_position(tp.pos); + input->parse_input_event(ev); + break; + } + } } break; - case 4: { + case 4: { // remove touch for (int i = 0; i < touch.size(); i++) { if (touch[i].id == p_pointer) { @@ -468,10 +487,10 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos> ev->set_position(touch[i].pos); input->parse_input_event(ev); touch.remove(i); - i--; + + break; } } - } break; } } diff --git a/platform/android/os_android.h b/platform/android/os_android.h index 744dce7ff1..12181b3688 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_ANDROID_H #define OS_ANDROID_H @@ -145,7 +146,7 @@ public: virtual const char *get_audio_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void set_main_loop(MainLoop *p_main_loop); virtual void delete_main_loop(); @@ -158,6 +159,8 @@ public: virtual void alert(const String &p_alert, const String &p_title = "ALERT!"); + virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false); + virtual void set_mouse_show(bool p_show); virtual void set_mouse_grab(bool p_grab); virtual bool is_mouse_grab_enabled() const; @@ -182,6 +185,7 @@ public: virtual bool can_draw() const; virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); void main_loop_begin(); bool main_loop_iterate(); diff --git a/platform/android/platform_config.h b/platform/android/platform_config.h index 3b3ea3930c..299d8563dd 100644 --- a/platform/android/platform_config.h +++ b/platform/android/platform_config.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <alloca.h> #include <malloc.h> diff --git a/platform/android/thread_jandroid.cpp b/platform/android/thread_jandroid.cpp index 29c4e7301c..e85813605f 100644 --- a/platform/android/thread_jandroid.cpp +++ b/platform/android/thread_jandroid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread_jandroid.h" #include "core/safe_refcount.h" diff --git a/platform/android/thread_jandroid.h b/platform/android/thread_jandroid.h index 37b3b38408..2bb64f3db2 100644 --- a/platform/android/thread_jandroid.h +++ b/platform/android/thread_jandroid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_POSIX_H #define THREAD_POSIX_H diff --git a/platform/haiku/audio_driver_media_kit.cpp b/platform/haiku/audio_driver_media_kit.cpp index f687339fec..278a994c54 100644 --- a/platform/haiku/audio_driver_media_kit.cpp +++ b/platform/haiku/audio_driver_media_kit.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_media_kit.h" #ifdef MEDIA_KIT_ENABLED diff --git a/platform/haiku/audio_driver_media_kit.h b/platform/haiku/audio_driver_media_kit.h index 844ab4c60e..a09403e7d6 100644 --- a/platform/haiku/audio_driver_media_kit.h +++ b/platform/haiku/audio_driver_media_kit.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "servers/audio_server.h" #ifdef MEDIA_KIT_ENABLED diff --git a/platform/haiku/context_gl_haiku.cpp b/platform/haiku/context_gl_haiku.cpp index 9332e93389..41df17d2d1 100644 --- a/platform/haiku/context_gl_haiku.cpp +++ b/platform/haiku/context_gl_haiku.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "context_gl_haiku.h" #if defined(OPENGL_ENABLED) diff --git a/platform/haiku/context_gl_haiku.h b/platform/haiku/context_gl_haiku.h index 193c1e77f9..74f09984f2 100644 --- a/platform/haiku/context_gl_haiku.h +++ b/platform/haiku/context_gl_haiku.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTEXT_GL_HAIKU_H #define CONTEXT_GL_HAIKU_H diff --git a/platform/haiku/godot_haiku.cpp b/platform/haiku/godot_haiku.cpp index d207d36606..b042d81650 100644 --- a/platform/haiku/godot_haiku.cpp +++ b/platform/haiku/godot_haiku.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_haiku.h" diff --git a/platform/haiku/haiku_application.cpp b/platform/haiku/haiku_application.cpp index d7fa505b79..4f5e3e42a2 100644 --- a/platform/haiku/haiku_application.cpp +++ b/platform/haiku/haiku_application.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "haiku_application.h" HaikuApplication::HaikuApplication() : diff --git a/platform/haiku/haiku_application.h b/platform/haiku/haiku_application.h index 4408f466fb..f92969bbb1 100644 --- a/platform/haiku/haiku_application.h +++ b/platform/haiku/haiku_application.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HAIKU_APPLICATION_H #define HAIKU_APPLICATION_H diff --git a/platform/haiku/haiku_direct_window.cpp b/platform/haiku/haiku_direct_window.cpp index cf33e42220..b234a2ff91 100644 --- a/platform/haiku/haiku_direct_window.cpp +++ b/platform/haiku/haiku_direct_window.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <UnicodeChar.h> #include "haiku_direct_window.h" diff --git a/platform/haiku/haiku_direct_window.h b/platform/haiku/haiku_direct_window.h index 0bdcb51ca1..55c2f5fccc 100644 --- a/platform/haiku/haiku_direct_window.h +++ b/platform/haiku/haiku_direct_window.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HAIKU_DIRECT_WINDOW_H #define HAIKU_DIRECT_WINDOW_H diff --git a/platform/haiku/haiku_gl_view.cpp b/platform/haiku/haiku_gl_view.cpp index e47dc2f726..a40cbe5765 100644 --- a/platform/haiku/haiku_gl_view.cpp +++ b/platform/haiku/haiku_gl_view.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "haiku_gl_view.h" #include "main/main.h" diff --git a/platform/haiku/haiku_gl_view.h b/platform/haiku/haiku_gl_view.h index e67f3e6b0a..1a694dc13b 100644 --- a/platform/haiku/haiku_gl_view.h +++ b/platform/haiku/haiku_gl_view.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HAIKU_GL_VIEW_H #define HAIKU_GL_VIEW_H diff --git a/platform/haiku/key_mapping_haiku.cpp b/platform/haiku/key_mapping_haiku.cpp index 62671b0cc3..28a282e25c 100644 --- a/platform/haiku/key_mapping_haiku.cpp +++ b/platform/haiku/key_mapping_haiku.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <InterfaceDefs.h> #include "key_mapping_haiku.h" diff --git a/platform/haiku/key_mapping_haiku.h b/platform/haiku/key_mapping_haiku.h index 5a1b9f9134..917151bc4a 100644 --- a/platform/haiku/key_mapping_haiku.h +++ b/platform/haiku/key_mapping_haiku.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef KEY_MAPPING_HAIKU_H #define KEY_MAPPING_HAIKU_H diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp index 3324b33e95..97fab5ca0d 100644 --- a/platform/haiku/os_haiku.cpp +++ b/platform/haiku/os_haiku.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_haiku.h" #include "drivers/gles3/rasterizer_gles3.h" @@ -79,7 +80,7 @@ const char *OS_Haiku::get_video_driver_name(int p_driver) const { return "GLES3"; } -void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { main_loop = NULL; current_video_mode = p_desired; @@ -114,7 +115,7 @@ void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_ visual_server = memnew(VisualServerRaster(rasterizer)); - ERR_FAIL_COND(!visual_server); + ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE); // TODO: enable multithreaded VS /* @@ -132,6 +133,8 @@ void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_ AudioDriverManager::initialize(p_audio_driver); power_manager = memnew(PowerHaiku); + + return OK; } void OS_Haiku::finalize() { @@ -200,6 +203,10 @@ void OS_Haiku::set_cursor_shape(CursorShape p_shape) { //ERR_PRINT("set_cursor_shape() NOT IMPLEMENTED"); } +void OS_Haiku::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { + // TODO +} + int OS_Haiku::get_screen_count() const { // TODO: implement get_screen_count() return 1; diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h index b4d0add04b..615ae682ef 100644 --- a/platform/haiku/os_haiku.h +++ b/platform/haiku/os_haiku.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_HAIKU_H #define OS_HAIKU_H @@ -66,7 +67,7 @@ protected: virtual int get_video_driver_count() const; virtual const char *get_video_driver_name(int p_driver) const; - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void finalize(); virtual void set_main_loop(MainLoop *p_main_loop); @@ -87,6 +88,7 @@ public: virtual Point2 get_mouse_position() const; virtual int get_mouse_button_state() const; virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); virtual int get_screen_count() const; virtual int get_current_screen() const; diff --git a/platform/haiku/platform_config.h b/platform/haiku/platform_config.h index 5a7bc3db23..bbd72dfeb6 100644 --- a/platform/haiku/platform_config.h +++ b/platform/haiku/platform_config.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <alloca.h> // for ifaddrs.h needed in drivers/unix/ip_unix.cpp diff --git a/platform/iphone/app_delegate.h b/platform/iphone/app_delegate.h index 11656ca1f3..f14864b5b7 100644 --- a/platform/iphone/app_delegate.h +++ b/platform/iphone/app_delegate.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #import "gl_view.h" #import "view_controller.h" #import <UIKit/UIKit.h> diff --git a/platform/iphone/app_delegate.mm b/platform/iphone/app_delegate.mm index 96f542c170..5c3799ab09 100644 --- a/platform/iphone/app_delegate.mm +++ b/platform/iphone/app_delegate.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #import "app_delegate.h" #include "core/project_settings.h" diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp index 99d44f3b5e..e3119814f4 100644 --- a/platform/iphone/export/export.cpp +++ b/platform/iphone/export/export.cpp @@ -407,7 +407,7 @@ Error EditorExportPlatformIOS::_export_loading_screens(const Ref<EditorExportPre Error err = da->copy(loading_screen_file, p_dest_dir + info.export_name); if (err) { memdelete(da); - String err_str = String("Failed to export loading screen: ") + loading_screen_file; + String err_str = String("Failed to export loading screen (") + info.preset_key + ") from path: " + loading_screen_file; ERR_PRINT(err_str.utf8().get_data()); return err; } diff --git a/platform/iphone/export/export.h b/platform/iphone/export/export.h index f67c34a626..ea79973290 100644 --- a/platform/iphone/export/export.h +++ b/platform/iphone/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_iphone_exporter(); diff --git a/platform/iphone/game_center.h b/platform/iphone/game_center.h index bf7ec1f93e..9a62cccb1a 100644 --- a/platform/iphone/game_center.h +++ b/platform/iphone/game_center.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef GAME_CENTER_ENABLED #ifndef GAME_CENTER_H diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm index 958158c254..57ff79f7bc 100644 --- a/platform/iphone/game_center.mm +++ b/platform/iphone/game_center.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef GAME_CENTER_ENABLED #include "game_center.h" diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm index f0dafacd03..69116c64c6 100644 --- a/platform/iphone/gl_view.mm +++ b/platform/iphone/gl_view.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #import "gl_view.h" #include "core/os/keyboard.h" diff --git a/platform/iphone/globals/global_defaults.cpp b/platform/iphone/globals/global_defaults.cpp index 97a7ec1678..ccc90665c5 100644 --- a/platform/iphone/globals/global_defaults.cpp +++ b/platform/iphone/globals/global_defaults.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "global_defaults.h" #include "project_settings.h" diff --git a/platform/iphone/globals/global_defaults.h b/platform/iphone/globals/global_defaults.h index f58659ebff..3e3c220f4a 100644 --- a/platform/iphone/globals/global_defaults.h +++ b/platform/iphone/globals/global_defaults.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_iphone_global_defaults(); diff --git a/platform/iphone/godot_iphone.cpp b/platform/iphone/godot_iphone.cpp index 440dae5da5..dacbf42087 100644 --- a/platform/iphone/godot_iphone.cpp +++ b/platform/iphone/godot_iphone.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_iphone.h" #include "ustring.h" diff --git a/platform/iphone/icloud.h b/platform/iphone/icloud.h index d2514919ba..52bb1131a0 100644 --- a/platform/iphone/icloud.h +++ b/platform/iphone/icloud.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef ICLOUD_ENABLED #ifndef ICLOUD_H diff --git a/platform/iphone/icloud.mm b/platform/iphone/icloud.mm index db4d86b812..7508a480ce 100644 --- a/platform/iphone/icloud.mm +++ b/platform/iphone/icloud.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef ICLOUD_ENABLED #include "icloud.h" diff --git a/platform/iphone/in_app_store.h b/platform/iphone/in_app_store.h index 28f23d77e1..7d53eaae20 100644 --- a/platform/iphone/in_app_store.h +++ b/platform/iphone/in_app_store.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef STOREKIT_ENABLED #ifndef IN_APP_STORE_H diff --git a/platform/iphone/in_app_store.mm b/platform/iphone/in_app_store.mm index 3399a64732..9bb3d7d3fa 100644 --- a/platform/iphone/in_app_store.mm +++ b/platform/iphone/in_app_store.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef STOREKIT_ENABLED #include "in_app_store.h" diff --git a/platform/iphone/ios.h b/platform/iphone/ios.h index aca0ac54a9..5e77683949 100644 --- a/platform/iphone/ios.h +++ b/platform/iphone/ios.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IOS_H #define IOS_H diff --git a/platform/iphone/ios.mm b/platform/iphone/ios.mm index 48104b9c4f..7eb4f495f7 100644 --- a/platform/iphone/ios.mm +++ b/platform/iphone/ios.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ios.h" #import <UIKit/UIKit.h> diff --git a/platform/iphone/main.m b/platform/iphone/main.m index dfe468dc13..0f0810f28f 100644 --- a/platform/iphone/main.m +++ b/platform/iphone/main.m @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #import "app_delegate.h" #import <UIKit/UIKit.h> diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp index dcb7b8b1f4..c284ab6905 100644 --- a/platform/iphone/os_iphone.cpp +++ b/platform/iphone/os_iphone.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef IPHONE_ENABLED #include "os_iphone.h" @@ -97,7 +98,7 @@ void OSIPhone::initialize_core() { set_data_dir(data_dir); }; -void OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { supported_orientations = 0; supported_orientations |= ((GLOBAL_DEF("video_mode/allow_horizontal", true) ? 1 : 0) << LandscapeLeft); @@ -144,6 +145,8 @@ void OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_ //icloud->connect(); #endif Engine::get_singleton()->add_singleton(Engine::Singleton("iOS", memnew(iOS))); + + return OK; }; MainLoop *OSIPhone::get_main_loop() const { @@ -490,6 +493,8 @@ String OSIPhone::get_user_data_dir() const { return data_dir; }; +void OSIPhone::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot){}; + String OSIPhone::get_name() { return "iOS"; diff --git a/platform/iphone/os_iphone.h b/platform/iphone/os_iphone.h index 7e310e3a03..2e4458aeed 100644 --- a/platform/iphone/os_iphone.h +++ b/platform/iphone/os_iphone.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef IPHONE_ENABLED #ifndef OS_IPHONE_H @@ -87,7 +88,7 @@ private: virtual const char *get_video_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void set_main_loop(MainLoop *p_main_loop); virtual MainLoop *get_main_loop() const; @@ -173,6 +174,7 @@ public: virtual int get_virtual_keyboard_height() const; virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); virtual Size2 get_window_size() const; diff --git a/platform/iphone/platform_config.h b/platform/iphone/platform_config.h index 373c70d822..d205c7da83 100644 --- a/platform/iphone/platform_config.h +++ b/platform/iphone/platform_config.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <alloca.h> #define GLES3_INCLUDE_H <ES3/gl.h> diff --git a/platform/iphone/platform_refcount.h b/platform/iphone/platform_refcount.h index 90e716e4e4..94e4e5fa3b 100644 --- a/platform/iphone/platform_refcount.h +++ b/platform/iphone/platform_refcount.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "safe_refcount.h" #ifdef IPHONE_ENABLED diff --git a/platform/iphone/sem_iphone.cpp b/platform/iphone/sem_iphone.cpp index 04eb6e9332..ec1337d63f 100644 --- a/platform/iphone/sem_iphone.cpp +++ b/platform/iphone/sem_iphone.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sem_iphone.h" #include <fcntl.h> diff --git a/platform/iphone/sem_iphone.h b/platform/iphone/sem_iphone.h index 8311538419..ebd4e4ee43 100644 --- a/platform/iphone/sem_iphone.h +++ b/platform/iphone/sem_iphone.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEM_IPHONE_H #define SEM_IPHONE_H diff --git a/platform/iphone/view_controller.h b/platform/iphone/view_controller.h index cd08be3aa7..31c4f0daf3 100644 --- a/platform/iphone/view_controller.h +++ b/platform/iphone/view_controller.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #import <GameKit/GameKit.h> #import <UIKit/UIKit.h> diff --git a/platform/iphone/view_controller.mm b/platform/iphone/view_controller.mm index f6487ea6c8..cdaae0cb81 100644 --- a/platform/iphone/view_controller.mm +++ b/platform/iphone/view_controller.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #import "view_controller.h" #include "os_iphone.h" diff --git a/platform/javascript/SCsub b/platform/javascript/SCsub index 05992ebac8..66a8a8d93c 100644 --- a/platform/javascript/SCsub +++ b/platform/javascript/SCsub @@ -23,6 +23,7 @@ env.Append(LINKFLAGS=["-s", "EXPORTED_FUNCTIONS=\"['_main','_main_after_fs_sync' target_dir = env.Dir("#bin") build = env.add_program(['#bin/godot', target_dir.File('godot' + env['PROGSUFFIX'] + '.wasm')], javascript_objects, PROGSUFFIX=env['PROGSUFFIX'] + '.js'); +js, wasm = build js_libraries = [] js_libraries.append(env.File('http_request.js')) @@ -30,12 +31,10 @@ for lib in js_libraries: env.Append(LINKFLAGS=['--js-library', lib.path]) env.Depends(build, js_libraries) -prejs = env.File('pre.js') -postjs = env.File('engine.js') -env.Append(LINKFLAGS=['--pre-js', prejs.path]) -env.Append(LINKFLAGS=['--post-js', postjs.path]) -env.Depends(build, [prejs, postjs]) +wrapper_start = env.File('pre.js') +wrapper_end = env.File('engine.js') +js_final = env.Textfile('#bin/godot', [wrapper_start, js, wrapper_end], TEXTFILESUFFIX=env['PROGSUFFIX'] + '.wrapped.js') zip_dir = target_dir.Dir('.javascript_zip') -zip_files = env.InstallAs([zip_dir.File('godot.js'), zip_dir.File('godot.wasm'), zip_dir.File('godot.html')], build + ['#misc/dist/html/default.html']) +zip_files = env.InstallAs([zip_dir.File('godot.js'), zip_dir.File('godot.wasm'), zip_dir.File('godot.html')], [js_final, wasm, '#misc/dist/html/default.html']) Zip('#bin/godot', zip_files, ZIPSUFFIX=env['PROGSUFFIX'] + env['ZIPSUFFIX'], ZIPROOT=zip_dir, ZIPCOMSTR="Archving $SOURCES as $TARGET") diff --git a/platform/javascript/api/api.cpp b/platform/javascript/api/api.cpp index fe3b20b7a0..b377ca4e52 100644 --- a/platform/javascript/api/api.cpp +++ b/platform/javascript/api/api.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "api.h" #include "engine.h" #include "javascript_eval.h" diff --git a/platform/javascript/api/api.h b/platform/javascript/api/api.h index ab3e47ec31..5f22f082e9 100644 --- a/platform/javascript/api/api.h +++ b/platform/javascript/api/api.h @@ -27,5 +27,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_javascript_api(); void unregister_javascript_api(); diff --git a/platform/javascript/api/javascript_eval.h b/platform/javascript/api/javascript_eval.h index d39d97f7c5..05f7c9f38a 100644 --- a/platform/javascript/api/javascript_eval.h +++ b/platform/javascript/api/javascript_eval.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JAVASCRIPT_EVAL_H #define JAVASCRIPT_EVAL_H diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp index acf6ef87ba..5bf345e6cd 100644 --- a/platform/javascript/audio_driver_javascript.cpp +++ b/platform/javascript/audio_driver_javascript.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_javascript.h" #include <emscripten.h> diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h index d44e2c51e6..d78ab8eea4 100644 --- a/platform/javascript/audio_driver_javascript.h +++ b/platform/javascript/audio_driver_javascript.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_JAVASCRIPT_H #define AUDIO_DRIVER_JAVASCRIPT_H diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py index 8472c3ccab..74d6536343 100644 --- a/platform/javascript/detect.py +++ b/platform/javascript/detect.py @@ -28,6 +28,11 @@ def get_flags(): return [ ('tools', False), ('module_theora_enabled', False), + # Disabling the OpenSSL module noticeably reduces file size. + # The module has little use due to the limited networking functionality + # in this platform. For the available networking methods, the browser + # manages TLS. + ('module_openssl_enabled', False), ] @@ -49,8 +54,14 @@ def configure(env): ## Build type if (env["target"] == "release"): - env.Append(CCFLAGS=['-O3']) - env.Append(LINKFLAGS=['-O3']) + # Use -Os to prioritize optimizing for reduced file size. This is + # particularly valuable for the web platform because it directly + # decreases download time. + # -Os reduces file size by around 5 MiB over -O3. -Oz only saves about + # 100 KiB over -Os, which does not justify the negative impact on + # run-time performance. + env.Append(CCFLAGS=['-Os']) + env.Append(LINKFLAGS=['-Os']) elif (env["target"] == "release_debug"): env.Append(CCFLAGS=['-O2', '-DDEBUG_ENABLED']) diff --git a/platform/javascript/dom_keys.h b/platform/javascript/dom_keys.h index cfd55dfc90..4edca63c6d 100644 --- a/platform/javascript/dom_keys.h +++ b/platform/javascript/dom_keys.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DOM_KEYS_H #define DOM_KEYS_H diff --git a/platform/javascript/engine.js b/platform/javascript/engine.js index dc4bdc7efb..bca1851f40 100644 --- a/platform/javascript/engine.js +++ b/platform/javascript/engine.js @@ -138,13 +138,17 @@ } var actualCanvas = this.rtenv.canvas; - var context = false; + var testContext = false; + var testCanvas; try { - context = actualCanvas.getContext('webgl2') || actualCanvas.getContext('experimental-webgl2'); + testCanvas = document.createElement('canvas'); + testContext = testCanvas.getContext('webgl2') || testCanvas.getContext('experimental-webgl2'); } catch (e) {} - if (!context) { + if (!testContext) { throw new Error("WebGL 2 not available"); } + testCanvas = null; + testContext = null; // canvas can grab focus on click if (actualCanvas.tabIndex < 0) { diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp index 6c2b6799a6..d81aa25c32 100644 --- a/platform/javascript/export/export.cpp +++ b/platform/javascript/export/export.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor/editor_node.h" #include "editor_export.h" #include "io/zip_io.h" @@ -70,7 +71,7 @@ public: virtual void get_platform_features(List<String> *r_features) { r_features->push_back("web"); - r_features->push_back("JavaScript"); + r_features->push_back(get_os_name()); } EditorExportPlatformJavaScript(); @@ -113,9 +114,9 @@ void EditorExportPlatformJavaScript::get_preset_features(const Ref<EditorExportP void EditorExportPlatformJavaScript::get_export_options(List<ExportOption> *r_options) { - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/s3tc"), false)); - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc"), true)); - r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/s3tc"), true)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc"), false)); + r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), true)); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "html/custom_html_shell", PROPERTY_HINT_GLOBAL_FILE, "html"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "html/head_include", PROPERTY_HINT_MULTILINE_TEXT), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, "zip"), "")); @@ -129,7 +130,7 @@ String EditorExportPlatformJavaScript::get_name() const { String EditorExportPlatformJavaScript::get_os_name() const { - return "JavaScript"; + return "HTML5"; } Ref<Texture> EditorExportPlatformJavaScript::get_logo() const { @@ -174,14 +175,14 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese } if (template_path != String() && !FileAccess::exists(template_path)) { - EditorNode::get_singleton()->show_warning(TTR("Template file not found:\n") + template_path); + EditorNode::get_singleton()->show_warning(TTR("Template file not found:") + "\n" + template_path); return ERR_FILE_NOT_FOUND; } String pck_path = p_path.get_basename() + ".pck"; Error error = save_pack(p_preset, pck_path); if (error != OK) { - EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + pck_path); + EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + pck_path); return error; } @@ -191,12 +192,12 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese if (!pkg) { - EditorNode::get_singleton()->show_warning(TTR("Could not open template for export:\n") + template_path); + EditorNode::get_singleton()->show_warning(TTR("Could not open template for export:") + "\n" + template_path); return ERR_FILE_NOT_FOUND; } if (unzGoToFirstFile(pkg) != UNZ_OK) { - EditorNode::get_singleton()->show_warning(TTR("Invalid export template:\n") + template_path); + EditorNode::get_singleton()->show_warning(TTR("Invalid export template:") + "\n" + template_path); unzClose(pkg); return ERR_FILE_CORRUPT; } @@ -238,7 +239,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese String dst = p_path.get_base_dir().plus_file(file); FileAccess *f = FileAccess::open(dst, FileAccess::WRITE); if (!f) { - EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + dst); + EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + dst); unzClose(pkg); return ERR_FILE_CANT_WRITE; } @@ -252,7 +253,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese FileAccess *f = FileAccess::open(custom_html, FileAccess::READ); if (!f) { - EditorNode::get_singleton()->show_warning(TTR("Could not read custom HTML shell:\n") + custom_html); + EditorNode::get_singleton()->show_warning(TTR("Could not read custom HTML shell:") + "\n" + custom_html); return ERR_FILE_CANT_READ; } Vector<uint8_t> buf; @@ -263,7 +264,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese f = FileAccess::open(p_path, FileAccess::WRITE); if (!f) { - EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + p_path); + EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + p_path); return ERR_FILE_CANT_WRITE; } f->store_buffer(buf.ptr(), buf.size()); @@ -277,7 +278,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese splash.instance(); Error err = splash->load(splash_path); if (err) { - EditorNode::get_singleton()->show_warning(TTR("Could not read boot splash image file:\n") + splash_path + "\nUsing default boot splash image"); + EditorNode::get_singleton()->show_warning(TTR("Could not read boot splash image file:") + "\n" + splash_path + "\n" + TTR("Using default boot splash image.")); splash.unref(); } } @@ -286,7 +287,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese } String png_path = p_path.get_base_dir().plus_file(p_path.get_file().get_basename() + ".png"); if (splash->save_png(png_path) != OK) { - EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + png_path); + EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + png_path); return ERR_FILE_CANT_WRITE; } return OK; diff --git a/platform/javascript/export/export.h b/platform/javascript/export/export.h index 756c3ef9fa..2835d0723f 100644 --- a/platform/javascript/export/export.h +++ b/platform/javascript/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_javascript_exporter(); diff --git a/platform/javascript/http_client_javascript.cpp b/platform/javascript/http_client_javascript.cpp index f23867cc60..1cd2719723 100644 --- a/platform/javascript/http_client_javascript.cpp +++ b/platform/javascript/http_client_javascript.cpp @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "http_request.h" #include "io/http_client.h" diff --git a/platform/javascript/http_request.h b/platform/javascript/http_request.h index 2ca48bfd00..b5ff46d7fe 100644 --- a/platform/javascript/http_request.h +++ b/platform/javascript/http_request.h @@ -3,7 +3,7 @@ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ -/* http://www.godotengine.org */ +/* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HTTP_REQUEST_H #define HTTP_REQUEST_H diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp index 9abea29a93..2ef88345f6 100644 --- a/platform/javascript/javascript_eval.cpp +++ b/platform/javascript/javascript_eval.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef JAVASCRIPT_EVAL_ENABLED #include "api/javascript_eval.h" diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp index 973f8f500c..e85fe0800f 100644 --- a/platform/javascript/javascript_main.cpp +++ b/platform/javascript/javascript_main.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "emscripten.h" #include "io/resource_loader.h" #include "main/main.h" @@ -64,7 +65,7 @@ int main(int argc, char *argv[]) { FS.mkdir('/userfs'); FS.mount(IDBFS, {}, '/userfs'); FS.syncfs(true, function(err) { - Module['ccall']('main_after_fs_sync', null, ['string'], [err ? err.message : ""]) + ccall('main_after_fs_sync', null, ['string'], [err ? err.message : ""]) }); ); /* clang-format on */ diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 0bdd090ba9..e226ab6332 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_javascript.h" #include "core/engine.h" @@ -80,12 +81,6 @@ void OS_JavaScript::initialize_core() { FileAccess::make_default<FileAccessBufferedFA<FileAccessUnix> >(FileAccess::ACCESS_RESOURCES); } -void OS_JavaScript::set_opengl_extensions(const char *p_gl_extensions) { - - ERR_FAIL_COND(!p_gl_extensions); - gl_extensions = p_gl_extensions; -} - static EM_BOOL _browser_resize_callback(int event_type, const EmscriptenUiEvent *ui_event, void *user_data) { ERR_FAIL_COND_V(event_type != EMSCRIPTEN_EVENT_RESIZE, false); @@ -419,7 +414,7 @@ void send_notification(int notif) { } } -void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { print_line("Init OS"); @@ -429,22 +424,17 @@ void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, i attributes.antialias = false; attributes.majorVersion = 2; EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_create_context(NULL, &attributes); - ERR_FAIL_COND(emscripten_webgl_make_context_current(ctx) != EMSCRIPTEN_RESULT_SUCCESS); + ERR_FAIL_COND_V(emscripten_webgl_make_context_current(ctx) != EMSCRIPTEN_RESULT_SUCCESS, ERR_UNAVAILABLE); video_mode = p_desired; // can't fulfil fullscreen request due to browser security video_mode.fullscreen = false; /* clang-format off */ - bool resize_canvas_on_start = EM_ASM_INT_V( - return Module.resizeCanvasOnStart; - ); - /* clang-format on */ - if (resize_canvas_on_start) { + if (EM_ASM_INT_V({ return Module.resizeCanvasOnStart })) { + /* clang-format on */ set_window_size(Size2(video_mode.width, video_mode.height)); } else { - Size2 canvas_size = get_window_size(); - video_mode.width = canvas_size.width; - video_mode.height = canvas_size.height; + set_window_size(get_window_size()); } char locale_ptr[16]; @@ -507,6 +497,8 @@ void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, i #undef EM_CHECK visual_server->init(); + + return OK; } void OS_JavaScript::set_main_loop(MainLoop *p_main_loop) { @@ -563,7 +555,7 @@ void OS_JavaScript::set_css_cursor(const char *p_cursor) { /* clang-format off */ EM_ASM_({ - Module.canvas.style.cursor = Module.UTF8ToString($0); + Module.canvas.style.cursor = UTF8ToString($0); }, p_cursor); /* clang-format on */ } @@ -573,7 +565,7 @@ const char *OS_JavaScript::get_css_cursor() const { char cursor[16]; /* clang-format off */ EM_ASM_INT({ - Module.stringToUTF8(Module.canvas.style.cursor ? Module.canvas.style.cursor : 'auto', $0, 16); + stringToUTF8(Module.canvas.style.cursor ? Module.canvas.style.cursor : 'auto', $0, 16); }, cursor); /* clang-format on */ return cursor; @@ -779,6 +771,9 @@ void OS_JavaScript::set_cursor_shape(CursorShape p_shape) { set_css_cursor(godot2dom_cursor(cursor_shape)); } +void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { +} + void OS_JavaScript::main_loop_begin() { if (main_loop) @@ -786,7 +781,7 @@ void OS_JavaScript::main_loop_begin() { /* clang-format off */ EM_ASM_ARGS({ - const send_notification = Module.cwrap('send_notification', null, ['number']); + const send_notification = cwrap('send_notification', null, ['number']); const notifs = arguments; (['mouseover', 'mouseleave', 'focus', 'blur']).forEach(function(event, i) { Module.canvas.addEventListener(event, send_notification.bind(null, notifs[i])); @@ -969,7 +964,25 @@ int OS_JavaScript::get_power_percent_left() { bool OS_JavaScript::_check_internal_feature_support(const String &p_feature) { - return p_feature == "web" || p_feature == "s3tc"; // TODO check for these features really being available + if (p_feature == "HTML5" || p_feature == "web") + return true; + +#ifdef JAVASCRIPT_EVAL_ENABLED + if (p_feature == "JavaScript") + return true; +#endif + + EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context(); + // all extensions are already automatically enabled, this function allows + // checking WebGL extension support without inline JavaScript + if (p_feature == "s3tc" && emscripten_webgl_enable_extension(ctx, "WEBGL_compressed_texture_s3tc_srgb")) + return true; + if (p_feature == "etc" && emscripten_webgl_enable_extension(ctx, "WEBGL_compressed_texture_etc1")) + return true; + if (p_feature == "etc2" && emscripten_webgl_enable_extension(ctx, "WEBGL_compressed_texture_etc")) + return true; + + return false; } void OS_JavaScript::set_idbfs_available(bool p_idbfs_available) { @@ -983,9 +996,9 @@ bool OS_JavaScript::is_userfs_persistent() const { } OS_JavaScript::OS_JavaScript(const char *p_execpath, GetUserDataDirFunc p_get_user_data_dir_func) { + set_cmdline(p_execpath, get_cmdline_args()); main_loop = NULL; - gl_extensions = NULL; window_maximized = false; soft_fs_enabled = false; canvas_size_adjustment_requested = false; @@ -995,6 +1008,10 @@ OS_JavaScript::OS_JavaScript(const char *p_execpath, GetUserDataDirFunc p_get_us idbfs_available = false; time_to_save_sync = -1; + + Vector<Logger *> loggers; + loggers.push_back(memnew(StdLogger)); + _set_logger(memnew(CompositeLogger(loggers))); } OS_JavaScript::~OS_JavaScript() { diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h index 8acaac9ef3..f0ba9422e8 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_JAVASCRIPT_H #define OS_JAVASCRIPT_H @@ -51,7 +52,6 @@ class OS_JavaScript : public OS_Unix { VisualServer *visual_server; AudioDriverJavaScript audio_driver_javascript; - const char *gl_extensions; InputDefault *input; Vector2 windowed_size; @@ -82,7 +82,7 @@ public: virtual const char *get_audio_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void set_main_loop(MainLoop *p_main_loop); virtual void delete_main_loop(); @@ -127,6 +127,7 @@ public: virtual bool is_userfs_persistent() const; virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); void main_loop_begin(); bool main_loop_iterate(); @@ -137,8 +138,6 @@ public: virtual bool has_touchscreen_ui_hint() const; - void set_opengl_extensions(const char *p_gl_extensions); - virtual Error shell_open(String p_uri); virtual String get_user_data_dir() const; String get_executable_path() const; diff --git a/platform/javascript/platform_config.h b/platform/javascript/platform_config.h index 413fea20d8..af4cf07393 100644 --- a/platform/javascript/platform_config.h +++ b/platform/javascript/platform_config.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <alloca.h> diff --git a/platform/osx/SCsub b/platform/osx/SCsub index 029e3d808c..5efe2d0b22 100644 --- a/platform/osx/SCsub +++ b/platform/osx/SCsub @@ -10,6 +10,7 @@ def make_debug(target, source, env): os.system(mpprefix + '/libexec/llvm-' + mpclangver + '/bin/llvm-dsymutil %s -o %s.dSYM' % (target[0], target[0])) else: os.system('dsymutil %s -o %s.dSYM' % (target[0], target[0])) + os.system('strip -u -r %s' % (target[0])) files = [ 'crash_handler_osx.mm', @@ -23,6 +24,6 @@ files = [ prog = env.add_program('#bin/godot', files) -if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes": +if (env["debug_symbols"] == "full" or env["debug_symbols"] == "yes") and env["separate_debug_symbols"]: env.AddPostAction(prog, make_debug) diff --git a/platform/osx/crash_handler_osx.h b/platform/osx/crash_handler_osx.h index 51e0a3ffcb..5d93afb22d 100644 --- a/platform/osx/crash_handler_osx.h +++ b/platform/osx/crash_handler_osx.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CRASH_HANDLER_OSX_H #define CRASH_HANDLER_OSX_H diff --git a/platform/osx/crash_handler_osx.mm b/platform/osx/crash_handler_osx.mm index c4b5204e1a..d757674a9b 100644 --- a/platform/osx/crash_handler_osx.mm +++ b/platform/osx/crash_handler_osx.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_osx.h" #include "project_settings.h" diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 2e686fbee4..5f33100e42 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -19,11 +19,12 @@ def can_build(): def get_opts(): - from SCons.Variables import EnumVariable + from SCons.Variables import BoolVariable, EnumVariable return [ ('osxcross_sdk', 'OSXCross SDK version', 'darwin14'), EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')), + BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False), ] @@ -76,7 +77,7 @@ def configure(env): mpprefix = os.environ.get("MACPORTS_PREFIX", "/opt/local") mpclangver = env["macports_clang"] env["CC"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang" - env["LD"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++" + env["LINK"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++" env["CXX"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++" env['AR'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ar" env['RANLIB'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ranlib" @@ -110,7 +111,7 @@ def configure(env): if (env["CXX"] == "clang++"): env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env["CC"] = "clang" - env["LD"] = "clang++" + env["LINK"] = "clang++" ## Dependencies diff --git a/platform/osx/dir_access_osx.h b/platform/osx/dir_access_osx.h index eec3016eaa..e01ff2fe4d 100644 --- a/platform/osx/dir_access_osx.h +++ b/platform/osx/dir_access_osx.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIR_ACCESS_OSX_H #define DIR_ACCESS_OSX_H diff --git a/platform/osx/dir_access_osx.mm b/platform/osx/dir_access_osx.mm index a187083dd1..cf66cab060 100644 --- a/platform/osx/dir_access_osx.mm +++ b/platform/osx/dir_access_osx.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dir_access_osx.h" #if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED) diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 657a899367..c4efa1f0ff 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -359,6 +359,11 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p } if (err == OK) { + print_line("Creating " + tmp_app_path_name + "/Contents/Frameworks"); + err = tmp_app_path->make_dir_recursive(tmp_app_path_name + "/Contents/Frameworks"); + } + + if (err == OK) { print_line("Creating " + tmp_app_path_name + "/Contents/Resources"); err = tmp_app_path->make_dir_recursive(tmp_app_path_name + "/Contents/Resources"); } @@ -502,10 +507,23 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p if (use_dmg()) { String pack_path = tmp_app_path_name + "/Contents/Resources/" + pkg_name + ".pck"; - err = save_pack(p_preset, pack_path); + Vector<SharedObject> shared_objects; + Error err = save_pack(p_preset, pack_path, &shared_objects); // see if we can code sign our new package String identity = p_preset->get("codesign/identity"); + + if (err == OK) { + DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + for (int i = 0; i < shared_objects.size(); i++) { + da->copy(shared_objects[i].path, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file()); + if (err == OK && identity != "") { + err = _code_sign(p_preset, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file()); + } + } + memdelete(da); + } + if (err == OK && identity != "") { ep.step("Code signing bundle", 2); @@ -541,7 +559,9 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p } else { String pack_path = EditorSettings::get_singleton()->get_cache_dir().plus_file(pkg_name + ".pck"); - Error err = save_pack(p_preset, pack_path); + + Vector<SharedObject> shared_objects; + Error err = save_pack(p_preset, pack_path, &shared_objects); if (err == OK) { zipOpenNewFileInZip(dst_pkg_zip, @@ -567,11 +587,32 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p break; zipWriteInFileInZip(dst_pkg_zip, buf, r); } + zipCloseFileInZip(dst_pkg_zip); memdelete(pf); } else { err = ERR_CANT_OPEN; } + + //add shared objects + for (int i = 0; i < shared_objects.size(); i++) { + Vector<uint8_t> file = FileAccess::get_file_as_array(shared_objects[i].path); + ERR_CONTINUE(file.empty()); + + zipOpenNewFileInZip(dst_pkg_zip, + (pkg_name + ".app/Contents/Frameworks/").plus_file(shared_objects[i].path.get_file()).utf8().get_data(), + NULL, + NULL, + 0, + NULL, + 0, + NULL, + Z_DEFLATED, + Z_DEFAULT_COMPRESSION); + + zipWriteInFileInZip(dst_pkg_zip, file.ptr(), file.size()); + zipCloseFileInZip(dst_pkg_zip); + } } } } diff --git a/platform/osx/export/export.h b/platform/osx/export/export.h index ccb96022f9..08294fc33c 100644 --- a/platform/osx/export/export.h +++ b/platform/osx/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_osx_exporter(); diff --git a/platform/osx/godot_main_osx.mm b/platform/osx/godot_main_osx.mm index 156b4c02f2..6ccbaf896b 100644 --- a/platform/osx/godot_main_osx.mm +++ b/platform/osx/godot_main_osx.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_osx.h" @@ -81,8 +82,17 @@ int main(int argc, char **argv) { #endif OS_OSX os; + Error err; + + if (os.open_with_filename != "") { + char *argv_c = (char *)malloc(os.open_with_filename.utf8().size()); + memcpy(argv_c, os.open_with_filename.utf8().get_data(), os.open_with_filename.utf8().size()); + err = Main::setup(argv[0], 1, &argv_c); + free(argv_c); + } else { + err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]); + } - Error err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]); if (err != OK) return 255; diff --git a/platform/osx/joypad_osx.cpp b/platform/osx/joypad_osx.cpp index bc65aa8149..20ceadca9d 100644 --- a/platform/osx/joypad_osx.cpp +++ b/platform/osx/joypad_osx.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "joypad_osx.h" #include <machine/endian.h> diff --git a/platform/osx/joypad_osx.h b/platform/osx/joypad_osx.h index 78ee4581d5..addbefc5ad 100644 --- a/platform/osx/joypad_osx.h +++ b/platform/osx/joypad_osx.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JOYPADOSX_H #define JOYPADOSX_H diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index a24bf6c0bc..d9ad0a7db8 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_OSX_H #define OS_OSX_H @@ -41,6 +42,7 @@ #include "servers/visual/rasterizer.h" #include "servers/visual/visual_server_wrap_mt.h" #include "servers/visual_server.h" +#include <AppKit/NSCursor.h> #include <ApplicationServices/ApplicationServices.h> #undef CursorShape @@ -50,6 +52,17 @@ class OS_OSX : public OS_Unix { public: + struct KeyEvent { + unsigned int osx_state; + bool pressed; + bool echo; + uint32_t scancode; + uint32_t unicode; + }; + + Vector<KeyEvent> key_event_buffer; + int key_event_pos; + bool force_quit; // rasterizer seems to no longer be given to visual server, its using GLES3 directly? //Rasterizer *rasterizer; @@ -70,6 +83,7 @@ public: CGEventSourceRef eventSource; void process_events(); + void process_key_events(); void *framework; // pthread_key_t current; @@ -86,6 +100,7 @@ public: id context; CursorShape cursor_shape; + NSCursor *cursors[CURSOR_MAX] = { NULL }; MouseMode mouse_mode; String title; @@ -96,6 +111,8 @@ public: Size2 window_size; Rect2 restore_rect; + String open_with_filename; + Point2 im_position; ImeCallback im_callback; void *im_target; @@ -121,7 +138,7 @@ protected: virtual const char *get_video_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void finalize(); virtual void set_main_loop(MainLoop *p_main_loop); @@ -136,7 +153,10 @@ public: virtual void alert(const String &p_alert, const String &p_title = "ALERT!"); + virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false); + virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); virtual void set_mouse_show(bool p_show); virtual void set_mouse_grab(bool p_grab); diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 0cd02663da..ab54f62045 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_osx.h" #include "dir_access_osx.h" @@ -38,6 +39,8 @@ #include "servers/visual/visual_server_raster.h" #include "version_generated.gen.h" +#include <mach-o/dyld.h> + #include <Carbon/Carbon.h> #import <Cocoa/Cocoa.h> #include <IOKit/IOCFPlugIn.h> @@ -48,6 +51,7 @@ #include <os/log.h> #endif +#include <dlfcn.h> #include <fcntl.h> #include <libproc.h> #include <stdio.h> @@ -57,25 +61,40 @@ #include <unistd.h> #if MAC_OS_X_VERSION_MAX_ALLOWED < 101200 +#define NSEventMaskAny NSAnyEventMask +#define NSEventTypeKeyDown NSKeyDown +#define NSEventTypeKeyUp NSKeyUp +#define NSEventModifierFlagShift NSShiftKeyMask +#define NSEventModifierFlagCommand NSCommandKeyMask +#define NSEventModifierFlagControl NSControlKeyMask +#define NSEventModifierFlagOption NSAlternateKeyMask +#define NSWindowStyleMaskTitled NSTitledWindowMask +#define NSWindowStyleMaskResizable NSResizableWindowMask +#define NSWindowStyleMaskMiniaturizable NSMiniaturizableWindowMask +#define NSWindowStyleMaskClosable NSClosableWindowMask #define NSWindowStyleMaskBorderless NSBorderlessWindowMask #endif static NSRect convertRectToBacking(NSRect contentRect) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 - if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) - return [OS_OSX::singleton->window_view convertRectToBacking:contentRect]; - else -#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/ - return contentRect; + return [OS_OSX::singleton->window_view convertRectToBacking:contentRect]; } static void get_key_modifier_state(unsigned int p_osx_state, Ref<InputEventWithModifiers> state) { - state->set_shift((p_osx_state & NSShiftKeyMask)); - state->set_control((p_osx_state & NSControlKeyMask)); - state->set_alt((p_osx_state & NSAlternateKeyMask)); - state->set_metakey((p_osx_state & NSCommandKeyMask)); + state->set_shift((p_osx_state & NSEventModifierFlagShift)); + state->set_control((p_osx_state & NSEventModifierFlagControl)); + state->set_alt((p_osx_state & NSEventModifierFlagOption)); + state->set_metakey((p_osx_state & NSEventModifierFlagCommand)); +} + +static void push_to_key_event_buffer(const OS_OSX::KeyEvent &p_event) { + + Vector<OS_OSX::KeyEvent> &buffer = OS_OSX::singleton->key_event_buffer; + if (OS_OSX::singleton->key_event_pos >= buffer.size()) { + buffer.resize(1 + OS_OSX::singleton->key_event_pos); + } + buffer[OS_OSX::singleton->key_event_pos++] = p_event; } static int mouse_x = 0; @@ -99,11 +118,29 @@ static Vector2 get_mouse_pos(NSEvent *event) { @implementation GodotApplication -// From http://cocoadev.com/index.pl?GameKeyboardHandlingAlmost -// This works around an AppKit bug, where key up events while holding -// down the command key don't get sent to the key window. - (void)sendEvent:(NSEvent *)event { - if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask)) + + // special case handling of command-period, which is traditionally a special + // shortcut in macOS and doesn't arrive at our regular keyDown handler. + if ([event type] == NSEventTypeKeyDown) { + if (([event modifierFlags] & NSEventModifierFlagCommand) && [event keyCode] == 0x2f) { + + Ref<InputEventKey> k; + k.instance(); + + get_key_modifier_state([event modifierFlags], k); + k->set_pressed(true); + k->set_scancode(KEY_PERIOD); + k->set_echo([event isARepeat]); + + OS_OSX::singleton->push_input(k); + } + } + + // From http://cocoadev.com/index.pl?GameKeyboardHandlingAlmost + // This works around an AppKit bug, where key up events while holding + // down the command key don't get sent to the key window. + if ([event type] == NSEventTypeKeyUp && ([event modifierFlags] & NSEventModifierFlagCommand)) [[self keyWindow] sendEvent:event]; else [super sendEvent:event]; @@ -116,6 +153,13 @@ static Vector2 get_mouse_pos(NSEvent *event) { @implementation GodotApplicationDelegate +- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename { + // Note: called before main loop init! + char *utfs = strdup([filename UTF8String]); + OS_OSX::singleton->open_with_filename.parse_utf8(utfs); + return YES; +} + - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { if (OS_OSX::singleton->get_main_loop()) OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST); @@ -169,7 +213,6 @@ static Vector2 get_mouse_pos(NSEvent *event) { return NO; } -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 - (void)windowDidEnterFullScreen:(NSNotification *)notification { OS_OSX::singleton->zoomed = true; } @@ -177,7 +220,6 @@ static Vector2 get_mouse_pos(NSEvent *event) { - (void)windowDidExitFullScreen:(NSNotification *)notification { OS_OSX::singleton->zoomed = false; } -#endif // MAC_OS_X_VERSION_MAX_ALLOWED - (void)windowDidChangeBackingProperties:(NSNotification *)notification { if (!OS_OSX::singleton) @@ -371,8 +413,8 @@ static const NSRange kEmptyRange = { NSNotFound, 0 }; - (void)cancelComposition { [self unmarkText]; - NSInputManager *currentInputManager = [NSInputManager currentInputManager]; - [currentInputManager markedTextAbandoned:self]; + NSTextInputContext *currentInputContext = [NSTextInputContext currentInputContext]; + [currentInputContext discardMarkedText]; } - (void)insertText:(id)aString { @@ -381,13 +423,6 @@ static const NSRange kEmptyRange = { NSNotFound, 0 }; - (void)insertText:(id)aString replacementRange:(NSRange)replacementRange { NSEvent *event = [NSApp currentEvent]; - Ref<InputEventKey> k; - k.instance(); - - get_key_modifier_state([event modifierFlags], k); - k->set_pressed(true); - k->set_echo(false); - k->set_scancode(0); NSString *characters; if ([aString isKindOfClass:[NSAttributedString class]]) { @@ -401,8 +436,8 @@ static const NSRange kEmptyRange = { NSNotFound, 0 }; NSCharacterSet *ctrlChars = [NSCharacterSet controlCharacterSet]; NSCharacterSet *wsnlChars = [NSCharacterSet whitespaceAndNewlineCharacterSet]; if ([characters rangeOfCharacterFromSet:ctrlChars].length && [characters rangeOfCharacterFromSet:wsnlChars].length == 0) { - NSInputManager *currentInputManager = [NSInputManager currentInputManager]; - [currentInputManager markedTextAbandoned:self]; + NSTextInputContext *currentInputContext = [NSTextInputContext currentInputContext]; + [currentInputContext discardMarkedText]; [self cancelComposition]; return; } @@ -412,8 +447,15 @@ static const NSRange kEmptyRange = { NSNotFound, 0 }; if ((codepoint & 0xFF00) == 0xF700) continue; - k->set_unicode(codepoint); - OS_OSX::singleton->push_input(k); + OS_OSX::KeyEvent ke; + + ke.osx_state = [event modifierFlags]; + ke.pressed = true; + ke.echo = false; + ke.scancode = 0; + ke.unicode = codepoint; + + push_to_key_event_buffer(ke); } [self cancelComposition]; } @@ -488,7 +530,7 @@ static void _mouseDownEvent(NSEvent *event, int index, int mask, bool pressed) { } - (void)mouseDown:(NSEvent *)event { - if (([event modifierFlags] & NSControlKeyMask)) { + if (([event modifierFlags] & NSEventModifierFlagControl)) { mouse_down_control = true; _mouseDownEvent(event, BUTTON_RIGHT, BUTTON_MASK_RIGHT, true); } else { @@ -577,8 +619,11 @@ static void _mouseDownEvent(NSEvent *event, int index, int mask, bool pressed) { return; if (OS_OSX::singleton->main_loop && OS_OSX::singleton->mouse_mode != OS::MOUSE_MODE_CAPTURED) OS_OSX::singleton->main_loop->notification(MainLoop::NOTIFICATION_WM_MOUSE_ENTER); - if (OS_OSX::singleton->input) + if (OS_OSX::singleton->input) { OS_OSX::singleton->input->set_mouse_in_window(true); + OS_OSX::singleton->cursor_shape = OS::CURSOR_MAX; + OS_OSX::singleton->set_cursor_shape(OS::CURSOR_ARROW); + } } - (void)magnifyWithEvent:(NSEvent *)event { @@ -759,80 +804,87 @@ static int translateKey(unsigned int key) { - (void)keyDown:(NSEvent *)event { - Ref<InputEventKey> k; - k.instance(); - - get_key_modifier_state([event modifierFlags], k); - k->set_pressed(true); - k->set_scancode(latin_keyboard_keycode_convert(translateKey([event keyCode]))); - k->set_echo([event isARepeat]); + //disable raw input in IME mode + if (!imeMode) { + OS_OSX::KeyEvent ke; - NSString *characters = [event characters]; - NSUInteger i, length = [characters length]; + ke.osx_state = [event modifierFlags]; + ke.pressed = true; + ke.echo = [event isARepeat]; + ke.scancode = latin_keyboard_keycode_convert(translateKey([event keyCode])); + ke.unicode = 0; - //disable raw input in IME mode - if (!imeMode) - OS_OSX::singleton->push_input(k); + push_to_key_event_buffer(ke); + } if ((OS_OSX::singleton->im_position.x != 0) && (OS_OSX::singleton->im_position.y != 0)) [self interpretKeyEvents:[NSArray arrayWithObject:event]]; } - (void)flagsChanged:(NSEvent *)event { - Ref<InputEventKey> k; - k.instance(); - int key = [event keyCode]; - int mod = [event modifierFlags]; + if (!imeMode) { + OS_OSX::KeyEvent ke; - if (key == 0x36 || key == 0x37) { - if (mod & NSCommandKeyMask) { - mod &= ~NSCommandKeyMask; - k->set_pressed(true); - } else { - k->set_pressed(false); - } - } else if (key == 0x38 || key == 0x3c) { - if (mod & NSShiftKeyMask) { - mod &= ~NSShiftKeyMask; - k->set_pressed(true); - } else { - k->set_pressed(false); - } - } else if (key == 0x3a || key == 0x3d) { - if (mod & NSAlternateKeyMask) { - mod &= ~NSAlternateKeyMask; - k->set_pressed(true); - } else { - k->set_pressed(false); - } - } else if (key == 0x3b || key == 0x3e) { - if (mod & NSControlKeyMask) { - mod &= ~NSControlKeyMask; - k->set_pressed(true); + ke.echo = false; + + int key = [event keyCode]; + int mod = [event modifierFlags]; + + if (key == 0x36 || key == 0x37) { + if (mod & NSEventModifierFlagCommand) { + mod &= ~NSEventModifierFlagCommand; + ke.pressed = true; + } else { + ke.pressed = false; + } + } else if (key == 0x38 || key == 0x3c) { + if (mod & NSEventModifierFlagShift) { + mod &= ~NSEventModifierFlagShift; + ke.pressed = true; + } else { + ke.pressed = false; + } + } else if (key == 0x3a || key == 0x3d) { + if (mod & NSEventModifierFlagOption) { + mod &= ~NSEventModifierFlagOption; + ke.pressed = true; + } else { + ke.pressed = false; + } + } else if (key == 0x3b || key == 0x3e) { + if (mod & NSEventModifierFlagControl) { + mod &= ~NSEventModifierFlagControl; + ke.pressed = true; + } else { + ke.pressed = false; + } } else { - k->set_pressed(false); + return; } - } else { - return; - } - get_key_modifier_state(mod, k); - k->set_scancode(latin_keyboard_keycode_convert(translateKey(key))); + ke.osx_state = mod; + ke.scancode = latin_keyboard_keycode_convert(translateKey(key)); + ke.unicode = 0; - OS_OSX::singleton->push_input(k); + push_to_key_event_buffer(ke); + } } - (void)keyUp:(NSEvent *)event { - Ref<InputEventKey> k; - k.instance(); + if (!imeMode) { + + OS_OSX::KeyEvent ke; - get_key_modifier_state([event modifierFlags], k); - k->set_pressed(false); - k->set_scancode(latin_keyboard_keycode_convert(translateKey([event keyCode]))); + ke.osx_state = [event modifierFlags]; + ke.pressed = false; + ke.echo = false; + ke.scancode = latin_keyboard_keycode_convert(translateKey([event keyCode])); + ke.unicode = 0; - OS_OSX::singleton->push_input(k); + push_to_key_event_buffer(ke); + } } inline void sendScrollEvent(int button, double factor, int modifierFlags) { @@ -868,20 +920,12 @@ inline void sendPanEvent(double dx, double dy, int modifierFlags) { - (void)scrollWheel:(NSEvent *)event { double deltaX, deltaY; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 - if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) { - deltaX = [event scrollingDeltaX]; - deltaY = [event scrollingDeltaY]; + deltaX = [event scrollingDeltaX]; + deltaY = [event scrollingDeltaY]; - if ([event hasPreciseScrollingDeltas]) { - deltaX *= 0.03; - deltaY *= 0.03; - } - } else -#endif // MAC_OS_X_VERSION_MAX_ALLOWED - { - deltaX = [event deltaX]; - deltaY = [event deltaY]; + if ([event hasPreciseScrollingDeltas]) { + deltaX *= 0.03; + deltaY *= 0.03; } if ([event phase] != NSEventPhaseNone || [event momentumPhase] != NSEventPhaseNone) { @@ -955,7 +999,7 @@ static void displays_arrangement_changed(CGDirectDisplayID display_id, CGDisplay displays_arrangement_dirty = true; } -void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { /*** OSX INITIALIZATION ***/ /*** OSX INITIALIZATION ***/ @@ -983,7 +1027,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au if (p_desired.borderless_window) { styleMask = NSWindowStyleMaskBorderless; } else { - styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | (p_desired.resizable ? NSResizableWindowMask : 0); + styleMask = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | (p_desired.resizable ? NSWindowStyleMaskResizable : 0); } window_object = [[GodotWindow alloc] @@ -992,7 +1036,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au backing:NSBackingStoreBuffered defer:NO]; - ERR_FAIL_COND(window_object == nil); + ERR_FAIL_COND_V(window_object == nil, ERR_UNAVAILABLE); window_view = [[GodotContentView alloc] init]; @@ -1008,7 +1052,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au window_size.width = p_desired.width * displayScale; window_size.height = p_desired.height * displayScale; - if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6 && displayScale > 1.0) { + if (displayScale > 1.0) { [window_view setWantsBestResolutionOpenGLSurface:YES]; //if (current_videomode.resizable) [window_object setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; @@ -1020,8 +1064,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au [window_object setAcceptsMouseMovedEvents:YES]; [window_object center]; - if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) - [window_object setRestorable:NO]; + [window_object setRestorable:NO]; unsigned int attributeCount = 0; @@ -1079,11 +1122,11 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au #undef ADD_ATTR2 pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]; - ERR_FAIL_COND(pixelFormat == nil); + ERR_FAIL_COND_V(pixelFormat == nil, ERR_UNAVAILABLE); context = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil]; - ERR_FAIL_COND(context == nil); + ERR_FAIL_COND_V(context == nil, ERR_UNAVAILABLE); [context setView:window_view]; @@ -1127,6 +1170,8 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au _ensure_user_data_dir(); restore_rect = Rect2(get_window_position(), get_window_size()); + + return OK; } void OS_OSX::finalize() { @@ -1179,34 +1224,42 @@ public: switch (p_type) { case ERR_WARNING: - os_log_info(OS_LOG_DEFAULT, - "WARNING: %{public}s: %{public}s\nAt: %{public}s:%i.", - p_function, err_details, p_file, p_line); + if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) { + os_log_info(OS_LOG_DEFAULT, + "WARNING: %{public}s: %{public}s\nAt: %{public}s:%i.", + p_function, err_details, p_file, p_line); + } 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); break; case ERR_SCRIPT: - os_log_error(OS_LOG_DEFAULT, - "SCRIPT ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.", - p_function, err_details, p_file, p_line); + if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) { + os_log_error(OS_LOG_DEFAULT, + "SCRIPT ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.", + p_function, err_details, p_file, p_line); + } 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); break; case ERR_SHADER: - os_log_error(OS_LOG_DEFAULT, - "SHADER ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.", - p_function, err_details, p_file, p_line); + if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) { + os_log_error(OS_LOG_DEFAULT, + "SHADER ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.", + p_function, err_details, p_file, p_line); + } 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); break; case ERR_ERROR: default: - os_log_error(OS_LOG_DEFAULT, - "ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.", - p_function, err_details, p_file, p_line); + if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) { + os_log_error(OS_LOG_DEFAULT, + "ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.", + p_function, err_details, p_file, p_line); + } 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); break; @@ -1235,35 +1288,111 @@ void OS_OSX::alert(const String &p_alert, const String &p_title) { [window release]; } +Error OS_OSX::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) { + + String path = p_path; + + if (!FileAccess::exists(path)) { + //this code exists so gdnative can load .dylib files from within the executable path + path = get_executable_path().get_base_dir().plus_file(p_path.get_file()); + } + + if (!FileAccess::exists(path)) { + //this code exists so gdnative can load .dylib files from a standard macOS location + path = get_executable_path().get_base_dir().plus_file("../Frameworks").plus_file(p_path.get_file()); + } + + p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW); + if (!p_library_handle) { + ERR_EXPLAIN("Can't open dynamic library: " + p_path + ". Error: " + dlerror()); + ERR_FAIL_V(ERR_CANT_OPEN); + } + return OK; +} + void OS_OSX::set_cursor_shape(CursorShape p_shape) { if (cursor_shape == p_shape) return; - switch (p_shape) { - case CURSOR_ARROW: [[NSCursor arrowCursor] set]; break; - case CURSOR_IBEAM: [[NSCursor IBeamCursor] set]; break; - case CURSOR_POINTING_HAND: [[NSCursor pointingHandCursor] set]; break; - case CURSOR_CROSS: [[NSCursor crosshairCursor] set]; break; - case CURSOR_WAIT: [[NSCursor arrowCursor] set]; break; - case CURSOR_BUSY: [[NSCursor arrowCursor] set]; break; - case CURSOR_DRAG: [[NSCursor closedHandCursor] set]; break; - case CURSOR_CAN_DROP: [[NSCursor openHandCursor] set]; break; - case CURSOR_FORBIDDEN: [[NSCursor arrowCursor] set]; break; - case CURSOR_VSIZE: [[NSCursor resizeUpDownCursor] set]; break; - case CURSOR_HSIZE: [[NSCursor resizeLeftRightCursor] set]; break; - case CURSOR_BDIAGSIZE: [[NSCursor arrowCursor] set]; break; - case CURSOR_FDIAGSIZE: [[NSCursor arrowCursor] set]; break; - case CURSOR_MOVE: [[NSCursor arrowCursor] set]; break; - case CURSOR_VSPLIT: [[NSCursor resizeUpDownCursor] set]; break; - case CURSOR_HSPLIT: [[NSCursor resizeLeftRightCursor] set]; break; - case CURSOR_HELP: [[NSCursor arrowCursor] set]; break; - default: {}; + if (cursors[p_shape] != NULL) { + [cursors[p_shape] set]; + } else { + switch (p_shape) { + case CURSOR_ARROW: [[NSCursor arrowCursor] set]; break; + case CURSOR_IBEAM: [[NSCursor IBeamCursor] set]; break; + case CURSOR_POINTING_HAND: [[NSCursor pointingHandCursor] set]; break; + case CURSOR_CROSS: [[NSCursor crosshairCursor] set]; break; + case CURSOR_WAIT: [[NSCursor arrowCursor] set]; break; + case CURSOR_BUSY: [[NSCursor arrowCursor] set]; break; + case CURSOR_DRAG: [[NSCursor closedHandCursor] set]; break; + case CURSOR_CAN_DROP: [[NSCursor openHandCursor] set]; break; + case CURSOR_FORBIDDEN: [[NSCursor arrowCursor] set]; break; + case CURSOR_VSIZE: [[NSCursor resizeUpDownCursor] set]; break; + case CURSOR_HSIZE: [[NSCursor resizeLeftRightCursor] set]; break; + case CURSOR_BDIAGSIZE: [[NSCursor arrowCursor] set]; break; + case CURSOR_FDIAGSIZE: [[NSCursor arrowCursor] set]; break; + case CURSOR_MOVE: [[NSCursor arrowCursor] set]; break; + case CURSOR_VSPLIT: [[NSCursor resizeUpDownCursor] set]; break; + case CURSOR_HSPLIT: [[NSCursor resizeLeftRightCursor] set]; break; + case CURSOR_HELP: [[NSCursor arrowCursor] set]; break; + default: {}; + } } cursor_shape = p_shape; } +void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { + if (p_cursor.is_valid()) { + Ref<Texture> texture = p_cursor; + Ref<Image> image = texture->get_data(); + + int image_size = 32 * 32; + + ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32); + + NSBitmapImageRep *imgrep = [[[NSBitmapImageRep alloc] + initWithBitmapDataPlanes:NULL + pixelsWide:image->get_width() + pixelsHigh:image->get_height() + bitsPerSample:8 + samplesPerPixel:4 + hasAlpha:YES + isPlanar:NO + colorSpaceName:NSDeviceRGBColorSpace + bytesPerRow:image->get_width() * 4 + bitsPerPixel:32] autorelease]; + + ERR_FAIL_COND(imgrep == nil); + uint8_t *pixels = [imgrep bitmapData]; + + int len = image->get_width() * image->get_height(); + PoolVector<uint8_t> data = image->get_data(); + PoolVector<uint8_t>::Read r = data.read(); + + /* Premultiply the alpha channel */ + for (int i = 0; i < len; i++) { + uint8_t alpha = r[i * 4 + 3]; + pixels[i * 4 + 0] = (uint8_t)(((uint16_t)r[i * 4 + 0] * alpha) / 255); + pixels[i * 4 + 1] = (uint8_t)(((uint16_t)r[i * 4 + 1] * alpha) / 255); + pixels[i * 4 + 2] = (uint8_t)(((uint16_t)r[i * 4 + 2] * alpha) / 255); + pixels[i * 4 + 3] = alpha; + } + + NSImage *nsimage = [[[NSImage alloc] initWithSize:NSMakeSize(image->get_width(), image->get_height())] autorelease]; + [nsimage addRepresentation:imgrep]; + + NSCursor *cursor = [[NSCursor alloc] initWithImage:nsimage hotSpot:NSMakePoint(p_hotspot.x, p_hotspot.y)]; + + cursors[p_shape] = cursor; + + if (p_shape == CURSOR_ARROW) { + [cursor set]; + } + } +} + void OS_OSX::set_mouse_show(bool p_show) { } @@ -1665,9 +1794,8 @@ float OS_OSX::_display_scale(id screen) const { if ([screen respondsToSelector:@selector(backingScaleFactor)]) { return fmax(1.0, [screen backingScaleFactor]); } - } else { - return 1.0; } + return 1.0; } Point2 OS_OSX::get_native_window_position() const { @@ -1726,10 +1854,14 @@ void OS_OSX::set_window_size(const Size2 p_size) { CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight]; if (menuBarHeight != 0.f) { size.y += menuBarHeight; -#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101104 } else { - size.y += [[NSStatusBar systemStatusBar] thickness]; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 + if (floor(NSAppKitVersionNumber) < NSAppKitVersionNumber10_12) { +#else + { #endif + size.y += [[NSStatusBar systemStatusBar] thickness]; + } } } @@ -1742,36 +1874,27 @@ void OS_OSX::set_window_size(const Size2 p_size) { void OS_OSX::set_window_fullscreen(bool p_enabled) { if (zoomed != p_enabled) { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 [window_object toggleFullScreen:nil]; -#else - [window_object performZoom:nil]; -#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/ } zoomed = p_enabled; }; bool OS_OSX::is_window_fullscreen() const { -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 - if ([window_object respondsToSelector:@selector(isZoomed)]) - return [window_object isZoomed]; -#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/ - return zoomed; }; void OS_OSX::set_window_resizable(bool p_enabled) { if (p_enabled) - [window_object setStyleMask:[window_object styleMask] | NSResizableWindowMask]; + [window_object setStyleMask:[window_object styleMask] | NSWindowStyleMaskResizable]; else - [window_object setStyleMask:[window_object styleMask] & ~NSResizableWindowMask]; + [window_object setStyleMask:[window_object styleMask] & ~NSWindowStyleMaskResizable]; }; bool OS_OSX::is_window_resizable() const { - return [window_object styleMask] & NSResizableWindowMask; + return [window_object styleMask] & NSWindowStyleMaskResizable; }; void OS_OSX::set_window_minimized(bool p_enabled) { @@ -1826,7 +1949,7 @@ void OS_OSX::set_borderless_window(bool p_borderless) { if (p_borderless) { [window_object setStyleMask:NSWindowStyleMaskBorderless]; } else { - [window_object setStyleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask]; + [window_object setStyleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable]; // Force update of the window styles NSRect frameRect = [window_object frame]; @@ -1950,7 +2073,7 @@ void OS_OSX::process_events() { while (true) { NSEvent *event = [NSApp - nextEventMatchingMask:NSAnyEventMask + nextEventMatchingMask:NSEventMaskAny untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES]; @@ -1960,11 +2083,49 @@ void OS_OSX::process_events() { [NSApp sendEvent:event]; } + process_key_events(); [autoreleasePool drain]; autoreleasePool = [[NSAutoreleasePool alloc] init]; } +void OS_OSX::process_key_events() { + + Ref<InputEventKey> k; + for (int i = 0; i < key_event_pos; i++) { + + KeyEvent &ke = key_event_buffer[i]; + + if ((i == 0 && ke.scancode == 0) || (i > 0 && key_event_buffer[i - 1].scancode == 0)) { + k.instance(); + + get_key_modifier_state(ke.osx_state, k); + k->set_pressed(ke.pressed); + k->set_echo(ke.echo); + k->set_scancode(0); + k->set_unicode(ke.unicode); + + push_input(k); + } + if (ke.scancode != 0) { + k.instance(); + + get_key_modifier_state(ke.osx_state, k); + k->set_pressed(ke.pressed); + k->set_echo(ke.echo); + k->set_scancode(ke.scancode); + + if (i + 1 < key_event_pos && key_event_buffer[i + 1].scancode == 0) { + k->set_unicode(key_event_buffer[i + 1].unicode); + } + + push_input(k); + } + } + + key_event_pos = 0; +} + void OS_OSX::push_input(const Ref<InputEvent> &p_event) { Ref<InputEvent> ev = p_event; @@ -2084,6 +2245,7 @@ OS_OSX *OS_OSX::singleton = NULL; OS_OSX::OS_OSX() { + key_event_pos = 0; mouse_mode = OS::MOUSE_MODE_VISIBLE; main_loop = NULL; singleton = this; @@ -2142,7 +2304,7 @@ OS_OSX::OS_OSX() { [apple_menu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; menu_item = [apple_menu addItemWithTitle:NSLocalizedString(@"Hide Others", nil) action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; - [menu_item setKeyEquivalentModifierMask:(NSAlternateKeyMask | NSCommandKeyMask)]; + [menu_item setKeyEquivalentModifierMask:(NSEventModifierFlagOption | NSEventModifierFlagCommand)]; [apple_menu addItemWithTitle:NSLocalizedString(@"Show all", nil) action:@selector(unhideAllApplications:) keyEquivalent:@""]; @@ -2176,6 +2338,20 @@ OS_OSX::OS_OSX() { Vector<Logger *> loggers; loggers.push_back(memnew(OSXTerminalLogger)); _set_logger(memnew(CompositeLogger(loggers))); + + //process application:openFile: event + while (true) { + NSEvent *event = [NSApp + nextEventMatchingMask:NSEventMaskAny + untilDate:[NSDate distantPast] + inMode:NSDefaultRunLoopMode + dequeue:YES]; + + if (event == nil) + break; + + [NSApp sendEvent:event]; + } } bool OS_OSX::_check_internal_feature_support(const String &p_feature) { diff --git a/platform/osx/platform_config.h b/platform/osx/platform_config.h index a3715e7e4e..1b497cebef 100644 --- a/platform/osx/platform_config.h +++ b/platform/osx/platform_config.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <alloca.h> #define GLES3_INCLUDE_H "glad/glad.h" diff --git a/platform/osx/sem_osx.cpp b/platform/osx/sem_osx.cpp index 2e7da62e5b..92f749322e 100644 --- a/platform/osx/sem_osx.cpp +++ b/platform/osx/sem_osx.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sem_osx.h" #include <fcntl.h> diff --git a/platform/osx/sem_osx.h b/platform/osx/sem_osx.h index 0b9bbdfa76..ce31e966b7 100644 --- a/platform/osx/sem_osx.h +++ b/platform/osx/sem_osx.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEM_OSX_H #define SEM_OSX_H diff --git a/platform/register_platform_apis.h b/platform/register_platform_apis.h index 3ac3b319da..1c50eb95e3 100644 --- a/platform/register_platform_apis.h +++ b/platform/register_platform_apis.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_APIS_H #define REGISTER_APIS_H diff --git a/platform/server/detect.py b/platform/server/detect.py index ffec2af933..61b56ddefa 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -59,7 +59,7 @@ def configure(env): if ('clang++' not in env['CXX']): env["CC"] = "clang" env["CXX"] = "clang++" - env["LD"] = "clang++" + env["LINK"] = "clang++" env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env.extra_suffix = ".llvm" + env.extra_suffix @@ -86,6 +86,16 @@ def configure(env): if not env['builtin_libpng']: env.ParseConfig('pkg-config libpng --cflags --libs') + if not env['builtin_bullet']: + # We need at least version 2.88 + import subprocess + bullet_version = subprocess.check_output(['pkg-config', 'bullet', '--modversion']).strip() + if bullet_version < "2.88": + # Abort as system bullet was requested but too old + print("Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(bullet_version, "2.88")) + sys.exit(255) + env.ParseConfig('pkg-config bullet --cflags --libs') + if not env['builtin_enet']: env.ParseConfig('pkg-config libenet --cflags --libs') diff --git a/platform/server/godot_server.cpp b/platform/server/godot_server.cpp index 8e4742a1b0..3e48f0bf7f 100644 --- a/platform/server/godot_server.cpp +++ b/platform/server/godot_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_server.h" diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp index c34567aaab..370a347399 100644 --- a/platform/server/os_server.cpp +++ b/platform/server/os_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + //#include "servers/visual/visual_server_raster.h" //#include "servers/visual/rasterizer_dummy.h" #include "os_server.h" @@ -47,7 +48,7 @@ const char *OS_Server::get_video_driver_name(int p_driver) const { return "Dummy"; } -void OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { args = OS::get_singleton()->get_cmdline_args(); current_videomode = p_desired; @@ -67,14 +68,17 @@ void OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p spatial_sound_2d_server = memnew(SpatialSound2DServerSW); spatial_sound_2d_server->init(); - ERR_FAIL_COND(!visual_server); + ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE); visual_server->init(); input = memnew(InputDefault); _ensure_user_data_dir(); + + return OK; } + void OS_Server::finalize() { if (main_loop) @@ -179,6 +183,9 @@ void OS_Server::move_window_to_foreground() { void OS_Server::set_cursor_shape(CursorShape p_shape) { } +void OS_Server::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { +} + OS::PowerState OS_Server::get_power_state() { return power_manager->get_power_state(); } diff --git a/platform/server/os_server.h b/platform/server/os_server.h index c58c48500e..7abb4565d5 100644 --- a/platform/server/os_server.h +++ b/platform/server/os_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_SERVER_H #define OS_SERVER_H @@ -66,7 +67,7 @@ protected: virtual int get_video_driver_count() const; virtual const char *get_video_driver_name(int p_driver) const; - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void finalize(); virtual void set_main_loop(MainLoop *p_main_loop); @@ -75,6 +76,7 @@ public: virtual String get_name(); virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); virtual void set_mouse_show(bool p_show); virtual void set_mouse_grab(bool p_grab); diff --git a/platform/server/platform_config.h b/platform/server/platform_config.h index 413fea20d8..af4cf07393 100644 --- a/platform/server/platform_config.h +++ b/platform/server/platform_config.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <alloca.h> diff --git a/platform/uwp/app.cpp b/platform/uwp/app.cpp index 4468c18eba..5ff62b38f9 100644 --- a/platform/uwp/app.cpp +++ b/platform/uwp/app.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + // // This file demonstrates how to initialize EGL in a Windows Store app, using ICoreWindow. // diff --git a/platform/uwp/app.h b/platform/uwp/app.h index 0641ea1b8c..c23270b8ba 100644 --- a/platform/uwp/app.h +++ b/platform/uwp/app.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #pragma once #include <string> diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp index f9a8b6f26e..620f6c0f24 100644 --- a/platform/uwp/export/export.cpp +++ b/platform/uwp/export/export.cpp @@ -1024,6 +1024,17 @@ public: virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) { r_features->push_back("s3tc"); r_features->push_back("etc"); + switch ((int)p_preset->get("architecture/target")) { + case EditorExportUWP::ARM: { + r_features->push_back("arm"); + } break; + case EditorExportUWP::X86: { + r_features->push_back("32"); + } break; + case EditorExportUWP::X64: { + r_features->push_back("64"); + } break; + } } virtual void get_export_options(List<ExportOption> *r_options) { diff --git a/platform/uwp/export/export.h b/platform/uwp/export/export.h index 8e248b1969..bd759c8647 100644 --- a/platform/uwp/export/export.h +++ b/platform/uwp/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_uwp_exporter(); diff --git a/platform/uwp/gl_context_egl.cpp b/platform/uwp/gl_context_egl.cpp index 2dde05a01f..88c9c8d687 100644 --- a/platform/uwp/gl_context_egl.cpp +++ b/platform/uwp/gl_context_egl.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gl_context_egl.h" #include "EGL/eglext.h" diff --git a/platform/uwp/gl_context_egl.h b/platform/uwp/gl_context_egl.h index 55fd7ce705..527baf1054 100644 --- a/platform/uwp/gl_context_egl.h +++ b/platform/uwp/gl_context_egl.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTEXT_EGL_H #define CONTEXT_EGL_H diff --git a/platform/uwp/joypad_uwp.h b/platform/uwp/joypad_uwp.h index 442f805b1f..98202cce9e 100644 --- a/platform/uwp/joypad_uwp.h +++ b/platform/uwp/joypad_uwp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JOYPAD_UWP_H #define JOYPAD_UWP_H diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp index a665bf4aff..d00da3dbcd 100644 --- a/platform/uwp/os_uwp.cpp +++ b/platform/uwp/os_uwp.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_uwp.h" #include "drivers/gles3/rasterizer_gles3.h" @@ -194,7 +195,7 @@ void OSUWP::screen_size_changed() { gl_context->reset(); }; -void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { main_loop = NULL; outside = true; @@ -297,6 +298,8 @@ void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_aud display_request->RequestActive(); set_keep_screen_on(GLOBAL_DEF("display/window/keep_screen_on", true)); + + return OK; } void OSUWP::set_clipboard(const String &p_text) { @@ -651,6 +654,10 @@ void OSUWP::set_cursor_shape(CursorShape p_shape) { cursor_shape = p_shape; } +void OSUWP::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { + // TODO +} + Error OSUWP::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr) { return FAILED; @@ -745,6 +752,51 @@ void OSUWP::hide_virtual_keyboard() { pane->TryHide(); } +static String format_error_message(DWORD id) { + + LPWSTR messageBuffer = NULL; + size_t size = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, id, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&messageBuffer, 0, NULL); + + String msg = "Error " + itos(id) + ": " + String(messageBuffer, size); + + LocalFree(messageBuffer); + + return msg; +} + +Error OSUWP::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) { + + String full_path = "game/" + p_path; + p_library_handle = (void *)LoadPackagedLibrary(full_path.c_str(), 0); + + if (!p_library_handle) { + ERR_EXPLAIN("Can't open dynamic library: " + full_path + ". Error: " + format_error_message(GetLastError())); + ERR_FAIL_V(ERR_CANT_OPEN); + } + return OK; +} + +Error OSUWP::close_dynamic_library(void *p_library_handle) { + if (!FreeLibrary((HMODULE)p_library_handle)) { + return FAILED; + } + return OK; +} + +Error OSUWP::get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional) { + p_symbol_handle = (void *)GetProcAddress((HMODULE)p_library_handle, p_name.utf8().get_data()); + if (!p_symbol_handle) { + if (!p_optional) { + ERR_EXPLAIN("Can't resolve symbol " + p_name + ". Error: " + String::num(GetLastError())); + ERR_FAIL_V(ERR_CANT_RESOLVE); + } else { + return ERR_CANT_RESOLVE; + } + } + return OK; +} + void OSUWP::run() { if (!main_loop) diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h index 63a2355d25..95afdab469 100644 --- a/platform/uwp/os_uwp.h +++ b/platform/uwp/os_uwp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OSUWP_H #define OSUWP_H @@ -158,7 +159,7 @@ protected: virtual const char *get_audio_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void set_main_loop(MainLoop *p_main_loop); virtual void delete_main_loop(); @@ -218,6 +219,7 @@ public: virtual String get_clipboard() const; void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); void set_icon(const Ref<Image> &p_icon); virtual String get_executable_path() const; @@ -242,6 +244,10 @@ public: virtual void show_virtual_keyboard(const String &p_existing_text, const Rect2 &p_screen_rect = Rect2()); virtual void hide_virtual_keyboard(); + virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false); + virtual Error close_dynamic_library(void *p_library_handle); + virtual Error get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional = false); + virtual Error shell_open(String p_uri); void run(); diff --git a/platform/uwp/platform_config.h b/platform/uwp/platform_config.h index 0a21339237..606795479b 100644 --- a/platform/uwp/platform_config.h +++ b/platform/uwp/platform_config.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <malloc.h> diff --git a/platform/uwp/thread_uwp.cpp b/platform/uwp/thread_uwp.cpp index 79d244dd61..25cd29190f 100644 --- a/platform/uwp/thread_uwp.cpp +++ b/platform/uwp/thread_uwp.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "thread_uwp.h" #include "os/memory.h" diff --git a/platform/uwp/thread_uwp.h b/platform/uwp/thread_uwp.h index 24ae5ec22a..89081f3b2b 100644 --- a/platform/uwp/thread_uwp.h +++ b/platform/uwp/thread_uwp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THREAD_UWP_H #define THREAD_UWP_H diff --git a/platform/windows/SCsub b/platform/windows/SCsub index 604896b0db..8965b80fb7 100644 --- a/platform/windows/SCsub +++ b/platform/windows/SCsub @@ -39,5 +39,5 @@ if env['vsproj']: env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)] if not os.getenv("VCINSTALLDIR"): - if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes": + if (env["debug_symbols"] == "full" or env["debug_symbols"] == "yes") and env["separate_debug_symbols"]: env.AddPostAction(prog, make_debug_mingw) diff --git a/platform/windows/context_gl_win.cpp b/platform/windows/context_gl_win.cpp index 6875d23dfa..8b57fdd9ce 100644 --- a/platform/windows/context_gl_win.cpp +++ b/platform/windows/context_gl_win.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #if defined(OPENGL_ENABLED) || defined(GLES_ENABLED) // Author: Juan Linietsky <reduzio@gmail.com>, (C) 2008 diff --git a/platform/windows/context_gl_win.h b/platform/windows/context_gl_win.h index d30f842f4b..e7578a1aeb 100644 --- a/platform/windows/context_gl_win.h +++ b/platform/windows/context_gl_win.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #if defined(OPENGL_ENABLED) || defined(GLES_ENABLED) // Author: Juan Linietsky <reduzio@gmail.com>, (C) 2008 diff --git a/platform/windows/crash_handler_win.cpp b/platform/windows/crash_handler_win.cpp index 50b4f2d811..804c2d44eb 100644 --- a/platform/windows/crash_handler_win.cpp +++ b/platform/windows/crash_handler_win.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_windows.h" #include "project_settings.h" diff --git a/platform/windows/crash_handler_win.h b/platform/windows/crash_handler_win.h index 6f170fb958..95b1468197 100644 --- a/platform/windows/crash_handler_win.h +++ b/platform/windows/crash_handler_win.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CRASH_HANDLER_WIN_H #define CRASH_HANDLER_WIN_H diff --git a/platform/windows/ctxgl_procaddr.cpp b/platform/windows/ctxgl_procaddr.cpp index dfb15cc358..434eeea16e 100644 --- a/platform/windows/ctxgl_procaddr.cpp +++ b/platform/windows/ctxgl_procaddr.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef OPENGL_ENABLED #include "ctxgl_procaddr.h" #include <GL/gl.h> diff --git a/platform/windows/ctxgl_procaddr.h b/platform/windows/ctxgl_procaddr.h index 168f808285..cd229fb8db 100644 --- a/platform/windows/ctxgl_procaddr.h +++ b/platform/windows/ctxgl_procaddr.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CTXGL_PROCADDR_H #define CTXGL_PROCADDR_H diff --git a/platform/windows/detect.py b/platform/windows/detect.py index 489bac50f5..22d04153c8 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -69,6 +69,7 @@ def get_opts(): # Vista support dropped after EOL due to GH-10243 ('target_win_version', 'Targeted Windows version, >= 0x0601 (Windows 7)', '0x0601'), EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')), + BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False), ] @@ -265,7 +266,7 @@ def configure(env): env['CXX'] = mingw_prefix + "g++" env['AR'] = mingw_prefix + "gcc-ar" env['RANLIB'] = mingw_prefix + "gcc-ranlib" - env['LD'] = mingw_prefix + "g++" + env['LINK'] = mingw_prefix + "g++" env["x86_libtheora_opt_gcc"] = True if env['use_lto']: diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp index d5c2cf7992..97544c18f5 100644 --- a/platform/windows/export/export.cpp +++ b/platform/windows/export/export.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "editor/editor_export.h" #include "editor/editor_settings.h" #include "os/file_access.h" diff --git a/platform/windows/export/export.h b/platform/windows/export/export.h index 78421928ff..7f62e8955c 100644 --- a/platform/windows/export/export.h +++ b/platform/windows/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_windows_exporter(); diff --git a/platform/windows/godot_win.cpp b/platform/windows/godot_win.cpp index 20e351c47c..80f53dd1a1 100644 --- a/platform/windows/godot_win.cpp +++ b/platform/windows/godot_win.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "main/main.h" #include "os_windows.h" #include <locale.h> diff --git a/platform/windows/joypad.cpp b/platform/windows/joypad.cpp index 4a3936b175..796531fe24 100644 --- a/platform/windows/joypad.cpp +++ b/platform/windows/joypad.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "joypad.h" #include <oleauto.h> #include <wbemidl.h> diff --git a/platform/windows/joypad.h b/platform/windows/joypad.h index f3d24bce85..0d14480733 100644 --- a/platform/windows/joypad.h +++ b/platform/windows/joypad.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JOYPAD_H #define JOYPAD_H diff --git a/platform/windows/key_mapping_win.cpp b/platform/windows/key_mapping_win.cpp index bb90cb661a..69dd385354 100644 --- a/platform/windows/key_mapping_win.cpp +++ b/platform/windows/key_mapping_win.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "key_mapping_win.h" #include <stdio.h> diff --git a/platform/windows/key_mapping_win.h b/platform/windows/key_mapping_win.h index 2daf3f4f01..8d6461f27d 100644 --- a/platform/windows/key_mapping_win.h +++ b/platform/windows/key_mapping_win.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef KEY_MAPPING_WINDOWS_H #define KEY_MAPPING_WINDOWS_H diff --git a/platform/windows/lang_table.h b/platform/windows/lang_table.h index 614fbd8ae9..1a966b502a 100644 --- a/platform/windows/lang_table.h +++ b/platform/windows/lang_table.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LANG_TABLE_H #define LANG_TABLE_H diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 8edc2c5cff..a2a51f10a7 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -416,6 +416,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) /*mm->get_button_mask()|=(wParam&MK_XBUTTON1)?(1<<5):0; mm->get_button_mask()|=(wParam&MK_XBUTTON2)?(1<<6):0;*/ mm->set_position(Vector2(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); + mm->set_global_position(Vector2(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); if (mouse_mode == MOUSE_MODE_CAPTURED) { @@ -461,6 +462,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_MOUSEWHEEL: case WM_MOUSEHWHEEL: case WM_LBUTTONDBLCLK: + case WM_MBUTTONDBLCLK: case WM_RBUTTONDBLCLK: /*case WM_XBUTTONDOWN: case WM_XBUTTONUP: */ { @@ -519,6 +521,12 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) mb->set_button_index(2); mb->set_doubleclick(true); } break; + case WM_MBUTTONDBLCLK: { + + mb->set_pressed(true); + mb->set_button_index(3); + mb->set_doubleclick(true); + } break; case WM_MOUSEWHEEL: { mb->set_pressed(true); @@ -580,7 +588,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) mb->set_position(Vector2(old_x, old_y)); } - if (uMsg != WM_MOUSEWHEEL) { + if (uMsg != WM_MOUSEWHEEL && uMsg != WM_MOUSEHWHEEL) { if (mb->is_pressed()) { if (++pressrc > 0) @@ -929,7 +937,7 @@ typedef enum _SHC_PROCESS_DPI_AWARENESS { SHC_PROCESS_PER_MONITOR_DPI_AWARE = 2 } SHC_PROCESS_DPI_AWARENESS; -void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { main_loop = NULL; outside = true; @@ -975,7 +983,7 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int if (!RegisterClassExW(&wc)) { MessageBox(NULL, "Failed To Register The Window Class.", "ERROR", MB_OK | MB_ICONEXCLAMATION); - return; // Return + return ERR_UNAVAILABLE; } pre_fs_valid = true; @@ -1045,7 +1053,7 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int RECT rect; if (!GetClientRect(hWnd, &rect)) { MessageBoxW(NULL, L"Window Creation Error.", L"ERROR", MB_OK | MB_ICONEXCLAMATION); - return; // Return FALSE + return ERR_UNAVAILABLE; }; video_mode.width = rect.right; video_mode.height = rect.bottom; @@ -1063,7 +1071,7 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int NULL, NULL, hInstance, NULL); if (!hWnd) { MessageBoxW(NULL, L"Window Creation Error.", L"ERROR", MB_OK | MB_ICONEXCLAMATION); - return; // Return FALSE + return ERR_UNAVAILABLE; } }; @@ -1127,6 +1135,8 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int SetForegroundWindow(hWnd); // Slightly Higher Priority SetFocus(hWnd); // Sets Keyboard Focus To } + + return OK; } void OS_Windows::set_clipboard(const String &p_text) { @@ -1631,6 +1641,13 @@ void OS_Windows::_update_window_style(bool repaint) { Error OS_Windows::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) { + String path = p_path; + + if (!FileAccess::exists(path)) { + //this code exists so gdnative can load .dll files from within the executable path + path = get_executable_path().get_base_dir().plus_file(p_path.get_file()); + } + typedef DLL_DIRECTORY_COOKIE(WINAPI * PAddDllDirectory)(PCWSTR); typedef BOOL(WINAPI * PRemoveDllDirectory)(DLL_DIRECTORY_COOKIE); @@ -1638,15 +1655,15 @@ Error OS_Windows::open_dynamic_library(const String p_path, void *&p_library_han PRemoveDllDirectory remove_dll_directory = (PRemoveDllDirectory)GetProcAddress(GetModuleHandle("kernel32.dll"), "RemoveDllDirectory"); bool has_dll_directory_api = ((add_dll_directory != NULL) && (remove_dll_directory != NULL)); - DLL_DIRECTORY_COOKIE cookie; + DLL_DIRECTORY_COOKIE cookie = NULL; if (p_also_set_library_path && has_dll_directory_api) { - cookie = add_dll_directory(p_path.get_base_dir().c_str()); + cookie = add_dll_directory(path.get_base_dir().c_str()); } - p_library_handle = (void *)LoadLibraryExW(p_path.c_str(), NULL, (p_also_set_library_path && has_dll_directory_api) ? LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : 0); + p_library_handle = (void *)LoadLibraryExW(path.c_str(), NULL, (p_also_set_library_path && has_dll_directory_api) ? LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : 0); - if (p_also_set_library_path && has_dll_directory_api) { + if (cookie) { remove_dll_directory(cookie); } @@ -1844,10 +1861,125 @@ void OS_Windows::set_cursor_shape(CursorShape p_shape) { IDC_HELP }; - SetCursor(LoadCursor(hInstance, win_cursors[p_shape])); + if (cursors[p_shape] != NULL) { + SetCursor(cursors[p_shape]); + } else { + SetCursor(LoadCursor(hInstance, win_cursors[p_shape])); + } cursor_shape = p_shape; } +void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { + if (p_cursor.is_valid()) { + Ref<Texture> texture = p_cursor; + Ref<Image> image = texture->get_data(); + + UINT image_size = 32 * 32; + UINT size = sizeof(UINT) * image_size; + + ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32); + + // Create the BITMAP with alpha channel + COLORREF *buffer = (COLORREF *)malloc(sizeof(COLORREF) * image_size); + + image->lock(); + for (UINT index = 0; index < image_size; index++) { + int column_index = floor(index / 32); + int row_index = index % 32; + + Color pcColor = image->get_pixel(row_index, column_index); + *(buffer + index) = image->get_pixel(row_index, column_index).to_argb32(); + } + image->unlock(); + + // Using 4 channels, so 4 * 8 bits + HBITMAP bitmap = CreateBitmap(32, 32, 1, 4 * 8, buffer); + COLORREF clrTransparent = -1; + + // Create the AND and XOR masks for the bitmap + HBITMAP hAndMask = NULL; + HBITMAP hXorMask = NULL; + + GetMaskBitmaps(bitmap, clrTransparent, hAndMask, hXorMask); + + if (NULL == hAndMask || NULL == hXorMask) { + return; + } + + // Finally, create the icon + ICONINFO iconinfo = { 0 }; + iconinfo.fIcon = FALSE; + iconinfo.xHotspot = p_hotspot.x; + iconinfo.yHotspot = p_hotspot.y; + iconinfo.hbmMask = hAndMask; + iconinfo.hbmColor = hXorMask; + + cursors[p_shape] = CreateIconIndirect(&iconinfo); + + if (p_shape == CURSOR_ARROW) { + SetCursor(cursors[p_shape]); + } + + if (hAndMask != NULL) { + DeleteObject(hAndMask); + } + + if (hXorMask != NULL) { + DeleteObject(hXorMask); + } + } +} + +void OS_Windows::GetMaskBitmaps(HBITMAP hSourceBitmap, COLORREF clrTransparent, OUT HBITMAP &hAndMaskBitmap, OUT HBITMAP &hXorMaskBitmap) { + + // Get the system display DC + HDC hDC = GetDC(NULL); + + // Create helper DC + HDC hMainDC = CreateCompatibleDC(hDC); + HDC hAndMaskDC = CreateCompatibleDC(hDC); + HDC hXorMaskDC = CreateCompatibleDC(hDC); + + // Get the dimensions of the source bitmap + BITMAP bm; + GetObject(hSourceBitmap, sizeof(BITMAP), &bm); + + // Create the mask bitmaps + hAndMaskBitmap = CreateCompatibleBitmap(hDC, bm.bmWidth, bm.bmHeight); // color + hXorMaskBitmap = CreateCompatibleBitmap(hDC, bm.bmWidth, bm.bmHeight); // color + + // Release the system display DC + ReleaseDC(NULL, hDC); + + // Select the bitmaps to helper DC + HBITMAP hOldMainBitmap = (HBITMAP)SelectObject(hMainDC, hSourceBitmap); + HBITMAP hOldAndMaskBitmap = (HBITMAP)SelectObject(hAndMaskDC, hAndMaskBitmap); + HBITMAP hOldXorMaskBitmap = (HBITMAP)SelectObject(hXorMaskDC, hXorMaskBitmap); + + // Assign the monochrome AND mask bitmap pixels so that a pixels of the source bitmap + // with 'clrTransparent' will be white pixels of the monochrome bitmap + SetBkColor(hMainDC, clrTransparent); + BitBlt(hAndMaskDC, 0, 0, bm.bmWidth, bm.bmHeight, hMainDC, 0, 0, SRCCOPY); + + // Assign the color XOR mask bitmap pixels so that a pixels of the source bitmap + // with 'clrTransparent' will be black and rest the pixels same as corresponding + // pixels of the source bitmap + SetBkColor(hXorMaskDC, RGB(0, 0, 0)); + SetTextColor(hXorMaskDC, RGB(255, 255, 255)); + BitBlt(hXorMaskDC, 0, 0, bm.bmWidth, bm.bmHeight, hAndMaskDC, 0, 0, SRCCOPY); + BitBlt(hXorMaskDC, 0, 0, bm.bmWidth, bm.bmHeight, hMainDC, 0, 0, SRCAND); + + // Deselect bitmaps from the helper DC + SelectObject(hMainDC, hOldMainBitmap); + SelectObject(hAndMaskDC, hOldAndMaskBitmap); + SelectObject(hXorMaskDC, hOldXorMaskBitmap); + + // Delete the helper DC + DeleteDC(hXorMaskDC); + DeleteDC(hAndMaskDC); + DeleteDC(hMainDC); +} + Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr) { if (p_blocking && r_pipe) { @@ -2079,6 +2211,36 @@ String OS_Windows::get_locale() const { return "en"; } +// We need this because GetSystemInfo() is unreliable on WOW64 +// see https://msdn.microsoft.com/en-us/library/windows/desktop/ms724381(v=vs.85).aspx +// Taken from MSDN +typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL); +LPFN_ISWOW64PROCESS fnIsWow64Process; + +BOOL is_wow64() { + BOOL wow64 = FALSE; + + fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process"); + + if (fnIsWow64Process) { + if (!fnIsWow64Process(GetCurrentProcess(), &wow64)) { + wow64 = FALSE; + } + } + + return wow64; +} + +int OS_Windows::get_processor_count() const { + SYSTEM_INFO sysinfo; + if (is_wow64()) + GetNativeSystemInfo(&sysinfo); + else + GetSystemInfo(&sysinfo); + + return sysinfo.dwNumberOfProcessors; +} + OS::LatinKeyboardVariant OS_Windows::get_latin_keyboard_variant() const { unsigned long azerty[] = { diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index d709fb3fe5..7308650695 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_WINDOWS_H #define OS_WINDOWS_H #include "context_gl_win.h" @@ -113,6 +114,7 @@ class OS_Windows : public OS { bool window_has_focus; uint32_t last_button_state; + HCURSOR cursors[CURSOR_MAX] = { NULL }; CursorShape cursor_shape; InputDefault *input; @@ -147,7 +149,7 @@ protected: virtual const char *get_audio_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void set_main_loop(MainLoop *p_main_loop); virtual void delete_main_loop(); @@ -244,11 +246,16 @@ public: virtual String get_clipboard() const; void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); + void GetMaskBitmaps(HBITMAP hSourceBitmap, COLORREF clrTransparent, OUT HBITMAP &hAndMaskBitmap, OUT HBITMAP &hXorMaskBitmap); void set_icon(const Ref<Image> &p_icon); virtual String get_executable_path() const; virtual String get_locale() const; + + virtual int get_processor_count() const; + virtual LatinKeyboardVariant get_latin_keyboard_variant() const; virtual void enable_for_stealing_focus(ProcessID pid); diff --git a/platform/windows/platform_config.h b/platform/windows/platform_config.h index 6c26a8228d..10ec9110d1 100644 --- a/platform/windows/platform_config.h +++ b/platform/windows/platform_config.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <malloc.h> //#else //#include <alloca.h> diff --git a/platform/x11/SCsub b/platform/x11/SCsub index 38dd2ddd88..b18757337a 100644 --- a/platform/x11/SCsub +++ b/platform/x11/SCsub @@ -19,5 +19,5 @@ common_x11 = [ prog = env.add_program('#bin/godot', ['godot_x11.cpp'] + common_x11) -if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes": +if (env["debug_symbols"] == "full" or env["debug_symbols"] == "yes") and env["separate_debug_symbols"]: env.AddPostAction(prog, make_debug) diff --git a/platform/x11/context_gl_x11.cpp b/platform/x11/context_gl_x11.cpp index b232f36a46..20f2212861 100644 --- a/platform/x11/context_gl_x11.cpp +++ b/platform/x11/context_gl_x11.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "context_gl_x11.h" #ifdef X11_ENABLED diff --git a/platform/x11/context_gl_x11.h b/platform/x11/context_gl_x11.h index efebd3f78d..c969f0044d 100644 --- a/platform/x11/context_gl_x11.h +++ b/platform/x11/context_gl_x11.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTEXT_GL_X11_H #define CONTEXT_GL_X11_H diff --git a/platform/x11/crash_handler_x11.cpp b/platform/x11/crash_handler_x11.cpp index f0eb8a6d5b..43b9051ea7 100644 --- a/platform/x11/crash_handler_x11.cpp +++ b/platform/x11/crash_handler_x11.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef DEBUG_ENABLED #define CRASH_HANDLER_ENABLED 1 #endif diff --git a/platform/x11/crash_handler_x11.h b/platform/x11/crash_handler_x11.h index 36ab29b597..49ca0df9a8 100644 --- a/platform/x11/crash_handler_x11.h +++ b/platform/x11/crash_handler_x11.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CRASH_HANDLER_X11_H #define CRASH_HANDLER_X11_H diff --git a/platform/x11/detect.py b/platform/x11/detect.py index cb45fed1be..02bd7232c2 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -55,6 +55,7 @@ def get_opts(): BoolVariable('pulseaudio', 'Detect & use pulseaudio', True), BoolVariable('udev', 'Use udev for gamepad connection callbacks', False), EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')), + BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False), BoolVariable('touch', 'Enable touch events', True), ] @@ -109,7 +110,7 @@ def configure(env): if ('clang++' not in env['CXX']): env["CC"] = "clang" env["CXX"] = "clang++" - env["LD"] = "clang++" + env["LINK"] = "clang++" env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env.extra_suffix = ".llvm" + env.extra_suffix @@ -172,6 +173,16 @@ def configure(env): if not env['builtin_libpng']: env.ParseConfig('pkg-config libpng --cflags --libs') + if not env['builtin_bullet']: + # We need at least version 2.88 + import subprocess + bullet_version = subprocess.check_output(['pkg-config', 'bullet', '--modversion']).strip() + if bullet_version < "2.88": + # Abort as system bullet was requested but too old + print("Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(bullet_version, "2.88")) + sys.exit(255) + env.ParseConfig('pkg-config bullet --cflags --libs') + if not env['builtin_enet']: env.ParseConfig('pkg-config libenet --cflags --libs') diff --git a/platform/x11/export/export.cpp b/platform/x11/export/export.cpp index 3a8786f296..904aceaca0 100644 --- a/platform/x11/export/export.cpp +++ b/platform/x11/export/export.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "export.h" #include "editor/editor_export.h" diff --git a/platform/x11/export/export.h b/platform/x11/export/export.h index 152a64df86..ac44cef8f7 100644 --- a/platform/x11/export/export.h +++ b/platform/x11/export/export.h @@ -27,4 +27,5 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + void register_x11_exporter(); diff --git a/platform/x11/godot_x11.cpp b/platform/x11/godot_x11.cpp index c7d7bb643b..3241cbcbf9 100644 --- a/platform/x11/godot_x11.cpp +++ b/platform/x11/godot_x11.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include <limits.h> #include <locale.h> #include <stdlib.h> diff --git a/platform/x11/key_mapping_x11.cpp b/platform/x11/key_mapping_x11.cpp index 5e15768d66..423e2737ee 100644 --- a/platform/x11/key_mapping_x11.cpp +++ b/platform/x11/key_mapping_x11.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "key_mapping_x11.h" /***** SCAN CODE CONVERSION ******/ diff --git a/platform/x11/key_mapping_x11.h b/platform/x11/key_mapping_x11.h index 022affcbea..62dfcf3a4d 100644 --- a/platform/x11/key_mapping_x11.h +++ b/platform/x11/key_mapping_x11.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef KEY_MAPPING_X11_H #define KEY_MAPPING_X11_H diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 240d6638a9..eaf72d4dbf 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "os_x11.h" #include "drivers/gles3/rasterizer_gles3.h" #include "errno.h" @@ -100,7 +101,7 @@ void OS_X11::initialize_core() { OS_Unix::initialize_core(); } -void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { +Error OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) { long im_event_mask = 0; last_button_state = 0; @@ -123,21 +124,24 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au /** XLIB INITIALIZATION **/ x11_display = XOpenDisplay(NULL); + if (!x11_display) { + ERR_PRINT("X11 Display is not available"); + return ERR_UNAVAILABLE; + } + char *modifiers = NULL; Bool xkb_dar = False; - if (x11_display) { - XAutoRepeatOn(x11_display); - xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL); + XAutoRepeatOn(x11_display); + xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL); - // Try to support IME if detectable auto-repeat is supported - if (xkb_dar == True) { + // Try to support IME if detectable auto-repeat is supported + if (xkb_dar == True) { #ifdef X_HAVE_UTF8_STRING - // Xutf8LookupString will be used later instead of XmbLookupString before - // the multibyte sequences can be converted to unicode string. - modifiers = XSetLocaleModifiers(""); + // Xutf8LookupString will be used later instead of XmbLookupString before + // the multibyte sequences can be converted to unicode string. + modifiers = XSetLocaleModifiers(""); #endif - } } if (modifiers == NULL) { @@ -213,7 +217,7 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au XIFreeDeviceInfo(info); - if (!touch.devices.size()) { + if (is_stdout_verbose() && !touch.devices.size()) { fprintf(stderr, "No touch devices found\n"); } } @@ -331,8 +335,8 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au AudioDriverManager::initialize(p_audio_driver); - ERR_FAIL_COND(!visual_server); - ERR_FAIL_COND(x11_window == 0); + ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE); + ERR_FAIL_COND_V(x11_window == 0, ERR_UNAVAILABLE); XSetWindowAttributes new_attr; @@ -519,6 +523,8 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au _window_changed(&xevent); } } + + return OK; } void OS_X11::xim_destroy_callback(::XIM im, ::XPointer client_data, @@ -1050,13 +1056,59 @@ void OS_X11::set_window_maximized(bool p_enabled) { XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev); - while (p_enabled && !is_window_maximized()) { - // Wait for effective resizing (so the GLX context is too). + if (is_window_maximize_allowed()) { + while (p_enabled && !is_window_maximized()) { + // Wait for effective resizing (so the GLX context is too). + } } maximized = p_enabled; } +bool OS_X11::is_window_maximize_allowed() { + Atom property = XInternAtom(x11_display, "_NET_WM_ALLOWED_ACTIONS", False); + Atom type; + int format; + unsigned long len; + unsigned long remaining; + unsigned char *data = NULL; + + int result = XGetWindowProperty( + x11_display, + x11_window, + property, + 0, + 1024, + False, + XA_ATOM, + &type, + &format, + &len, + &remaining, + &data); + + if (result == Success) { + Atom *atoms = (Atom *)data; + Atom wm_act_max_horz = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_HORZ", False); + Atom wm_act_max_vert = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_VERT", False); + bool found_wm_act_max_horz = false; + bool found_wm_act_max_vert = false; + + for (unsigned int i = 0; i < len; i++) { + if (atoms[i] == wm_act_max_horz) + found_wm_act_max_horz = true; + if (atoms[i] == wm_act_max_vert) + found_wm_act_max_vert = true; + + if (found_wm_act_max_horz || found_wm_act_max_vert) + return true; + } + XFree(atoms); + } + + return false; +} + bool OS_X11::is_window_maximized() const { // Using EWMH -- Extended Window Manager Hints Atom property = XInternAtom(x11_display, "_NET_WM_STATE", False); @@ -1810,8 +1862,12 @@ void OS_X11::process_xevents() { e = event; req = &(e.xselectionrequest); - if (req->target == XA_STRING || req->target == XInternAtom(x11_display, "COMPOUND_TEXT", 0) || - req->target == XInternAtom(x11_display, "UTF8_STRING", 0)) { + if (req->target == XInternAtom(x11_display, "UTF8_STRING", 0) || + req->target == XInternAtom(x11_display, "COMPOUND_TEXT", 0) || + req->target == XInternAtom(x11_display, "TEXT", 0) || + req->target == XA_STRING || + req->target == XInternAtom(x11_display, "text/plain;charset=utf-8", 0) || + req->target == XInternAtom(x11_display, "text/plain", 0)) { CharString clip = OS::get_clipboard().utf8(); XChangeProperty(x11_display, req->requestor, @@ -1824,26 +1880,40 @@ void OS_X11::process_xevents() { respond.xselection.property = req->property; } else if (req->target == XInternAtom(x11_display, "TARGETS", 0)) { - Atom data[2]; - data[0] = XInternAtom(x11_display, "UTF8_STRING", 0); - data[1] = XA_STRING; - XChangeProperty(x11_display, req->requestor, req->property, req->target, - 8, PropModeReplace, (unsigned char *)&data, - sizeof(data)); + Atom data[7]; + data[0] = XInternAtom(x11_display, "TARGETS", 0); + data[1] = XInternAtom(x11_display, "UTF8_STRING", 0); + data[2] = XInternAtom(x11_display, "COMPOUND_TEXT", 0); + data[3] = XInternAtom(x11_display, "TEXT", 0); + data[4] = XA_STRING; + data[5] = XInternAtom(x11_display, "text/plain;charset=utf-8", 0); + data[6] = XInternAtom(x11_display, "text/plain", 0); + + XChangeProperty(x11_display, + req->requestor, + req->property, + XA_ATOM, + 32, + PropModeReplace, + (unsigned char *)&data, + sizeof(data) / sizeof(data[0])); respond.xselection.property = req->property; } else { - printf("No String %x\n", - (int)req->target); + char *targetname = XGetAtomName(x11_display, req->target); + printf("No Target '%s'\n", targetname); + if (targetname) + XFree(targetname); respond.xselection.property = None; } + respond.xselection.type = SelectionNotify; respond.xselection.display = req->display; respond.xselection.requestor = req->requestor; respond.xselection.selection = req->selection; respond.xselection.target = req->target; respond.xselection.time = req->time; - XSendEvent(x11_display, req->requestor, 0, 0, &respond); + XSendEvent(x11_display, req->requestor, True, NoEventMask, &respond); XFlush(x11_display); } break; @@ -2205,6 +2275,48 @@ void OS_X11::set_cursor_shape(CursorShape p_shape) { current_cursor = p_shape; } +void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) { + if (p_cursor.is_valid()) { + Ref<Texture> texture = p_cursor; + Ref<Image> image = texture->get_data(); + + ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32); + + // Create the cursor structure + XcursorImage *cursor_image = XcursorImageCreate(texture->get_width(), texture->get_height()); + XcursorUInt image_size = 32 * 32; + XcursorDim size = sizeof(XcursorPixel) * image_size; + + cursor_image->version = 1; + cursor_image->size = size; + cursor_image->xhot = p_hotspot.x; + cursor_image->yhot = p_hotspot.y; + + // allocate memory to contain the whole file + cursor_image->pixels = (XcursorPixel *)malloc(size); + + image->lock(); + + for (XcursorPixel index = 0; index < image_size; index++) { + int column_index = floor(index / 32); + int row_index = index % 32; + + *(cursor_image->pixels + index) = image->get_pixel(row_index, column_index).to_argb32(); + } + + image->unlock(); + + ERR_FAIL_COND(cursor_image->pixels == NULL); + + // Save it for a further usage + cursors[p_shape] = XcursorImageLoadCursor(x11_display, cursor_image); + + if (p_shape == CURSOR_ARROW) { + XDefineCursor(x11_display, x11_window, cursors[p_shape]); + } + } +} + void OS_X11::release_rendering_thread() { context_gl->release_current(); diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h index 59b9c8caa8..f7bc0b73e0 100644 --- a/platform/x11/os_x11.h +++ b/platform/x11/os_x11.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OS_X11_H #define OS_X11_H @@ -193,17 +194,20 @@ protected: virtual const char *get_audio_driver_name(int p_driver) const; virtual void initialize_core(); - virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); + virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); virtual void finalize(); virtual void set_main_loop(MainLoop *p_main_loop); void _window_changed(XEvent *xevent); + bool is_window_maximize_allowed(); + public: virtual String get_name(); virtual void set_cursor_shape(CursorShape p_shape); + virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot); void set_mouse_mode(MouseMode p_mode); MouseMode get_mouse_mode() const; diff --git a/platform/x11/platform_config.h b/platform/x11/platform_config.h index 0ad94803c2..58d6b210ee 100644 --- a/platform/x11/platform_config.h +++ b/platform/x11/platform_config.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef __linux__ #include <alloca.h> #endif diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp index fb8bb3bb83..f290a181ec 100644 --- a/scene/2d/animated_sprite.cpp +++ b/scene/2d/animated_sprite.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animated_sprite.h" #include "os/os.h" #include "scene/scene_string_names.h" @@ -239,7 +240,7 @@ void SpriteFrames::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_animations"), &SpriteFrames::_set_animations); ClassDB::bind_method(D_METHOD("_get_animations"), &SpriteFrames::_get_animations); - ADD_PROPERTYNZ(PropertyInfo(Variant::ARRAY, "animations", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_animations", "_get_animations"); //compatibility + ADD_PROPERTYNZ(PropertyInfo(Variant::ARRAY, "animations", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_animations", "_get_animations"); //compatibility } SpriteFrames::SpriteFrames() { diff --git a/scene/2d/animated_sprite.h b/scene/2d/animated_sprite.h index 8a696a40fc..2c356d619f 100644 --- a/scene/2d/animated_sprite.h +++ b/scene/2d/animated_sprite.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATED_SPRITE_H #define ANIMATED_SPRITE_H diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp index 29a01d30e1..6fff7ac0a4 100644 --- a/scene/2d/area_2d.cpp +++ b/scene/2d/area_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "area_2d.h" #include "scene/scene_string_names.h" #include "servers/audio_server.h" @@ -169,7 +170,7 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_ E->get().in_tree = node && node->is_inside_tree(); if (node) { node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid)); - node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); + node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); if (E->get().in_tree) { emit_signal(SceneStringNames::get_singleton()->body_entered, node); } @@ -196,7 +197,7 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_ if (node) { node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); if (E->get().in_tree) emit_signal(SceneStringNames::get_singleton()->body_exited, obj); } @@ -270,7 +271,7 @@ void Area2D::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ E->get().in_tree = node && node->is_inside_tree(); if (node) { node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree, make_binds(objid)); - node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid)); + node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid)); if (E->get().in_tree) { emit_signal(SceneStringNames::get_singleton()->area_entered, node); } @@ -297,7 +298,7 @@ void Area2D::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ if (node) { node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree); if (E->get().in_tree) emit_signal(SceneStringNames::get_singleton()->area_exited, obj); } @@ -337,7 +338,7 @@ void Area2D::_clear_monitoring() { //ERR_CONTINUE(!node); node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); if (!E->get().in_tree) continue; @@ -367,7 +368,7 @@ void Area2D::_clear_monitoring() { //ERR_CONTINUE(!node); node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree); if (!E->get().in_tree) continue; diff --git a/scene/2d/area_2d.h b/scene/2d/area_2d.h index 66217c7b08..0fda9b867d 100644 --- a/scene/2d/area_2d.h +++ b/scene/2d/area_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AREA_2D_H #define AREA_2D_H diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp index 33ed4ac881..fc67d28a29 100644 --- a/scene/2d/audio_stream_player_2d.cpp +++ b/scene/2d/audio_stream_player_2d.cpp @@ -1,3 +1,32 @@ +/*************************************************************************/ +/* audio_stream_player_2d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "audio_stream_player_2d.h" @@ -166,7 +195,7 @@ void AudioStreamPlayer2D::_notification(int p_what) { float dist = global_pos.distance_to(screen_in_global); //distance to screen center if (dist > max_distance) - continue; //cant hear this sound in this viewport + continue; //can't hear this sound in this viewport float multiplier = Math::pow(1.0f - dist / max_distance, attenuation); multiplier *= Math::db2linear(volume_db); //also apply player volume! diff --git a/scene/2d/audio_stream_player_2d.h b/scene/2d/audio_stream_player_2d.h index 93cf26ae03..9ae8e3a518 100644 --- a/scene/2d/audio_stream_player_2d.h +++ b/scene/2d/audio_stream_player_2d.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* audio_stream_player_2d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 AUDIO_STREAM_PLAYER_2D_H #define AUDIO_STREAM_PLAYER_2D_H diff --git a/scene/2d/back_buffer_copy.cpp b/scene/2d/back_buffer_copy.cpp index 1d13db493c..446b367be0 100644 --- a/scene/2d/back_buffer_copy.cpp +++ b/scene/2d/back_buffer_copy.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "back_buffer_copy.h" void BackBufferCopy::_update_copy_mode() { diff --git a/scene/2d/back_buffer_copy.h b/scene/2d/back_buffer_copy.h index 01438ca7a1..b786c2b828 100644 --- a/scene/2d/back_buffer_copy.h +++ b/scene/2d/back_buffer_copy.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BACKBUFFERCOPY_H #define BACKBUFFERCOPY_H diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp index 02e21913a5..d172da5bd9 100644 --- a/scene/2d/camera_2d.cpp +++ b/scene/2d/camera_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "camera_2d.h" #include "core/math/math_funcs.h" #include "scene/scene_string_names.h" @@ -90,8 +91,8 @@ Transform2D Camera2D::get_camera_transform() { if (anchor_mode == ANCHOR_MODE_DRAG_CENTER) { if (h_drag_enabled && !Engine::get_singleton()->is_editor_hint()) { - camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT])); - camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_LEFT])); + camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_LEFT])); + camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT])); } else { if (h_ofs < 0) { @@ -103,8 +104,8 @@ Transform2D Camera2D::get_camera_transform() { if (v_drag_enabled && !Engine::get_singleton()->is_editor_hint()) { - camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM])); - camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_TOP])); + camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_TOP])); + camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM])); } else { @@ -142,7 +143,7 @@ Transform2D Camera2D::get_camera_transform() { if (smoothing_enabled && !Engine::get_singleton()->is_editor_hint()) { - float c = smoothing * get_physics_process_delta_time(); + float c = smoothing * get_process_delta_time(); smoothed_camera_pos = ((camera_pos - smoothed_camera_pos) * c) + smoothed_camera_pos; ret_camera_pos = smoothed_camera_pos; //camera_pos=camera_pos*(1.0-smoothing)+new_camera_pos*smoothing; @@ -216,14 +217,14 @@ void Camera2D::_notification(int p_what) { switch (p_what) { - case NOTIFICATION_PHYSICS_PROCESS: { + case NOTIFICATION_INTERNAL_PROCESS: { _update_scroll(); } break; case NOTIFICATION_TRANSFORM_CHANGED: { - if (!is_physics_processing()) + if (!is_processing_internal()) _update_scroll(); } break; @@ -245,7 +246,7 @@ void Camera2D::_notification(int p_what) { add_to_group(canvas_group_name); if (Engine::get_singleton()->is_editor_hint()) { - set_physics_process(false); + set_process_internal(false); } _update_scroll(); @@ -502,9 +503,9 @@ void Camera2D::set_follow_smoothing(float p_speed) { smoothing = p_speed; if (smoothing > 0 && !(is_inside_tree() && Engine::get_singleton()->is_editor_hint())) - set_physics_process(true); + set_process_internal(true); else - set_physics_process(false); + set_process_internal(false); } float Camera2D::get_follow_smoothing() const { @@ -540,6 +541,7 @@ bool Camera2D::is_v_drag_enabled() const { void Camera2D::set_v_offset(float p_offset) { v_ofs = p_offset; + _update_scroll(); } float Camera2D::get_v_offset() const { @@ -550,6 +552,7 @@ float Camera2D::get_v_offset() const { void Camera2D::set_h_offset(float p_offset) { h_ofs = p_offset; + _update_scroll(); } float Camera2D::get_h_offset() const { @@ -712,6 +715,7 @@ void Camera2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rotating"), "set_rotating", "is_rotating"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "current"), "_set_current", "is_current"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "zoom"), "set_zoom", "get_zoom"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", 0), "set_custom_viewport", "get_custom_viewport"); ADD_GROUP("Limit", "limit_"); ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_left"), "set_limit", "get_limit", MARGIN_LEFT); @@ -728,6 +732,10 @@ void Camera2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smoothing_enabled"), "set_enable_follow_smoothing", "is_follow_smoothing_enabled"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "smoothing_speed"), "set_follow_smoothing", "get_follow_smoothing"); + ADD_GROUP("Offset", "offset_"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset_v", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_v_offset", "get_v_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset_h", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_h_offset", "get_h_offset"); + ADD_GROUP("Drag Margin", "drag_margin_"); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "drag_margin_left", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_drag_margin", "get_drag_margin", MARGIN_LEFT); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "drag_margin_top", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_drag_margin", "get_drag_margin", MARGIN_TOP); diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h index 743bf6abd6..99571500bf 100644 --- a/scene/2d/camera_2d.h +++ b/scene/2d/camera_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CAMERA_2D_H #define CAMERA_2D_H diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index 4fb22ac04a..87bcdae527 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "canvas_item.h" #include "core/method_bind_ext.gen.inc" #include "message_queue.h" @@ -100,7 +101,7 @@ void CanvasItemMaterial::_update_shader() { case LIGHT_MODE_UNSHADED: code += ",unshaded"; break; case LIGHT_MODE_LIGHT_ONLY: code += ",light_only"; break; } - code += ";\n"; //thats it. + code += ";\n"; //that's it. ShaderData shader_data; shader_data.shader = VS::get_singleton()->shader_create(); @@ -1058,9 +1059,9 @@ void CanvasItem::_bind_methods() { ADD_GROUP("Material", ""); ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,CanvasItemMaterial"), "set_material", "get_material"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "use_parent_material"), "set_use_parent_material", "get_use_parent_material"); - //exporting these two things doesn't really make much sense i think - //ADD_PROPERTY( PropertyInfo(Variant::BOOL,"transform/toplevel"), "set_as_toplevel","is_set_as_toplevel") ; - //ADD_PROPERTY(PropertyInfo(Variant::BOOL,"transform/notify"),"set_transform_notify","is_transform_notify_enabled"); + //exporting these things doesn't really make much sense i think + // ADD_PROPERTY(PropertyInfo(Variant::BOOL, "toplevel", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_as_toplevel", "is_set_as_toplevel"); + // ADD_PROPERTY(PropertyInfo(Variant::BOOL,"transform/notify"),"set_transform_notify","is_transform_notify_enabled"); ADD_SIGNAL(MethodInfo("draw")); ADD_SIGNAL(MethodInfo("visibility_changed")); diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h index e994ebb5aa..7e5bea0511 100644 --- a/scene/2d/canvas_item.h +++ b/scene/2d/canvas_item.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CANVAS_ITEM_H #define CANVAS_ITEM_H @@ -229,6 +230,7 @@ public: // Used to resize/move/select the node virtual void _edit_set_rect(const Rect2 &p_rect){}; virtual Rect2 _edit_get_rect() const { return Rect2(-32, -32, 64, 64); }; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { return true; } Rect2 _edit_get_item_and_children_rect() const; virtual bool _edit_use_rect() const { return false; }; diff --git a/scene/2d/canvas_modulate.cpp b/scene/2d/canvas_modulate.cpp index 925c01f6b3..2f8568ccbf 100644 --- a/scene/2d/canvas_modulate.cpp +++ b/scene/2d/canvas_modulate.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "canvas_modulate.h" void CanvasModulate::_notification(int p_what) { diff --git a/scene/2d/canvas_modulate.h b/scene/2d/canvas_modulate.h index b9d7b14b0a..888ed95f6b 100644 --- a/scene/2d/canvas_modulate.h +++ b/scene/2d/canvas_modulate.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CANVASMODULATE_H #define CANVASMODULATE_H diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp index b4f9f3fd9d..8350e7c48a 100644 --- a/scene/2d/collision_object_2d.cpp +++ b/scene/2d/collision_object_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_object_2d.h" #include "scene/scene_string_names.h" #include "servers/physics_2d_server.h" @@ -327,6 +328,20 @@ void CollisionObject2D::_update_pickable() { Physics2DServer::get_singleton()->body_set_pickable(rid, pickable); } +String CollisionObject2D::get_configuration_warning() const { + + String warning = Node2D::get_configuration_warning(); + + if (shapes.empty()) { + if (warning == String()) { + warning += "\n"; + } + warning += TTR("This node has no children shapes, so it can't interact with the space.\nConsider adding CollisionShape2D or CollisionPolygon2D children nodes to define its shape."); + } + + return warning; +} + void CollisionObject2D::_bind_methods() { ClassDB::bind_method(D_METHOD("get_rid"), &CollisionObject2D::get_rid); diff --git a/scene/2d/collision_object_2d.h b/scene/2d/collision_object_2d.h index 62298b4036..6da63d1a0b 100644 --- a/scene/2d/collision_object_2d.h +++ b/scene/2d/collision_object_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_OBJECT_2D_H #define COLLISION_OBJECT_2D_H @@ -106,6 +107,8 @@ public: void set_pickable(bool p_enabled); bool is_pickable() const; + String get_configuration_warning() const; + _FORCE_INLINE_ RID get_rid() const { return rid; } CollisionObject2D(); diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp index eaa650b140..978fb379ac 100644 --- a/scene/2d/collision_polygon_2d.cpp +++ b/scene/2d/collision_polygon_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_polygon_2d.h" #include "collision_object_2d.h" @@ -114,6 +115,15 @@ Vector<Vector<Vector2> > CollisionPolygon2D::_decompose_in_convex() { return decomp; } +void CollisionPolygon2D::_update_in_shape_owner(bool p_xform_only) { + + parent->shape_owner_set_transform(owner_id, get_transform()); + if (p_xform_only) + return; + parent->shape_owner_set_disabled(owner_id, disabled); + parent->shape_owner_set_one_way_collision(owner_id, one_way_collision); +} + void CollisionPolygon2D::_notification(int p_what) { switch (p_what) { @@ -123,22 +133,27 @@ void CollisionPolygon2D::_notification(int p_what) { if (parent) { owner_id = parent->create_shape_owner(this); _build_polygon(); - parent->shape_owner_set_transform(owner_id, get_transform()); - parent->shape_owner_set_disabled(owner_id, disabled); - parent->shape_owner_set_one_way_collision(owner_id, one_way_collision); + _update_in_shape_owner(); } /*if (Engine::get_singleton()->is_editor_hint()) { //display above all else set_z_as_relative(false); - set_z(VS::CANVAS_ITEM_Z_MAX - 1); + set_z_index(VS::CANVAS_ITEM_Z_MAX - 1); }*/ } break; + case NOTIFICATION_ENTER_TREE: { + + if (parent) { + _update_in_shape_owner(); + } + + } break; case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: { if (parent) { - parent->shape_owner_set_transform(owner_id, get_transform()); + _update_in_shape_owner(true); } } break; @@ -248,6 +263,11 @@ Rect2 CollisionPolygon2D::_edit_get_rect() const { return aabb; } +bool CollisionPolygon2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + return Geometry::is_point_in_polygon(p_point, Variant(polygon)); +} + String CollisionPolygon2D::get_configuration_warning() const { if (!Object::cast_to<CollisionObject2D>(get_parent())) { diff --git a/scene/2d/collision_polygon_2d.h b/scene/2d/collision_polygon_2d.h index 4c8b55a9ee..4dafe7d1da 100644 --- a/scene/2d/collision_polygon_2d.h +++ b/scene/2d/collision_polygon_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_POLYGON_2D_H #define COLLISION_POLYGON_2D_H @@ -58,6 +59,8 @@ protected: void _build_polygon(); + void _update_in_shape_owner(bool p_xform_only = false); + protected: void _notification(int p_what); static void _bind_methods(); @@ -70,6 +73,7 @@ public: Vector<Point2> get_polygon() const; virtual Rect2 _edit_get_rect() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; virtual String get_configuration_warning() const; diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp index 1cadbe83d0..0eeb6dafe5 100644 --- a/scene/2d/collision_shape_2d.cpp +++ b/scene/2d/collision_shape_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_shape_2d.h" #include "collision_object_2d.h" @@ -44,6 +45,15 @@ void CollisionShape2D::_shape_changed() { update(); } +void CollisionShape2D::_update_in_shape_owner(bool p_xform_only) { + + parent->shape_owner_set_transform(owner_id, get_transform()); + if (p_xform_only) + return; + parent->shape_owner_set_disabled(owner_id, disabled); + parent->shape_owner_set_one_way_collision(owner_id, one_way_collision); +} + void CollisionShape2D::_notification(int p_what) { switch (p_what) { @@ -56,22 +66,27 @@ void CollisionShape2D::_notification(int p_what) { if (shape.is_valid()) { parent->shape_owner_add_shape(owner_id, shape); } - parent->shape_owner_set_transform(owner_id, get_transform()); - parent->shape_owner_set_disabled(owner_id, disabled); - parent->shape_owner_set_one_way_collision(owner_id, one_way_collision); + _update_in_shape_owner(); } /*if (Engine::get_singleton()->is_editor_hint()) { //display above all else set_z_as_relative(false); - set_z(VS::CANVAS_ITEM_Z_MAX - 1); + set_z_index(VS::CANVAS_ITEM_Z_MAX - 1); }*/ } break; + case NOTIFICATION_ENTER_TREE: { + + if (parent) { + _update_in_shape_owner(); + } + + } break; case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: { if (parent) { - parent->shape_owner_set_transform(owner_id, get_transform()); + _update_in_shape_owner(true); } } break; @@ -163,6 +178,14 @@ Rect2 CollisionShape2D::_edit_get_rect() const { return rect; } +bool CollisionShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + if (!shape.is_valid()) + return false; + + return shape->_edit_is_selected_on_click(p_point, p_tolerance); +} + String CollisionShape2D::get_configuration_warning() const { if (!Object::cast_to<CollisionObject2D>(get_parent())) { diff --git a/scene/2d/collision_shape_2d.h b/scene/2d/collision_shape_2d.h index 833d9ae5cb..cdff595828 100644 --- a/scene/2d/collision_shape_2d.h +++ b/scene/2d/collision_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SHAPE_2D_H #define COLLISION_SHAPE_2D_H @@ -46,12 +47,15 @@ class CollisionShape2D : public Node2D { bool disabled; bool one_way_collision; + void _update_in_shape_owner(bool p_xform_only = false); + protected: void _notification(int p_what); static void _bind_methods(); public: virtual Rect2 _edit_get_rect() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; void set_shape(const Ref<Shape2D> &p_shape); Ref<Shape2D> get_shape() const; diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp index eec483c29e..7a96a54854 100644 --- a/scene/2d/joints_2d.cpp +++ b/scene/2d/joints_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "joints_2d.h" #include "engine.h" diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h index 9b6ba22d64..744994f0a7 100644 --- a/scene/2d/joints_2d.h +++ b/scene/2d/joints_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JOINTS_2D_H #define JOINTS_2D_H diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index a6a871be1d..999d8a2630 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "light_2d.h" #include "engine.h" diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h index 9c55f72870..b216ad5e95 100644 --- a/scene/2d/light_2d.h +++ b/scene/2d/light_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LIGHT_2D_H #define LIGHT_2D_H diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp index b95d4f8f0a..d4481583fb 100644 --- a/scene/2d/light_occluder_2d.cpp +++ b/scene/2d/light_occluder_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "light_occluder_2d.h" #include "engine.h" diff --git a/scene/2d/light_occluder_2d.h b/scene/2d/light_occluder_2d.h index a2e81ef2b4..5e16351a6f 100644 --- a/scene/2d/light_occluder_2d.h +++ b/scene/2d/light_occluder_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LIGHTOCCLUDER2D_H #define LIGHTOCCLUDER2D_H diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp index f108df140f..f0ab9652b4 100644 --- a/scene/2d/line_2d.cpp +++ b/scene/2d/line_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "line_2d.h" #include "line_builder.h" @@ -48,6 +49,32 @@ Line2D::Line2D() : _round_precision = 8; } +Rect2 Line2D::_edit_get_rect() const { + + if (_points.size() == 0) + return Rect2(0, 0, 0, 0); + Vector2 d = Vector2(_width, _width); + Rect2 aabb = Rect2(_points[0] - d, 2 * d); + for (int i = 1; i < _points.size(); i++) { + aabb.expand_to(_points[i] - d); + aabb.expand_to(_points[i] + d); + } + return aabb; +} + +bool Line2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + const real_t d = _width / 2 + p_tolerance; + PoolVector<Vector2>::Read points = _points.read(); + for (int i = 0; i < _points.size() - 1; i++) { + Vector2 p = Geometry::get_closest_point_to_segment_2d(p_point, &points[i]); + if (p.distance_to(p_point) <= d) + return true; + } + + return false; +} + void Line2D::set_points(const PoolVector<Vector2> &p_points) { _points = p_points; update(); diff --git a/scene/2d/line_2d.h b/scene/2d/line_2d.h index 123728ab39..0eba024555 100644 --- a/scene/2d/line_2d.h +++ b/scene/2d/line_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LINE2D_H #define LINE2D_H @@ -57,6 +58,9 @@ public: Line2D(); + virtual Rect2 _edit_get_rect() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_points(const PoolVector<Vector2> &p_points); PoolVector<Vector2> get_points() const; diff --git a/scene/2d/line_builder.cpp b/scene/2d/line_builder.cpp index ae2f9371a3..e78d2e9c34 100644 --- a/scene/2d/line_builder.cpp +++ b/scene/2d/line_builder.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "line_builder.h" //---------------------------------------------------------------------------- diff --git a/scene/2d/line_builder.h b/scene/2d/line_builder.h index 0b19cd4674..daa2ed7c24 100644 --- a/scene/2d/line_builder.h +++ b/scene/2d/line_builder.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LINE_BUILDER_H #define LINE_BUILDER_H diff --git a/scene/2d/navigation2d.cpp b/scene/2d/navigation2d.cpp index 8e910563ca..4737e14111 100644 --- a/scene/2d/navigation2d.cpp +++ b/scene/2d/navigation2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation2d.h" #define USE_ENTRY_POINT diff --git a/scene/2d/navigation2d.h b/scene/2d/navigation2d.h index 52c4967d3d..02c46d5de1 100644 --- a/scene/2d/navigation2d.h +++ b/scene/2d/navigation2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATION_2D_H #define NAVIGATION_2D_H diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp index 9c297db52b..6e27bf1c1d 100644 --- a/scene/2d/navigation_polygon.cpp +++ b/scene/2d/navigation_polygon.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation_polygon.h" #include "core_string_names.h" @@ -35,9 +36,50 @@ #include "thirdparty/misc/triangulator.h" +Rect2 NavigationPolygon::_edit_get_rect() const { + + if (rect_cache_dirty) { + item_rect = Rect2(); + bool first = true; + + for (int i = 0; i < outlines.size(); i++) { + const PoolVector<Vector2> &outline = outlines[i]; + const int outline_size = outline.size(); + if (outline_size < 3) + continue; + PoolVector<Vector2>::Read p = outline.read(); + for (int j = 0; j < outline_size; j++) { + if (first) { + item_rect = Rect2(p[j], Vector2(0, 0)); + first = false; + } else { + item_rect.expand_to(p[j]); + } + } + } + + rect_cache_dirty = false; + } + return item_rect; +} + +bool NavigationPolygon::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + for (int i = 0; i < outlines.size(); i++) { + const PoolVector<Vector2> &outline = outlines[i]; + const int outline_size = outline.size(); + if (outline_size < 3) + continue; + if (Geometry::is_point_in_polygon(p_point, Variant(outline))) + return true; + } + return false; +} + void NavigationPolygon::set_vertices(const PoolVector<Vector2> &p_vertices) { vertices = p_vertices; + rect_cache_dirty = true; } PoolVector<Vector2> NavigationPolygon::get_vertices() const { @@ -70,6 +112,7 @@ void NavigationPolygon::_set_outlines(const Array &p_array) { for (int i = 0; i < p_array.size(); i++) { outlines[i] = p_array[i]; } + rect_cache_dirty = true; } Array NavigationPolygon::_get_outlines() const { @@ -93,6 +136,7 @@ void NavigationPolygon::add_polygon(const Vector<int> &p_polygon) { void NavigationPolygon::add_outline_at_index(const PoolVector<Vector2> &p_outline, int p_index) { outlines.insert(p_index, p_outline); + rect_cache_dirty = true; } int NavigationPolygon::get_polygon_count() const { @@ -112,6 +156,7 @@ void NavigationPolygon::clear_polygons() { void NavigationPolygon::add_outline(const PoolVector<Vector2> &p_outline) { outlines.push_back(p_outline); + rect_cache_dirty = true; } int NavigationPolygon::get_outline_count() const { @@ -122,12 +167,14 @@ int NavigationPolygon::get_outline_count() const { void NavigationPolygon::set_outline(int p_idx, const PoolVector<Vector2> &p_outline) { ERR_FAIL_INDEX(p_idx, outlines.size()); outlines[p_idx] = p_outline; + rect_cache_dirty = true; } void NavigationPolygon::remove_outline(int p_idx) { ERR_FAIL_INDEX(p_idx, outlines.size()); outlines.remove(p_idx); + rect_cache_dirty = true; } PoolVector<Vector2> NavigationPolygon::get_outline(int p_idx) const { @@ -138,6 +185,7 @@ PoolVector<Vector2> NavigationPolygon::get_outline(int p_idx) const { void NavigationPolygon::clear_outlines() { outlines.clear(); + rect_cache_dirty = true; } void NavigationPolygon::make_polygons_from_outlines() { @@ -264,12 +312,13 @@ void NavigationPolygon::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_outlines", "outlines"), &NavigationPolygon::_set_outlines); ClassDB::bind_method(D_METHOD("_get_outlines"), &NavigationPolygon::_get_outlines); - ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_vertices", "get_vertices"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_polygons", "_get_polygons"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "outlines", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_outlines", "_get_outlines"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_vertices", "get_vertices"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_polygons", "_get_polygons"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "outlines", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_outlines", "_get_outlines"); } -NavigationPolygon::NavigationPolygon() { +NavigationPolygon::NavigationPolygon() : + rect_cache_dirty(true) { } void NavigationPolygonInstance::set_enabled(bool p_enabled) { @@ -311,6 +360,16 @@ bool NavigationPolygonInstance::is_enabled() const { ///////////////////////////// +Rect2 NavigationPolygonInstance::_edit_get_rect() const { + + return navpoly.is_valid() ? navpoly->_edit_get_rect() : Rect2(); +} + +bool NavigationPolygonInstance::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + return navpoly.is_valid() ? navpoly->_edit_is_selected_on_click(p_point, p_tolerance) : false; +} + void NavigationPolygonInstance::_notification(int p_what) { switch (p_what) { diff --git a/scene/2d/navigation_polygon.h b/scene/2d/navigation_polygon.h index febdcf2ca6..d7684c2d94 100644 --- a/scene/2d/navigation_polygon.h +++ b/scene/2d/navigation_polygon.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATION_POLYGON_H #define NAVIGATION_POLYGON_H @@ -43,6 +44,9 @@ class NavigationPolygon : public Resource { Vector<Polygon> polygons; Vector<PoolVector<Vector2> > outlines; + mutable Rect2 item_rect; + mutable bool rect_cache_dirty; + protected: static void _bind_methods(); @@ -53,6 +57,9 @@ protected: Array _get_outlines() const; public: + Rect2 _edit_get_rect() const; + bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_vertices(const PoolVector<Vector2> &p_vertices); PoolVector<Vector2> get_vertices() const; @@ -93,6 +100,9 @@ protected: static void _bind_methods(); public: + virtual Rect2 _edit_get_rect() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_enabled(bool p_enabled); bool is_enabled() const; diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp index 2a305512af..95a1cbfce3 100644 --- a/scene/2d/node_2d.cpp +++ b/scene/2d/node_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "node_2d.h" #include "message_queue.h" @@ -329,13 +330,13 @@ void Node2D::set_global_transform(const Transform2D &p_transform) { set_transform(p_transform); } -void Node2D::set_z(int p_z) { +void Node2D::set_z_index(int p_z) { ERR_FAIL_COND(p_z < VS::CANVAS_ITEM_Z_MIN); ERR_FAIL_COND(p_z > VS::CANVAS_ITEM_Z_MAX); - z = p_z; - VS::get_singleton()->canvas_item_set_z(get_canvas_item(), z); - _change_notify("z"); + z_index = p_z; + VS::get_singleton()->canvas_item_set_z_index(get_canvas_item(), z_index); + _change_notify("z_index"); } void Node2D::set_z_as_relative(bool p_enabled) { @@ -351,9 +352,9 @@ bool Node2D::is_z_relative() const { return z_relative; } -int Node2D::get_z() const { +int Node2D::get_z_index() const { - return z; + return z_index; } Transform2D Node2D::get_relative_transform_to_parent(const Node *p_parent) const { @@ -427,8 +428,8 @@ void Node2D::_bind_methods() { ClassDB::bind_method(D_METHOD("to_local", "global_point"), &Node2D::to_local); ClassDB::bind_method(D_METHOD("to_global", "local_point"), &Node2D::to_global); - ClassDB::bind_method(D_METHOD("set_z", "z"), &Node2D::set_z); - ClassDB::bind_method(D_METHOD("get_z"), &Node2D::get_z); + ClassDB::bind_method(D_METHOD("set_z_index", "z_index"), &Node2D::set_z_index); + ClassDB::bind_method(D_METHOD("get_z_index"), &Node2D::get_z_index); ClassDB::bind_method(D_METHOD("set_z_as_relative", "enable"), &Node2D::set_z_as_relative); ClassDB::bind_method(D_METHOD("is_z_relative"), &Node2D::is_z_relative); @@ -448,8 +449,8 @@ void Node2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "global_scale", PROPERTY_HINT_NONE, "", 0), "set_global_scale", "get_global_scale"); ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "global_transform", PROPERTY_HINT_NONE, "", 0), "set_global_transform", "get_global_transform"); - ADD_GROUP("Z", ""); - ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "z", PROPERTY_HINT_RANGE, itos(VS::CANVAS_ITEM_Z_MIN) + "," + itos(VS::CANVAS_ITEM_Z_MAX) + ",1"), "set_z", "get_z"); + ADD_GROUP("Z Index", ""); + ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "z_index", PROPERTY_HINT_RANGE, itos(VS::CANVAS_ITEM_Z_MIN) + "," + itos(VS::CANVAS_ITEM_Z_MAX) + ",1"), "set_z_index", "get_z_index"); ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "z_as_relative"), "set_z_as_relative", "is_z_relative"); } @@ -458,6 +459,6 @@ Node2D::Node2D() { angle = 0; _scale = Vector2(1, 1); _xform_dirty = false; - z = 0; + z_index = 0; z_relative = true; } diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h index 7d2e5aa00c..f817b214f8 100644 --- a/scene/2d/node_2d.h +++ b/scene/2d/node_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NODE2D_H #define NODE2D_H @@ -39,7 +40,7 @@ class Node2D : public CanvasItem { Point2 pos; float angle; Size2 _scale; - int z; + int z_index; bool z_relative; Transform2D _mat; @@ -96,8 +97,8 @@ public: void set_global_rotation_degrees(float p_degrees); void set_global_scale(const Size2 &p_scale); - void set_z(int p_z); - int get_z() const; + void set_z_index(int p_z); + int get_z_index() const; void look_at(const Vector2 &p_pos); float get_angle_to(const Vector2 &p_pos) const; diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp index 46d0b7647f..027d64b813 100644 --- a/scene/2d/parallax_background.cpp +++ b/scene/2d/parallax_background.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "parallax_background.h" #include "parallax_layer.h" diff --git a/scene/2d/parallax_background.h b/scene/2d/parallax_background.h index a7b745f199..31d1c553a2 100644 --- a/scene/2d/parallax_background.h +++ b/scene/2d/parallax_background.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PARALLAX_BACKGROUND_H #define PARALLAX_BACKGROUND_H diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp index 7a9ea1931e..050f98b02b 100644 --- a/scene/2d/parallax_layer.cpp +++ b/scene/2d/parallax_layer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "parallax_layer.h" #include "engine.h" diff --git a/scene/2d/parallax_layer.h b/scene/2d/parallax_layer.h index 937451c3e2..b2b98b0ef6 100644 --- a/scene/2d/parallax_layer.h +++ b/scene/2d/parallax_layer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PARALLAX_LAYER_H #define PARALLAX_LAYER_H diff --git a/scene/2d/particles_2d.cpp b/scene/2d/particles_2d.cpp index a760b8e599..7eaa5bb88c 100644 --- a/scene/2d/particles_2d.cpp +++ b/scene/2d/particles_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "particles_2d.h" #include "engine.h" diff --git a/scene/2d/particles_2d.h b/scene/2d/particles_2d.h index e7a510d8bc..f367095581 100644 --- a/scene/2d/particles_2d.h +++ b/scene/2d/particles_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PARTICLES_FRAME_H #define PARTICLES_FRAME_H diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp index 06bd55858c..052a0ac026 100644 --- a/scene/2d/path_2d.cpp +++ b/scene/2d/path_2d.cpp @@ -27,11 +27,57 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path_2d.h" #include "engine.h" #include "scene/scene_string_names.h" +#ifdef TOOLS_ENABLED +#include "editor/editor_scale.h" +#endif + +Rect2 Path2D::_edit_get_rect() const { + + if (!curve.is_valid() || curve->get_point_count() == 0) + return Rect2(0, 0, 0, 0); + + Rect2 aabb = Rect2(curve->get_point_position(0), Vector2(0, 0)); + + for (int i = 0; i < curve->get_point_count(); i++) { + + for (int j = 0; j <= 8; j++) { + + real_t frac = j / 8.0; + Vector2 p = curve->interpolate(i, frac); + aabb.expand_to(p); + } + } + + return aabb; +} + +bool Path2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + for (int i = 0; i < curve->get_point_count(); i++) { + Vector2 s[2]; + s[0] = curve->get_point_position(i); + + for (int j = 1; j <= 8; j++) { + real_t frac = j / 8.0; + s[1] = curve->interpolate(i, frac); + + Vector2 p = Geometry::get_closest_point_to_segment_2d(p_point, s); + if (p.distance_to(p_point) <= p_tolerance) + return true; + + s[0] = s[1]; + } + } + + return false; +} + void Path2D::_notification(int p_what) { if (p_what == NOTIFICATION_DRAW && curve.is_valid()) { @@ -41,6 +87,13 @@ void Path2D::_notification(int p_what) { return; } +#if TOOLS_ENABLED + const float line_width = 2 * EDSCALE; +#else + const float line_width = 2; +#endif + const Color color = Color(0.5, 0.6, 1.0, 0.7); + for (int i = 0; i < curve->get_point_count(); i++) { Vector2 prev_p = curve->get_point_position(i); @@ -49,7 +102,7 @@ void Path2D::_notification(int p_what) { real_t frac = j / 8.0; Vector2 p = curve->interpolate(i, frac); - draw_line(prev_p, p, Color(0.5, 0.6, 1.0, 0.7), 2); + draw_line(prev_p, p, color, line_width); prev_p = p; } } @@ -191,66 +244,16 @@ bool PathFollow2D::get_cubic_interpolation() const { return cubic; } -bool PathFollow2D::_set(const StringName &p_name, const Variant &p_value) { - - if (p_name == SceneStringNames::get_singleton()->offset) { - set_offset(p_value); - } else if (p_name == SceneStringNames::get_singleton()->unit_offset) { - set_unit_offset(p_value); - } else if (p_name == SceneStringNames::get_singleton()->rotate) { - set_rotate(p_value); - } else if (p_name == SceneStringNames::get_singleton()->v_offset) { - set_v_offset(p_value); - } else if (p_name == SceneStringNames::get_singleton()->h_offset) { - set_h_offset(p_value); - } else if (String(p_name) == "cubic_interp") { - set_cubic_interpolation(p_value); - } else if (String(p_name) == "loop") { - set_loop(p_value); - } else if (String(p_name) == "lookahead") { - set_lookahead(p_value); - } else - return false; - - return true; -} +void PathFollow2D::_validate_property(PropertyInfo &property) const { -bool PathFollow2D::_get(const StringName &p_name, Variant &r_ret) const { - - if (p_name == SceneStringNames::get_singleton()->offset) { - r_ret = get_offset(); - } else if (p_name == SceneStringNames::get_singleton()->unit_offset) { - r_ret = get_unit_offset(); - } else if (p_name == SceneStringNames::get_singleton()->rotate) { - r_ret = is_rotating(); - } else if (p_name == SceneStringNames::get_singleton()->v_offset) { - r_ret = get_v_offset(); - } else if (p_name == SceneStringNames::get_singleton()->h_offset) { - r_ret = get_h_offset(); - } else if (String(p_name) == "cubic_interp") { - r_ret = cubic; - } else if (String(p_name) == "loop") { - r_ret = loop; - } else if (String(p_name) == "lookahead") { - r_ret = lookahead; - } else - return false; - - return true; -} -void PathFollow2D::_get_property_list(List<PropertyInfo> *p_list) const { - - float max = 10000; - if (path && path->get_curve().is_valid()) - max = path->get_curve()->get_baked_length(); - p_list->push_back(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0," + rtos(max) + ",0.01")); - p_list->push_back(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR)); - p_list->push_back(PropertyInfo(Variant::REAL, "h_offset")); - p_list->push_back(PropertyInfo(Variant::REAL, "v_offset")); - p_list->push_back(PropertyInfo(Variant::BOOL, "rotate")); - p_list->push_back(PropertyInfo(Variant::BOOL, "cubic_interp")); - p_list->push_back(PropertyInfo(Variant::BOOL, "loop")); - p_list->push_back(PropertyInfo(Variant::REAL, "lookahead", PROPERTY_HINT_RANGE, "0.001,1024.0,0.001")); + if (property.name == "offset") { + + float max = 10000; + if (path && path->get_curve().is_valid()) + max = path->get_curve()->get_baked_length(); + + property.hint_string = "0," + rtos(max) + ",0.01"; + } } String PathFollow2D::get_configuration_warning() const { @@ -287,6 +290,18 @@ void PathFollow2D::_bind_methods() { ClassDB::bind_method(D_METHOD("set_loop", "loop"), &PathFollow2D::set_loop); ClassDB::bind_method(D_METHOD("has_loop"), &PathFollow2D::has_loop); + + ClassDB::bind_method(D_METHOD("set_lookahead", "lookahead"), &PathFollow2D::set_lookahead); + ClassDB::bind_method(D_METHOD("get_lookahead"), &PathFollow2D::get_lookahead); + + ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01"), "set_offset", "get_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", 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::BOOL, "rotate"), "set_rotate", "is_rotating"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cubic_interp"), "set_cubic_interpolation", "get_cubic_interpolation"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop"), "set_loop", "has_loop"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "lookahead", PROPERTY_HINT_RANGE, "0.001,1024.0,0.001"), "set_lookahead", "get_lookahead"); } void PathFollow2D::set_offset(float p_offset) { diff --git a/scene/2d/path_2d.h b/scene/2d/path_2d.h index ebfa77d605..735d289d74 100644 --- a/scene/2d/path_2d.h +++ b/scene/2d/path_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_2D_H #define PATH_2D_H @@ -46,6 +47,9 @@ protected: static void _bind_methods(); public: + virtual Rect2 _edit_get_rect() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_curve(const Ref<Curve2D> &p_curve); Ref<Curve2D> get_curve() const; @@ -70,9 +74,7 @@ private: void _update_transform(); protected: - bool _set(const StringName &p_name, const Variant &p_value); - bool _get(const StringName &p_name, Variant &r_ret) const; - void _get_property_list(List<PropertyInfo> *p_list) const; + virtual void _validate_property(PropertyInfo &property) const; void _notification(int p_what); static void _bind_methods(); diff --git a/scene/2d/path_texture.cpp b/scene/2d/path_texture.cpp index 59e01f7cb6..d36a9fb65a 100644 --- a/scene/2d/path_texture.cpp +++ b/scene/2d/path_texture.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path_texture.h" void PathTexture::set_begin_texture(const Ref<Texture> &p_texture) { diff --git a/scene/2d/path_texture.h b/scene/2d/path_texture.h index cfe00f3880..7a347c0653 100644 --- a/scene/2d/path_texture.h +++ b/scene/2d/path_texture.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_TEXTURE_H #define PATH_TEXTURE_H diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index ec6ff182db..cc99ce5f49 100644 --- a/scene/2d/physics_body_2d.cpp +++ b/scene/2d/physics_body_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_body_2d.h" #include "engine.h" @@ -243,6 +244,7 @@ void RigidBody2D::_body_enter_tree(ObjectID p_id) { Node *node = Object::cast_to<Node>(obj); ERR_FAIL_COND(!node); + ERR_FAIL_COND(!contact_monitor); Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id); ERR_FAIL_COND(!E); ERR_FAIL_COND(E->get().in_scene); @@ -265,6 +267,7 @@ void RigidBody2D::_body_exit_tree(ObjectID p_id) { Object *obj = ObjectDB::get_instance(p_id); Node *node = Object::cast_to<Node>(obj); ERR_FAIL_COND(!node); + ERR_FAIL_COND(!contact_monitor); Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id); ERR_FAIL_COND(!E); ERR_FAIL_COND(!E->get().in_scene); @@ -290,6 +293,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap Object *obj = ObjectDB::get_instance(objid); Node *node = Object::cast_to<Node>(obj); + ERR_FAIL_COND(!contact_monitor); Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(objid); /*if (obj) { @@ -309,7 +313,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap E->get().in_scene = node && node->is_inside_tree(); if (node) { node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid)); - node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); + node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); if (E->get().in_scene) { emit_signal(SceneStringNames::get_singleton()->body_entered, node); } @@ -338,7 +342,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap if (node) { node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); if (in_scene) emit_signal(SceneStringNames::get_singleton()->body_exited, obj); } @@ -762,6 +766,14 @@ void RigidBody2D::set_contact_monitor(bool p_enabled) { for (Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.front(); E; E = E->next()) { //clean up mess + Object *obj = ObjectDB::get_instance(E->key()); + Node *node = Object::cast_to<Node>(obj); + + if (node) { + + node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); + } } memdelete(contact_monitor); @@ -806,7 +818,7 @@ String RigidBody2D::get_configuration_warning() const { if (warning != String()) { warning += "\n"; } - warning += TTR("Size changes to RigidBody2D (in character or rigid modes) will be overriden by the physics engine when running.\nChange the size in children collision shapes instead."); + warning += TTR("Size changes to RigidBody2D (in character or rigid modes) will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."); } return warning; @@ -888,6 +900,7 @@ void RigidBody2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Rigid,Static,Character,Kinematic"), "set_mode", "get_mode"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "inertia", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", 0), "set_inertia", "get_inertia"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "weight", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", PROPERTY_USAGE_EDITOR), "set_weight", "get_weight"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce"); @@ -904,6 +917,9 @@ void RigidBody2D::_bind_methods() { ADD_GROUP("Angular", "angular_"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_velocity"), "set_angular_velocity", "get_angular_velocity"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_damp", PROPERTY_HINT_RANGE, "-1,128,0.01"), "set_angular_damp", "get_angular_damp"); + ADD_GROUP("Applied Forces", "applied_"); + ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "applied_force"), "set_applied_force", "get_applied_force"); + ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "applied_torque"), "set_applied_torque", "get_applied_torque"); ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::INT, "body_id"), PropertyInfo(Variant::OBJECT, "body"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape"))); ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::INT, "body_id"), PropertyInfo(Variant::OBJECT, "body"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape"))); diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h index a39eb09514..c755f30f2b 100644 --- a/scene/2d/physics_body_2d.h +++ b/scene/2d/physics_body_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_BODY_2D_H #define PHYSICS_BODY_2D_H diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index a2f49d938b..f6cb796b10 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -27,7 +27,9 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "polygon_2d.h" +#include "core/math/geometry.h" Rect2 Polygon2D::_edit_get_rect() const { @@ -42,13 +44,17 @@ Rect2 Polygon2D::_edit_get_rect() const { else item_rect.expand_to(pos); } - item_rect = item_rect.grow(20); rect_cache_dirty = false; } return item_rect; } +bool Polygon2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + return Geometry::is_point_in_polygon(p_point, Variant(polygon)); +} + void Polygon2D::_edit_set_pivot(const Point2 &p_pivot) { set_offset(p_pivot); @@ -377,7 +383,8 @@ void Polygon2D::_bind_methods() { ADD_GROUP("Texture", "texture_"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_offset"), "set_texture_offset", "get_texture_offset"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_scale"), "set_texture_scale", "get_texture_scale"); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_rotation", PROPERTY_HINT_RANGE, "-1440,1440,0.1"), "set_texture_rotation_degrees", "get_texture_rotation_degrees"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_rotation_degrees", PROPERTY_HINT_RANGE, "-1440,1440,0.1"), "set_texture_rotation_degrees", "get_texture_rotation_degrees"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_rotation", PROPERTY_HINT_NONE, "", 0), "set_texture_rotation", "get_texture_rotation"); ADD_GROUP("Invert", "invert_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert_enable"), "set_invert", "get_invert"); diff --git a/scene/2d/polygon_2d.h b/scene/2d/polygon_2d.h index a23e223e6e..f62c78c55b 100644 --- a/scene/2d/polygon_2d.h +++ b/scene/2d/polygon_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POLYGON_2D_H #define POLYGON_2D_H @@ -104,6 +105,7 @@ public: virtual bool _edit_use_pivot() const; virtual Rect2 _edit_get_rect() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; Polygon2D(); }; diff --git a/scene/2d/position_2d.cpp b/scene/2d/position_2d.cpp index bff7554ec3..37f6aaa2d6 100644 --- a/scene/2d/position_2d.cpp +++ b/scene/2d/position_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "position_2d.h" #include "engine.h" diff --git a/scene/2d/position_2d.h b/scene/2d/position_2d.h index e5862974fa..6f6a34c452 100644 --- a/scene/2d/position_2d.h +++ b/scene/2d/position_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POSITION_2D_H #define POSITION_2D_H diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp index d7c152b108..5a563143ad 100644 --- a/scene/2d/ray_cast_2d.cpp +++ b/scene/2d/ray_cast_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ray_cast_2d.h" #include "collision_object_2d.h" diff --git a/scene/2d/ray_cast_2d.h b/scene/2d/ray_cast_2d.h index a2e1d689fc..0850cdc7cc 100644 --- a/scene/2d/ray_cast_2d.h +++ b/scene/2d/ray_cast_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RAY_CAST_2D_H #define RAY_CAST_2D_H diff --git a/scene/2d/remote_transform_2d.cpp b/scene/2d/remote_transform_2d.cpp index c283d69f86..da764e032b 100644 --- a/scene/2d/remote_transform_2d.cpp +++ b/scene/2d/remote_transform_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "remote_transform_2d.h" #include "scene/scene_string_names.h" diff --git a/scene/2d/remote_transform_2d.h b/scene/2d/remote_transform_2d.h index cfc38ebabb..3f395f820e 100644 --- a/scene/2d/remote_transform_2d.h +++ b/scene/2d/remote_transform_2d.h @@ -27,6 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + +#ifndef REMOTE_TRANSFORM_2D_H +#define REMOTE_TRANSFORM_2D_H + #include "scene/2d/node_2d.h" class RemoteTransform2D : public Node2D { @@ -69,3 +73,5 @@ public: RemoteTransform2D(); }; + +#endif // REMOTE_TRANSFORM_2D_H diff --git a/scene/2d/screen_button.cpp b/scene/2d/screen_button.cpp index cf059ec55e..b6cb734cee 100644 --- a/scene/2d/screen_button.cpp +++ b/scene/2d/screen_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "screen_button.h" #include "input_map.h" #include "os/input.h" diff --git a/scene/2d/screen_button.h b/scene/2d/screen_button.h index ad558bb9ec..e6f2a2f3cd 100644 --- a/scene/2d/screen_button.h +++ b/scene/2d/screen_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCREEN_BUTTON_H #define SCREEN_BUTTON_H diff --git a/scene/2d/sprite.cpp b/scene/2d/sprite.cpp index c4a7e5aebd..9c344b9581 100644 --- a/scene/2d/sprite.cpp +++ b/scene/2d/sprite.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sprite.h" #include "core/core_string_names.h" #include "os/os.h" @@ -47,6 +48,40 @@ bool Sprite::_edit_use_pivot() const { return true; } +void Sprite::_get_rects(Rect2 &r_src_rect, Rect2 &r_dst_rect, bool &r_filter_clip) const { + + Size2 s; + r_filter_clip = false; + + if (region) { + + s = region_rect.size; + r_src_rect = region_rect; + r_filter_clip = region_filter_clip; + } else { + s = Size2(texture->get_size()); + s = s / Size2(hframes, vframes); + + r_src_rect.size = s; + r_src_rect.position.x += float(frame % hframes) * s.x; + r_src_rect.position.y += float(frame / hframes) * s.y; + } + + Point2 ofs = offset; + if (centered) + ofs -= s / 2; + if (Engine::get_singleton()->get_use_pixel_snap()) { + ofs = ofs.floor(); + } + + r_dst_rect = Rect2(ofs, s); + + if (hflip) + r_dst_rect.size.x = -r_dst_rect.size.x; + if (vflip) + r_dst_rect.size.y = -r_dst_rect.size.y; +} + void Sprite::_notification(int p_what) { switch (p_what) { @@ -63,38 +98,9 @@ void Sprite::_notification(int p_what) { break; */ - Size2 s; - Rect2 src_rect; - bool filter_clip = false; - - if (region) { - - s = region_rect.size; - src_rect = region_rect; - filter_clip = region_filter_clip; - } else { - s = Size2(texture->get_size()); - s = s / Size2(hframes, vframes); - - src_rect.size = s; - src_rect.position.x += float(frame % hframes) * s.x; - src_rect.position.y += float(frame / hframes) * s.y; - } - - Point2 ofs = offset; - if (centered) - ofs -= s / 2; - if (Engine::get_singleton()->get_use_pixel_snap()) { - ofs = ofs.floor(); - } - - Rect2 dst_rect(ofs, s); - - if (hflip) - dst_rect.size.x = -dst_rect.size.x; - if (vflip) - dst_rect.size.y = -dst_rect.size.y; - + Rect2 src_rect, dst_rect; + bool filter_clip; + _get_rects(src_rect, dst_rect, filter_clip); texture->draw_rect_region(ci, dst_rect, src_rect, Color(1, 1, 1), false, normal_map, filter_clip); } break; @@ -257,6 +263,30 @@ int Sprite::get_hframes() const { return hframes; } +bool Sprite::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + if (texture.is_null()) + return false; + + Rect2 src_rect, dst_rect; + bool filter_clip; + _get_rects(src_rect, dst_rect, filter_clip); + + if (!dst_rect.has_point(p_point)) + return false; + + Vector2 q = ((p_point - dst_rect.position) / dst_rect.size) * src_rect.size + src_rect.position; + + Ref<Image> image = texture->get_data(); + ERR_FAIL_COND_V(image.is_null(), false); + + image->lock(); + const Color c = image->get_pixel((int)q.x, (int)q.y); + image->unlock(); + + return c.a > 0.01; +} + Rect2 Sprite::_edit_get_rect() const { if (texture.is_null()) diff --git a/scene/2d/sprite.h b/scene/2d/sprite.h index c437f6d404..261165bbf9 100644 --- a/scene/2d/sprite.h +++ b/scene/2d/sprite.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPRITE_H #define SPRITE_H @@ -54,6 +55,8 @@ class Sprite : public Node2D { int vframes; int hframes; + void _get_rects(Rect2 &r_src_rect, Rect2 &r_dst_rect, bool &r_filter_clip) const; + protected: void _notification(int p_what); @@ -65,6 +68,7 @@ public: virtual void _edit_set_pivot(const Point2 &p_pivot); virtual Point2 _edit_get_pivot() const; virtual bool _edit_use_pivot() const; + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; virtual Rect2 _edit_get_rect() const; void set_texture(const Ref<Texture> &p_texture); diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp index 73fce4be75..361d765c97 100644 --- a/scene/2d/tile_map.cpp +++ b/scene/2d/tile_map.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tile_map.h" #include "io/marshalls.h" @@ -336,7 +337,7 @@ void TileMap::_update_dirty_quadrants() { debug_canvas_item = vs->canvas_item_create(); vs->canvas_item_set_parent(debug_canvas_item, canvas_item); vs->canvas_item_set_z_as_relative_to_parent(debug_canvas_item, false); - vs->canvas_item_set_z(debug_canvas_item, VS::CANVAS_ITEM_Z_MAX - 1); + vs->canvas_item_set_z_index(debug_canvas_item, VS::CANVAS_ITEM_Z_MAX - 1); q.canvas_items.push_back(debug_canvas_item); prev_debug_canvas_item = debug_canvas_item; } @@ -998,8 +999,8 @@ void TileMap::_set_tile_data(const PoolVector<int> &p_data) { bool flip_v = v & (1 << 30); bool transpose = v & (1 << 31); v &= (1 << 29) - 1; - int16_t coord_x; - int16_t coord_y; + int16_t coord_x = 0; + int16_t coord_y = 0; if (format == FORMAT_2) { coord_x = decode_uint16(&local[8]); coord_y = decode_uint16(&local[10]); @@ -1311,10 +1312,10 @@ bool TileMap::_get(const StringName &p_name, Variant &r_ret) const { void TileMap::_get_property_list(List<PropertyInfo> *p_list) const { - PropertyInfo p(Variant::INT, "format", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR); + PropertyInfo p(Variant::INT, "format", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL); p_list->push_back(p); - p = PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR); + p = PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL); p_list->push_back(p); } diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h index 21258f27c9..973e527b42 100644 --- a/scene/2d/tile_map.h +++ b/scene/2d/tile_map.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TILE_MAP_H #define TILE_MAP_H diff --git a/scene/2d/visibility_notifier_2d.cpp b/scene/2d/visibility_notifier_2d.cpp index cc6ee1a426..4b38534d97 100644 --- a/scene/2d/visibility_notifier_2d.cpp +++ b/scene/2d/visibility_notifier_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visibility_notifier_2d.h" #include "engine.h" @@ -218,7 +219,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) { if (add) { - p_node->connect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed", varray(p_node), CONNECT_ONESHOT); + p_node->connect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed", varray(p_node), CONNECT_ONESHOT); nodes[p_node] = meta; _change_node_state(p_node, false); } @@ -261,7 +262,7 @@ void VisibilityEnabler2D::_notification(int p_what) { if (!visible) _change_node_state(E->key(), true); - E->key()->disconnect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed"); + E->key()->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed"); } nodes.clear(); diff --git a/scene/2d/visibility_notifier_2d.h b/scene/2d/visibility_notifier_2d.h index b2fbb39dfc..93a35a709e 100644 --- a/scene/2d/visibility_notifier_2d.h +++ b/scene/2d/visibility_notifier_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISIBILITY_NOTIFIER_2D_H #define VISIBILITY_NOTIFIER_2D_H diff --git a/scene/2d/y_sort.cpp b/scene/2d/y_sort.cpp index 85c068b212..d3997c13c3 100644 --- a/scene/2d/y_sort.cpp +++ b/scene/2d/y_sort.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "y_sort.h" void YSort::set_sort_enabled(bool p_enabled) { diff --git a/scene/2d/y_sort.h b/scene/2d/y_sort.h index 63796f8719..5ff12aa25a 100644 --- a/scene/2d/y_sort.h +++ b/scene/2d/y_sort.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef Y_SORT_H #define Y_SORT_H diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp index ad8bf7141a..21f471039f 100644 --- a/scene/3d/area.cpp +++ b/scene/3d/area.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "area.h" #include "scene/scene_string_names.h" #include "servers/audio_server.h" @@ -168,7 +169,7 @@ void Area::_body_inout(int p_status, const RID &p_body, int p_instance, int p_bo E->get().in_tree = node && node->is_inside_tree(); if (node) { node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid)); - node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); + node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); if (E->get().in_tree) { emit_signal(SceneStringNames::get_singleton()->body_entered, node); } @@ -195,7 +196,7 @@ void Area::_body_inout(int p_status, const RID &p_body, int p_instance, int p_bo if (node) { node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); if (E->get().in_tree) emit_signal(SceneStringNames::get_singleton()->body_exited, obj); } @@ -245,7 +246,7 @@ void Area::_clear_monitoring() { emit_signal(SceneStringNames::get_singleton()->body_exited, obj); node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); } } @@ -275,7 +276,7 @@ void Area::_clear_monitoring() { emit_signal(SceneStringNames::get_singleton()->area_exited, obj); node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree); } } } @@ -365,7 +366,7 @@ void Area::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ar E->get().in_tree = node && node->is_inside_tree(); if (node) { node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree, make_binds(objid)); - node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid)); + node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid)); if (E->get().in_tree) { emit_signal(SceneStringNames::get_singleton()->area_entered, node); } @@ -392,7 +393,7 @@ void Area::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ar if (node) { node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree); if (E->get().in_tree) { emit_signal(SceneStringNames::get_singleton()->area_exited, obj); } diff --git a/scene/3d/area.h b/scene/3d/area.h index fa01a783f9..e49b7e493b 100644 --- a/scene/3d/area.h +++ b/scene/3d/area.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AREA_H #define AREA_H diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp index 006c3d587c..d448ef024d 100644 --- a/scene/3d/audio_stream_player_3d.cpp +++ b/scene/3d/audio_stream_player_3d.cpp @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* audio_stream_player_3d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "audio_stream_player_3d.h" #include "engine.h" #include "scene/3d/area.h" @@ -290,7 +320,7 @@ void AudioStreamPlayer3D::_notification(int p_what) { total_max = MAX(total_max, cam_area_pos.length()); } if (total_max > max_distance) { - continue; //cant hear this sound in this camera + continue; //can't hear this sound in this camera } } diff --git a/scene/3d/audio_stream_player_3d.h b/scene/3d/audio_stream_player_3d.h index 76d645dcbc..1fcb83cf21 100644 --- a/scene/3d/audio_stream_player_3d.h +++ b/scene/3d/audio_stream_player_3d.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* audio_stream_player_3d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 AUDIO_STREAM_PLAYER_3D_H #define AUDIO_STREAM_PLAYER_3D_H diff --git a/scene/3d/baked_lightmap.cpp b/scene/3d/baked_lightmap.cpp index 8c282a31b8..fa4e6492a1 100644 --- a/scene/3d/baked_lightmap.cpp +++ b/scene/3d/baked_lightmap.cpp @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* baked_lightmap.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "baked_lightmap.h" #include "io/resource_saver.h" #include "os/dir_access.h" @@ -140,11 +170,11 @@ void BakedLightmapData::_bind_methods() { ClassDB::bind_method(D_METHOD("clear_users"), &BakedLightmapData::clear_users); ADD_PROPERTY(PropertyInfo(Variant::AABB, "bounds", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_bounds", "get_bounds"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "octree", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_octree", "get_octree"); ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM, "cell_space_transform", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_cell_space_transform", "get_cell_space_transform"); ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_subdiv", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_cell_subdiv", "get_cell_subdiv"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_energy", "get_energy"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "user_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_user_data", "_get_user_data"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "octree", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_octree", "get_octree"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "user_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_user_data", "_get_user_data"); } BakedLightmapData::BakedLightmapData() { @@ -754,7 +784,7 @@ void BakedLightmap::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "capture_cell_size", PROPERTY_HINT_RANGE, "0.01,64,0.01"), "set_capture_cell_size", "get_capture_cell_size"); ADD_GROUP("Data", ""); ADD_PROPERTY(PropertyInfo(Variant::STRING, "image_path", PROPERTY_HINT_DIR), "set_image_path", "get_image_path"); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_data", PROPERTY_HINT_RESOURCE_TYPE, "BakedIndirectLightData"), "set_light_data", "get_light_data"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_data", PROPERTY_HINT_RESOURCE_TYPE, "BakedLightmapData"), "set_light_data", "get_light_data"); BIND_ENUM_CONSTANT(BAKE_QUALITY_LOW); BIND_ENUM_CONSTANT(BAKE_QUALITY_MEDIUM); diff --git a/scene/3d/baked_lightmap.h b/scene/3d/baked_lightmap.h index 9b53e41d73..60b62f74eb 100644 --- a/scene/3d/baked_lightmap.h +++ b/scene/3d/baked_lightmap.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* baked_lightmap.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 BAKED_INDIRECT_LIGHT_H #define BAKED_INDIRECT_LIGHT_H diff --git a/scene/3d/bone_attachment.cpp b/scene/3d/bone_attachment.cpp index 9e3b15461b..a875b65c22 100644 --- a/scene/3d/bone_attachment.cpp +++ b/scene/3d/bone_attachment.cpp @@ -27,45 +27,30 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "bone_attachment.h" - -bool BoneAttachment::_get(const StringName &p_name, Variant &r_ret) const { - if (String(p_name) == "bone_name") { - - r_ret = get_bone_name(); - return true; - } +#include "bone_attachment.h" - return false; -} -bool BoneAttachment::_set(const StringName &p_name, const Variant &p_value) { +void BoneAttachment::_validate_property(PropertyInfo &property) const { - if (String(p_name) == "bone_name") { + if (property.name == "bone_name") { + Skeleton *parent = Object::cast_to<Skeleton>(get_parent()); - set_bone_name(p_value); - return true; - } + if (parent) { - return false; -} -void BoneAttachment::_get_property_list(List<PropertyInfo> *p_list) const { - - Skeleton *parent = Object::cast_to<Skeleton>(get_parent()); + String names; + for (int i = 0; i < parent->get_bone_count(); i++) { + if (i > 0) + names += ","; + names += parent->get_bone_name(i); + } - if (parent) { + property.hint = PROPERTY_HINT_ENUM; + property.hint_string = names; + } else { - String names; - for (int i = 0; i < parent->get_bone_count(); i++) { - if (i > 0) - names += ","; - names += parent->get_bone_name(i); + property.hint = PROPERTY_HINT_NONE; + property.hint_string = ""; } - - p_list->push_back(PropertyInfo(Variant::STRING, "bone_name", PROPERTY_HINT_ENUM, names)); - } else { - - p_list->push_back(PropertyInfo(Variant::STRING, "bone_name")); } } @@ -137,4 +122,6 @@ BoneAttachment::BoneAttachment() { void BoneAttachment::_bind_methods() { ClassDB::bind_method(D_METHOD("set_bone_name", "bone_name"), &BoneAttachment::set_bone_name); ClassDB::bind_method(D_METHOD("get_bone_name"), &BoneAttachment::get_bone_name); + + ADD_PROPERTY(PropertyInfo(Variant::STRING, "bone_name"), "set_bone_name", "get_bone_name"); } diff --git a/scene/3d/bone_attachment.h b/scene/3d/bone_attachment.h index 57bc71a51f..81a225015e 100644 --- a/scene/3d/bone_attachment.h +++ b/scene/3d/bone_attachment.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BONE_ATTACHMENT_H #define BONE_ATTACHMENT_H @@ -43,9 +44,7 @@ class BoneAttachment : public Spatial { void _check_unbind(); protected: - bool _get(const StringName &p_name, Variant &r_ret) const; - bool _set(const StringName &p_name, const Variant &p_value); - void _get_property_list(List<PropertyInfo> *p_list) const; + virtual void _validate_property(PropertyInfo &property) const; void _notification(int p_what); static void _bind_methods(); diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index 840783c399..6998b34cfd 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "camera.h" #include "camera_matrix.h" diff --git a/scene/3d/camera.h b/scene/3d/camera.h index c24286ecc5..3fd3303a25 100644 --- a/scene/3d/camera.h +++ b/scene/3d/camera.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CAMERA_H #define CAMERA_H diff --git a/scene/3d/collision_object.cpp b/scene/3d/collision_object.cpp index e591b17aa6..07235b3da4 100644 --- a/scene/3d/collision_object.cpp +++ b/scene/3d/collision_object.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_object.h" #include "scene/scene_string_names.h" @@ -364,6 +365,20 @@ bool CollisionObject::get_capture_input_on_drag() const { return capture_input_on_drag; } +String CollisionObject::get_configuration_warning() const { + + String warning = Spatial::get_configuration_warning(); + + if (shapes.empty()) { + if (warning == String()) { + warning += "\n"; + } + warning += TTR("This node has no children shapes, so it can't interact with the space.\nConsider adding CollisionShape or CollisionPolygon children nodes to define its shape."); + } + + return warning; +} + CollisionObject::CollisionObject() { capture_input_on_drag = false; diff --git a/scene/3d/collision_object.h b/scene/3d/collision_object.h index c1fed559c5..f31d65e411 100644 --- a/scene/3d/collision_object.h +++ b/scene/3d/collision_object.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_OBJECT_H #define COLLISION_OBJECT_H @@ -108,6 +109,8 @@ public: _FORCE_INLINE_ RID get_rid() const { return rid; } + virtual String get_configuration_warning() const; + CollisionObject(); ~CollisionObject(); }; diff --git a/scene/3d/collision_polygon.cpp b/scene/3d/collision_polygon.cpp index 7d894a0544..3a77360bc2 100644 --- a/scene/3d/collision_polygon.cpp +++ b/scene/3d/collision_polygon.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_polygon.h" #include "collision_object.h" @@ -72,6 +73,14 @@ void CollisionPolygon::_build_polygon() { } } +void CollisionPolygon::_update_in_shape_owner(bool p_xform_only) { + + parent->shape_owner_set_transform(owner_id, get_transform()); + if (p_xform_only) + return; + parent->shape_owner_set_disabled(owner_id, disabled); +} + void CollisionPolygon::_notification(int p_what) { switch (p_what) { @@ -81,14 +90,20 @@ void CollisionPolygon::_notification(int p_what) { if (parent) { owner_id = parent->create_shape_owner(this); _build_polygon(); - parent->shape_owner_set_transform(owner_id, get_transform()); - parent->shape_owner_set_disabled(owner_id, disabled); + _update_in_shape_owner(); } } break; + case NOTIFICATION_ENTER_TREE: { + + if (parent) { + _update_in_shape_owner(); + } + + } break; case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: { if (parent) { - parent->shape_owner_set_transform(owner_id, get_transform()); + _update_in_shape_owner(true); } } break; diff --git a/scene/3d/collision_polygon.h b/scene/3d/collision_polygon.h index b979057da1..971c67f1ad 100644 --- a/scene/3d/collision_polygon.h +++ b/scene/3d/collision_polygon.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_POLYGON_H #define COLLISION_POLYGON_H @@ -50,6 +51,8 @@ protected: void _build_polygon(); + void _update_in_shape_owner(bool p_xform_only = false); + protected: void _notification(int p_what); static void _bind_methods(); diff --git a/scene/3d/collision_shape.cpp b/scene/3d/collision_shape.cpp index b5f3a09c09..943f4158f7 100644 --- a/scene/3d/collision_shape.cpp +++ b/scene/3d/collision_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_shape.h" #include "scene/resources/box_shape.h" #include "scene/resources/capsule_shape.h" @@ -63,6 +64,14 @@ void CollisionShape::make_convex_from_brothers() { } } +void CollisionShape::_update_in_shape_owner(bool p_xform_only) { + + parent->shape_owner_set_transform(owner_id, get_transform()); + if (p_xform_only) + return; + parent->shape_owner_set_disabled(owner_id, disabled); +} + void CollisionShape::_notification(int p_what) { switch (p_what) { @@ -74,19 +83,20 @@ void CollisionShape::_notification(int p_what) { if (shape.is_valid()) { parent->shape_owner_add_shape(owner_id, shape); } - parent->shape_owner_set_transform(owner_id, get_transform()); - parent->shape_owner_set_disabled(owner_id, disabled); + _update_in_shape_owner(); } } break; case NOTIFICATION_ENTER_TREE: { + if (parent) { + _update_in_shape_owner(); + } if (get_tree()->is_debugging_collisions_hint()) { _create_debug_shape(); } - } break; case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: { if (parent) { - parent->shape_owner_set_transform(owner_id, get_transform()); + _update_in_shape_owner(true); } } break; case NOTIFICATION_UNPARENTED: { diff --git a/scene/3d/collision_shape.h b/scene/3d/collision_shape.h index 4728d3d5c1..c9c91a5824 100644 --- a/scene/3d/collision_shape.h +++ b/scene/3d/collision_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SHAPE_H #define COLLISION_SHAPE_H @@ -50,6 +51,8 @@ class CollisionShape : public Spatial { void _create_debug_shape(); + void _update_in_shape_owner(bool p_xform_only = false); + protected: void _notification(int p_what); static void _bind_methods(); diff --git a/scene/3d/gi_probe.cpp b/scene/3d/gi_probe.cpp index 21e8a6e17a..4ad2eb60ee 100644 --- a/scene/3d/gi_probe.cpp +++ b/scene/3d/gi_probe.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gi_probe.h" #include "mesh_instance.h" @@ -534,7 +535,7 @@ void GIProbe::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "normal_bias", PROPERTY_HINT_RANGE, "0,4,0.001"), "set_normal_bias", "get_normal_bias"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "interior"), "set_interior", "is_interior"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "compress"), "set_compress", "is_compressed"); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "GIProbeData"), "set_probe_data", "get_probe_data"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "GIProbeData", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE), "set_probe_data", "get_probe_data"); BIND_ENUM_CONSTANT(SUBDIV_64); BIND_ENUM_CONSTANT(SUBDIV_128); diff --git a/scene/3d/gi_probe.h b/scene/3d/gi_probe.h index af3c854f1f..af4b646590 100644 --- a/scene/3d/gi_probe.h +++ b/scene/3d/gi_probe.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GIPROBE_H #define GIPROBE_H diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp index 8d8c1b65fc..14a0b0505d 100644 --- a/scene/3d/immediate_geometry.cpp +++ b/scene/3d/immediate_geometry.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "immediate_geometry.h" void ImmediateGeometry::begin(Mesh::PrimitiveType p_primitive, const Ref<Texture> &p_texture) { diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h index abcabf2c34..f7201b4bba 100644 --- a/scene/3d/immediate_geometry.h +++ b/scene/3d/immediate_geometry.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef IMMEDIATE_GEOMETRY_H #define IMMEDIATE_GEOMETRY_H diff --git a/scene/3d/interpolated_camera.cpp b/scene/3d/interpolated_camera.cpp index 03f82e0e44..9865fe156a 100644 --- a/scene/3d/interpolated_camera.cpp +++ b/scene/3d/interpolated_camera.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "interpolated_camera.h" #include "engine.h" diff --git a/scene/3d/interpolated_camera.h b/scene/3d/interpolated_camera.h index d74b13c214..b025112295 100644 --- a/scene/3d/interpolated_camera.h +++ b/scene/3d/interpolated_camera.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef INTERPOLATED_CAMERA_H #define INTERPOLATED_CAMERA_H diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp index 04c1f9e3e8..240bd631a1 100644 --- a/scene/3d/light.cpp +++ b/scene/3d/light.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "light.h" #include "engine.h" diff --git a/scene/3d/light.h b/scene/3d/light.h index 2639e47217..b35b397ced 100644 --- a/scene/3d/light.h +++ b/scene/3d/light.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LIGHT_H #define LIGHT_H diff --git a/scene/3d/listener.cpp b/scene/3d/listener.cpp index 752a2059f5..439c1f8c45 100644 --- a/scene/3d/listener.cpp +++ b/scene/3d/listener.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "listener.h" #include "scene/resources/mesh.h" diff --git a/scene/3d/listener.h b/scene/3d/listener.h index db8dca8ce2..8047971ebd 100644 --- a/scene/3d/listener.h +++ b/scene/3d/listener.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LISTENER_H #define LISTENER_H diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp index cffcbd9a41..80bae911d4 100644 --- a/scene/3d/mesh_instance.cpp +++ b/scene/3d/mesh_instance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mesh_instance.h" #include "collision_shape.h" diff --git a/scene/3d/mesh_instance.h b/scene/3d/mesh_instance.h index 74041a46bc..5d359cd4d5 100644 --- a/scene/3d/mesh_instance.h +++ b/scene/3d/mesh_instance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MESH_INSTANCE_H #define MESH_INSTANCE_H diff --git a/scene/3d/multimesh_instance.cpp b/scene/3d/multimesh_instance.cpp index a6a8d434fa..4cbd1df64a 100644 --- a/scene/3d/multimesh_instance.cpp +++ b/scene/3d/multimesh_instance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "multimesh_instance.h" void MultiMeshInstance::_bind_methods() { diff --git a/scene/3d/multimesh_instance.h b/scene/3d/multimesh_instance.h index 312748b6f0..1cd077a0a5 100644 --- a/scene/3d/multimesh_instance.h +++ b/scene/3d/multimesh_instance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MULTIMESH_INSTANCE_H #define MULTIMESH_INSTANCE_H diff --git a/scene/3d/navigation.cpp b/scene/3d/navigation.cpp index 5d41fe576b..e7ab6cde8a 100644 --- a/scene/3d/navigation.cpp +++ b/scene/3d/navigation.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation.h" void Navigation::_navmesh_link(int p_id) { diff --git a/scene/3d/navigation.h b/scene/3d/navigation.h index a5a4deebcd..5a501039c8 100644 --- a/scene/3d/navigation.h +++ b/scene/3d/navigation.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATION_H #define NAVIGATION_H diff --git a/scene/3d/navigation_mesh.cpp b/scene/3d/navigation_mesh.cpp index 3e548b8e8f..073e56fdb4 100644 --- a/scene/3d/navigation_mesh.cpp +++ b/scene/3d/navigation_mesh.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "navigation_mesh.h" #include "mesh_instance.h" #include "navigation.h" @@ -404,8 +405,8 @@ void NavigationMesh::_bind_methods() { BIND_CONSTANT(SAMPLE_PARTITION_MONOTONE); BIND_CONSTANT(SAMPLE_PARTITION_LAYERS); - ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_vertices", "get_vertices"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_polygons", "_get_polygons"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_vertices", "get_vertices"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_polygons", "_get_polygons"); ADD_PROPERTY(PropertyInfo(Variant::INT, "sample_partition_type/sample_partition_type", PROPERTY_HINT_ENUM, "Watershed,Monotone,Layers"), "set_sample_partition_type", "get_sample_partition_type"); diff --git a/scene/3d/navigation_mesh.h b/scene/3d/navigation_mesh.h index 0a81e1c67b..753ad76edc 100644 --- a/scene/3d/navigation_mesh.h +++ b/scene/3d/navigation_mesh.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NAVIGATION_MESH_H #define NAVIGATION_MESH_H diff --git a/scene/3d/particles.cpp b/scene/3d/particles.cpp index fda4647141..8617bbc2f6 100644 --- a/scene/3d/particles.cpp +++ b/scene/3d/particles.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "particles.h" #include "scene/resources/surface_tool.h" #include "servers/visual_server.h" @@ -1596,4 +1597,21 @@ ParticlesMaterial::ParticlesMaterial() : } ParticlesMaterial::~ParticlesMaterial() { + + if (material_mutex) + material_mutex->lock(); + + if (shader_map.has(current_key)) { + shader_map[current_key].users--; + if (shader_map[current_key].users == 0) { + //deallocate shader, as it's no longer in use + VS::get_singleton()->free(shader_map[current_key].shader); + shader_map.erase(current_key); + } + + VS::get_singleton()->material_set_shader(_get_material(), RID()); + } + + if (material_mutex) + material_mutex->unlock(); } diff --git a/scene/3d/particles.h b/scene/3d/particles.h index ebd2b6ce48..17e21c6cee 100644 --- a/scene/3d/particles.h +++ b/scene/3d/particles.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALINSTANCEPARTICLES_H #define VISUALINSTANCEPARTICLES_H diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp index e0520fdb7c..7ac7f74bb0 100644 --- a/scene/3d/path.cpp +++ b/scene/3d/path.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "path.h" #include "engine.h" @@ -189,61 +190,16 @@ bool PathFollow::get_cubic_interpolation() const { return cubic; } -bool PathFollow::_set(const StringName &p_name, const Variant &p_value) { - - if (p_name == SceneStringNames::get_singleton()->offset) { - set_offset(p_value); - } else if (p_name == SceneStringNames::get_singleton()->unit_offset) { - set_unit_offset(p_value); - } else if (p_name == SceneStringNames::get_singleton()->rotation_mode) { - set_rotation_mode(RotationMode(p_value.operator int())); - } else if (p_name == SceneStringNames::get_singleton()->v_offset) { - set_v_offset(p_value); - } else if (p_name == SceneStringNames::get_singleton()->h_offset) { - set_h_offset(p_value); - } else if (String(p_name) == "cubic_interp") { - set_cubic_interpolation(p_value); - } else if (String(p_name) == "loop") { - set_loop(p_value); - } else - return false; - - return true; -} +void PathFollow::_validate_property(PropertyInfo &property) const { -bool PathFollow::_get(const StringName &p_name, Variant &r_ret) const { - - if (p_name == SceneStringNames::get_singleton()->offset) { - r_ret = get_offset(); - } else if (p_name == SceneStringNames::get_singleton()->unit_offset) { - r_ret = get_unit_offset(); - } else if (p_name == SceneStringNames::get_singleton()->rotation_mode) { - r_ret = get_rotation_mode(); - } else if (p_name == SceneStringNames::get_singleton()->v_offset) { - r_ret = get_v_offset(); - } else if (p_name == SceneStringNames::get_singleton()->h_offset) { - r_ret = get_h_offset(); - } else if (String(p_name) == "cubic_interp") { - r_ret = cubic; - } else if (String(p_name) == "loop") { - r_ret = loop; - } else - return false; - - return true; -} -void PathFollow::_get_property_list(List<PropertyInfo> *p_list) const { - - float max = 10000; - if (path && path->get_curve().is_valid()) - max = path->get_curve()->get_baked_length(); - p_list->push_back(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0," + rtos(max) + ",0.01")); - p_list->push_back(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR)); - p_list->push_back(PropertyInfo(Variant::REAL, "h_offset")); - p_list->push_back(PropertyInfo(Variant::REAL, "v_offset")); - p_list->push_back(PropertyInfo(Variant::INT, "rotation_mode", PROPERTY_HINT_ENUM, "None,Y,XY,XYZ")); - p_list->push_back(PropertyInfo(Variant::BOOL, "cubic_interp")); - p_list->push_back(PropertyInfo(Variant::BOOL, "loop")); + if (property.name == "offset") { + + float max = 10000; + if (path && path->get_curve().is_valid()) + max = path->get_curve()->get_baked_length(); + + property.hint_string = "0," + rtos(max) + ",0.01"; + } } void PathFollow::_bind_methods() { @@ -269,6 +225,14 @@ 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"), "set_offset", "get_offset"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", 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"), "set_rotation_mode", "get_rotation_mode"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cubic_interp"), "set_cubic_interpolation", "get_cubic_interpolation"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop"), "set_loop", "has_loop"); + BIND_ENUM_CONSTANT(ROTATION_NONE); BIND_ENUM_CONSTANT(ROTATION_Y); BIND_ENUM_CONSTANT(ROTATION_XY); diff --git a/scene/3d/path.h b/scene/3d/path.h index 7c3e0f35cc..2ed686ac3c 100644 --- a/scene/3d/path.h +++ b/scene/3d/path.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PATH_H #define PATH_H @@ -78,9 +79,7 @@ private: void _update_transform(); protected: - bool _set(const StringName &p_name, const Variant &p_value); - bool _get(const StringName &p_name, Variant &r_ret) const; - void _get_property_list(List<PropertyInfo> *p_list) const; + virtual void _validate_property(PropertyInfo &property) const; void _notification(int p_what); static void _bind_methods(); diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index 4c4e4bf1e6..25acd6deb0 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_body.h" #include "engine.h" @@ -257,6 +258,7 @@ void RigidBody::_body_enter_tree(ObjectID p_id) { Node *node = Object::cast_to<Node>(obj); ERR_FAIL_COND(!node); + ERR_FAIL_COND(!contact_monitor); Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id); ERR_FAIL_COND(!E); ERR_FAIL_COND(E->get().in_tree); @@ -280,6 +282,7 @@ void RigidBody::_body_exit_tree(ObjectID p_id) { Object *obj = ObjectDB::get_instance(p_id); Node *node = Object::cast_to<Node>(obj); ERR_FAIL_COND(!node); + ERR_FAIL_COND(!contact_monitor); Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id); ERR_FAIL_COND(!E); ERR_FAIL_COND(!E->get().in_tree); @@ -305,6 +308,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape, Object *obj = ObjectDB::get_instance(objid); Node *node = Object::cast_to<Node>(obj); + ERR_FAIL_COND(!contact_monitor); Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(objid); ERR_FAIL_COND(!body_in && !E); @@ -317,7 +321,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape, E->get().in_tree = node && node->is_inside_tree(); if (node) { node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid)); - node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); + node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid)); if (E->get().in_tree) { emit_signal(SceneStringNames::get_singleton()->body_entered, node); } @@ -344,7 +348,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape, if (node) { node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); - node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); if (in_tree) emit_signal(SceneStringNames::get_singleton()->body_exited, obj); } @@ -718,6 +722,14 @@ void RigidBody::set_contact_monitor(bool p_enabled) { for (Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.front(); E; E = E->next()) { //clean up mess + Object *obj = ObjectDB::get_instance(E->key()); + Node *node = Object::cast_to<Node>(obj); + + if (node) { + + node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree); + node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree); + } } memdelete(contact_monitor); @@ -771,7 +783,7 @@ String RigidBody::get_configuration_warning() const { if (warning != String()) { warning += "\n"; } - warning += TTR("Size changes to RigidBody (in character or rigid modes) will be overriden by the physics engine when running.\nChange the size in children collision shapes instead."); + warning += TTR("Size changes to RigidBody (in character or rigid modes) will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."); } return warning; diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h index f64733e707..c7556c0c5f 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_BODY__H #define PHYSICS_BODY__H @@ -114,7 +115,7 @@ public: MODE_KINEMATIC, }; -private: +protected: bool can_sleep; PhysicsDirectBodyState *state; Mode mode; @@ -177,9 +178,8 @@ private: void _body_exit_tree(ObjectID p_id); void _body_inout(int p_status, ObjectID p_instance, int p_body_shape, int p_local_shape); - void _direct_state_changed(Object *p_state); + virtual void _direct_state_changed(Object *p_state); -protected: void _notification(int p_what); static void _bind_methods(); diff --git a/scene/3d/physics_joint.cpp b/scene/3d/physics_joint.cpp index c36e684477..fed6d76f65 100644 --- a/scene/3d/physics_joint.cpp +++ b/scene/3d/physics_joint.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_joint.h" void Joint::_update_joint(bool p_only_free) { diff --git a/scene/3d/physics_joint.h b/scene/3d/physics_joint.h index 1520c40cdd..000109ac55 100644 --- a/scene/3d/physics_joint.h +++ b/scene/3d/physics_joint.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_JOINT_H #define PHYSICS_JOINT_H diff --git a/scene/3d/portal.cpp b/scene/3d/portal.cpp index 35ef6fa2f1..d16d9ed7c5 100644 --- a/scene/3d/portal.cpp +++ b/scene/3d/portal.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "portal.h" #include "project_settings.h" #include "scene/resources/surface_tool.h" diff --git a/scene/3d/portal.h b/scene/3d/portal.h index 545dd61650..cb3f208072 100644 --- a/scene/3d/portal.h +++ b/scene/3d/portal.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PORTAL_H #define PORTAL_H diff --git a/scene/3d/position_3d.cpp b/scene/3d/position_3d.cpp index 955c54a008..3ae04f491f 100644 --- a/scene/3d/position_3d.cpp +++ b/scene/3d/position_3d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "position_3d.h" #include "scene/resources/mesh.h" diff --git a/scene/3d/position_3d.h b/scene/3d/position_3d.h index 59512ea108..2bc69eff9b 100644 --- a/scene/3d/position_3d.h +++ b/scene/3d/position_3d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POSITION_3D_H #define POSITION_3D_H diff --git a/scene/3d/proximity_group.cpp b/scene/3d/proximity_group.cpp index 7daf43aefd..101d9ed70c 100644 --- a/scene/3d/proximity_group.cpp +++ b/scene/3d/proximity_group.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "proximity_group.h" #include "math_funcs.h" @@ -111,11 +112,6 @@ void ProximityGroup::_new_group(StringName p_name) { groups[p_name] = group_version; }; -void ProximityGroup::set_group_name(String p_group_name) { - - group_name = p_group_name; -}; - void ProximityGroup::_notification(int p_what) { switch (p_what) { @@ -152,9 +148,24 @@ void ProximityGroup::_proximity_group_broadcast(String p_name, Variant p_params) }; }; -void ProximityGroup::set_dispatch_mode(int p_mode) { +void ProximityGroup::set_group_name(const String &p_group_name) { + + group_name = p_group_name; +}; + +String ProximityGroup::get_group_name() const { + + return group_name; +}; + +void ProximityGroup::set_dispatch_mode(DispatchMode p_mode) { + + dispatch_mode = p_mode; +}; + +ProximityGroup::DispatchMode ProximityGroup::get_dispatch_mode() const { - dispatch_mode = (DispatchMode)p_mode; + return dispatch_mode; }; void ProximityGroup::set_grid_radius(const Vector3 &p_radius) { @@ -170,15 +181,22 @@ Vector3 ProximityGroup::get_grid_radius() const { void ProximityGroup::_bind_methods() { ClassDB::bind_method(D_METHOD("set_group_name", "name"), &ProximityGroup::set_group_name); - ClassDB::bind_method(D_METHOD("broadcast", "name", "parameters"), &ProximityGroup::broadcast); + ClassDB::bind_method(D_METHOD("get_group_name"), &ProximityGroup::get_group_name); ClassDB::bind_method(D_METHOD("set_dispatch_mode", "mode"), &ProximityGroup::set_dispatch_mode); - ClassDB::bind_method(D_METHOD("_proximity_group_broadcast", "name", "params"), &ProximityGroup::_proximity_group_broadcast); + ClassDB::bind_method(D_METHOD("get_dispatch_mode"), &ProximityGroup::get_dispatch_mode); ClassDB::bind_method(D_METHOD("set_grid_radius", "radius"), &ProximityGroup::set_grid_radius); ClassDB::bind_method(D_METHOD("get_grid_radius"), &ProximityGroup::get_grid_radius); + ClassDB::bind_method(D_METHOD("broadcast", "name", "parameters"), &ProximityGroup::broadcast); + ClassDB::bind_method(D_METHOD("_proximity_group_broadcast", "name", "params"), &ProximityGroup::_proximity_group_broadcast); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "group_name"), "set_group_name", "get_group_name"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "dispatch_mode", PROPERTY_HINT_ENUM, "Proxy,Signal"), "set_dispatch_mode", "get_dispatch_mode"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "grid_radius"), "set_grid_radius", "get_grid_radius"); - ADD_SIGNAL(MethodInfo("broadcast", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::ARRAY, "parameters"))); + ADD_SIGNAL(MethodInfo("broadcast", PropertyInfo(Variant::STRING, "group_name"), PropertyInfo(Variant::ARRAY, "parameters"))); + + BIND_ENUM_CONSTANT(MODE_PROXY); + BIND_ENUM_CONSTANT(MODE_SIGNAL); }; ProximityGroup::ProximityGroup() { diff --git a/scene/3d/proximity_group.h b/scene/3d/proximity_group.h index 7c61c0f949..448f30bf80 100644 --- a/scene/3d/proximity_group.h +++ b/scene/3d/proximity_group.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROXIMITY_GROUP_H #define PROXIMITY_GROUP_H @@ -66,15 +67,21 @@ public: static void _bind_methods(); public: - void set_group_name(String p_group_name); - void broadcast(String p_name, Variant p_params); - void set_dispatch_mode(int p_mode); + void set_group_name(const String &p_group_name); + String get_group_name() const; + + void set_dispatch_mode(DispatchMode p_mode); + DispatchMode get_dispatch_mode() const; void set_grid_radius(const Vector3 &p_radius); Vector3 get_grid_radius() const; + void broadcast(String p_name, Variant p_params); + ProximityGroup(); ~ProximityGroup(); }; +VARIANT_ENUM_CAST(ProximityGroup::DispatchMode); + #endif diff --git a/scene/3d/ray_cast.cpp b/scene/3d/ray_cast.cpp index 962af4b244..dd5ae8a999 100644 --- a/scene/3d/ray_cast.cpp +++ b/scene/3d/ray_cast.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ray_cast.h" #include "collision_object.h" @@ -216,6 +217,8 @@ void RayCast::_update_raycast_state() { against_shape = rr.shape; } else { collided = false; + against = 0; + against_shape = 0; } } diff --git a/scene/3d/ray_cast.h b/scene/3d/ray_cast.h index c44fd907e5..20cea80700 100644 --- a/scene/3d/ray_cast.h +++ b/scene/3d/ray_cast.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RAY_CAST_H #define RAY_CAST_H diff --git a/scene/3d/reflection_probe.cpp b/scene/3d/reflection_probe.cpp index b8fa50357a..2178da02b5 100644 --- a/scene/3d/reflection_probe.cpp +++ b/scene/3d/reflection_probe.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "reflection_probe.h" void ReflectionProbe::set_intensity(float p_intensity) { @@ -194,7 +195,7 @@ void ReflectionProbe::_validate_property(PropertyInfo &property) const { if (property.name == "interior/ambient_color" || property.name == "interior/ambient_energy" || property.name == "interior/ambient_contrib") { if (!interior) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } } diff --git a/scene/3d/reflection_probe.h b/scene/3d/reflection_probe.h index 742e4121f7..13ae1c81f6 100644 --- a/scene/3d/reflection_probe.h +++ b/scene/3d/reflection_probe.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REFLECTIONPROBE_H #define REFLECTIONPROBE_H diff --git a/scene/3d/remote_transform.h b/scene/3d/remote_transform.h index 5fc9b071b0..6b788a2d75 100644 --- a/scene/3d/remote_transform.h +++ b/scene/3d/remote_transform.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REMOTETRANSFORM_H #define REMOTETRANSFORM_H diff --git a/scene/3d/room_instance.cpp b/scene/3d/room_instance.cpp index 94ad07c617..0d83a9942e 100644 --- a/scene/3d/room_instance.cpp +++ b/scene/3d/room_instance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "room_instance.h" #include "servers/visual_server.h" diff --git a/scene/3d/room_instance.h b/scene/3d/room_instance.h index dc066c73c3..ff388e606c 100644 --- a/scene/3d/room_instance.h +++ b/scene/3d/room_instance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ROOM_INSTANCE_H #define ROOM_INSTANCE_H diff --git a/scene/3d/scenario_fx.cpp b/scene/3d/scenario_fx.cpp index cefe3e46f3..02768ac91f 100644 --- a/scene/3d/scenario_fx.cpp +++ b/scene/3d/scenario_fx.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scenario_fx.h" #include "scene/main/viewport.h" diff --git a/scene/3d/scenario_fx.h b/scene/3d/scenario_fx.h index 3a8a927f88..7a8e2b548f 100644 --- a/scene/3d/scenario_fx.h +++ b/scene/3d/scenario_fx.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENARIO_FX_H #define SCENARIO_FX_H diff --git a/scene/3d/skeleton.cpp b/scene/3d/skeleton.cpp index ef60a2151d..d3a13c741e 100644 --- a/scene/3d/skeleton.cpp +++ b/scene/3d/skeleton.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "skeleton.h" #include "message_queue.h" @@ -60,7 +61,7 @@ bool Skeleton::_set(const StringName &p_path, const Variant &p_value) { set_bone_enabled(which, p_value); else if (what == "pose") set_bone_pose(which, p_value); - else if (what == "bound_childs") { + else if (what == "bound_children") { Array children = p_value; if (is_inside_tree()) { @@ -104,7 +105,7 @@ bool Skeleton::_get(const StringName &p_path, Variant &r_ret) const { r_ret = is_bone_enabled(which); else if (what == "pose") r_ret = get_bone_pose(which); - else if (what == "bound_childs") { + else if (what == "bound_children") { Array children; for (const List<uint32_t>::Element *E = bones[which].nodes_bound.front(); E; E = E->next()) { @@ -133,7 +134,7 @@ void Skeleton::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::TRANSFORM, prep + "rest")); p_list->push_back(PropertyInfo(Variant::BOOL, prep + "enabled")); p_list->push_back(PropertyInfo(Variant::TRANSFORM, prep + "pose", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR)); - p_list->push_back(PropertyInfo(Variant::ARRAY, prep + "bound_childs")); + p_list->push_back(PropertyInfo(Variant::ARRAY, prep + "bound_children")); } } @@ -160,14 +161,14 @@ void Skeleton::_notification(int p_what) { //if moved, just update transforms VisualServer *vs = VisualServer::get_singleton(); - Bone *bonesptr = &bones[0]; + const Bone *bonesptr = bones.ptr(); int len = bones.size(); Transform global_transform = get_global_transform(); Transform global_transform_inverse = global_transform.affine_inverse(); for (int i = 0; i < len; i++) { - Bone &b = bonesptr[i]; + const Bone &b = bonesptr[i]; vs->skeleton_bone_set_transform(skeleton, i, global_transform * (b.transform_final * global_transform_inverse)); } } break; diff --git a/scene/3d/skeleton.h b/scene/3d/skeleton.h index 1b999d91c3..d693670055 100644 --- a/scene/3d/skeleton.h +++ b/scene/3d/skeleton.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SKELETON_H #define SKELETON_H @@ -82,12 +83,12 @@ class Skeleton : public Spatial { Array _get_bound_child_nodes_to_bone(int p_bone) const { Array bound; - List<Node *> childs; - get_bound_child_nodes_to_bone(p_bone, &childs); + List<Node *> children; + get_bound_child_nodes_to_bone(p_bone, &children); - for (int i = 0; i < childs.size(); i++) { + for (int i = 0; i < children.size(); i++) { - bound.push_back(childs[i]); + bound.push_back(children[i]); } return bound; } diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp index 8b5c85763a..721641e09b 100644 --- a/scene/3d/spatial.cpp +++ b/scene/3d/spatial.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "spatial.h" #include "engine.h" @@ -555,30 +556,36 @@ bool Spatial::is_visible() const { return data.visible; } -void Spatial::rotate(const Vector3 &p_normal, float p_radians) { +void Spatial::rotate_object_local(const Vector3 &p_axis, float p_angle) { + Transform t = get_transform(); + t.basis.rotate_local(p_axis, p_angle); + set_transform(t); +} + +void Spatial::rotate(const Vector3 &p_axis, float p_angle) { Transform t = get_transform(); - t.basis.rotate_local(p_normal, p_radians); //use local rotation here, as it makes more sense here in tree hierarchy + t.basis.rotate(p_axis, p_angle); set_transform(t); } -void Spatial::rotate_x(float p_radians) { +void Spatial::rotate_x(float p_angle) { Transform t = get_transform(); - t.basis.rotate_local(Vector3(1, 0, 0), p_radians); + t.basis.rotate(Vector3(1, 0, 0), p_angle); set_transform(t); } -void Spatial::rotate_y(float p_radians) { +void Spatial::rotate_y(float p_angle) { Transform t = get_transform(); - t.basis.rotate_local(Vector3(0, 1, 0), p_radians); + t.basis.rotate(Vector3(0, 1, 0), p_angle); set_transform(t); } -void Spatial::rotate_z(float p_radians) { +void Spatial::rotate_z(float p_angle) { Transform t = get_transform(); - t.basis.rotate_local(Vector3(0, 0, 1), p_radians); + t.basis.rotate(Vector3(0, 0, 1), p_angle); set_transform(t); } @@ -589,19 +596,45 @@ void Spatial::translate(const Vector3 &p_offset) { set_transform(t); } +void Spatial::translate_object_local(const Vector3 &p_offset) { + Transform t = get_transform(); + + Transform s; + s.translate(p_offset); + set_transform(t * s); +} + void Spatial::scale(const Vector3 &p_ratio) { Transform t = get_transform(); t.basis.scale(p_ratio); set_transform(t); } -void Spatial::global_rotate(const Vector3 &p_normal, float p_radians) { - Basis rotation(p_normal, p_radians); +void Spatial::scale_object_local(const Vector3 &p_scale) { + Transform t = get_transform(); + t.basis.scale_local(p_scale); + set_transform(t); +} + +void Spatial::global_rotate(const Vector3 &p_axis, float p_angle) { + + Basis rotation(p_axis, p_angle); Transform t = get_global_transform(); t.basis = rotation * t.basis; set_global_transform(t); } + +void Spatial::global_scale(const Vector3 &p_scale) { + + Basis s; + s.set_scale(p_scale); + + Transform t = get_global_transform(); + t.basis = s * t.basis; + set_global_transform(t); +} + void Spatial::global_translate(const Vector3 &p_offset) { Transform t = get_global_transform(); t.origin += p_offset; @@ -620,7 +653,7 @@ void Spatial::set_identity() { set_transform(Transform()); } -void Spatial::look_at(const Vector3 &p_target, const Vector3 &p_up_normal) { +void Spatial::look_at(const Vector3 &p_target, const Vector3 &p_up) { Transform lookat; lookat.origin = get_global_transform().origin; @@ -629,19 +662,19 @@ void Spatial::look_at(const Vector3 &p_target, const Vector3 &p_up_normal) { ERR_FAIL(); } - if (p_up_normal.cross(p_target - lookat.origin) == Vector3()) { + if (p_up.cross(p_target - lookat.origin) == Vector3()) { ERR_EXPLAIN("Up vector and direction between node origin and target are aligned, look_at() failed"); ERR_FAIL(); } - lookat = lookat.looking_at(p_target, p_up_normal); + lookat = lookat.looking_at(p_target, p_up); set_global_transform(lookat); } -void Spatial::look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up_normal) { +void Spatial::look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up) { Transform lookat; lookat.origin = p_pos; - lookat = lookat.looking_at(p_target, p_up_normal); + lookat = lookat.looking_at(p_target, p_up); set_global_transform(lookat); } @@ -677,9 +710,9 @@ void Spatial::_bind_methods() { ClassDB::bind_method(D_METHOD("get_transform"), &Spatial::get_transform); ClassDB::bind_method(D_METHOD("set_translation", "translation"), &Spatial::set_translation); ClassDB::bind_method(D_METHOD("get_translation"), &Spatial::get_translation); - ClassDB::bind_method(D_METHOD("set_rotation", "radians"), &Spatial::set_rotation); + ClassDB::bind_method(D_METHOD("set_rotation", "euler"), &Spatial::set_rotation); ClassDB::bind_method(D_METHOD("get_rotation"), &Spatial::get_rotation); - ClassDB::bind_method(D_METHOD("set_rotation_degrees", "degrees"), &Spatial::set_rotation_degrees); + ClassDB::bind_method(D_METHOD("set_rotation_degrees", "euler_degrees"), &Spatial::set_rotation_degrees); ClassDB::bind_method(D_METHOD("get_rotation_degrees"), &Spatial::get_rotation_degrees); ClassDB::bind_method(D_METHOD("set_scale", "scale"), &Spatial::set_scale); ClassDB::bind_method(D_METHOD("get_scale"), &Spatial::get_scale); @@ -711,22 +744,26 @@ void Spatial::_bind_methods() { ClassDB::bind_method(D_METHOD("set_notify_transform", "enable"), &Spatial::set_notify_transform); ClassDB::bind_method(D_METHOD("is_transform_notification_enabled"), &Spatial::is_transform_notification_enabled); - void rotate(const Vector3 &p_normal, float p_radians); - void rotate_x(float p_radians); - void rotate_y(float p_radians); - void rotate_z(float p_radians); + void rotate(const Vector3 &p_axis, float p_angle); + void rotate_x(float p_angle); + void rotate_y(float p_angle); + void rotate_z(float p_angle); void translate(const Vector3 &p_offset); void scale(const Vector3 &p_ratio); - void global_rotate(const Vector3 &p_normal, float p_radians); + void global_rotate(const Vector3 &p_axis, float p_angle); void global_translate(const Vector3 &p_offset); - ClassDB::bind_method(D_METHOD("rotate", "normal", "radians"), &Spatial::rotate); - ClassDB::bind_method(D_METHOD("global_rotate", "normal", "radians"), &Spatial::global_rotate); - ClassDB::bind_method(D_METHOD("rotate_x", "radians"), &Spatial::rotate_x); - ClassDB::bind_method(D_METHOD("rotate_y", "radians"), &Spatial::rotate_y); - ClassDB::bind_method(D_METHOD("rotate_z", "radians"), &Spatial::rotate_z); - ClassDB::bind_method(D_METHOD("translate", "offset"), &Spatial::translate); + ClassDB::bind_method(D_METHOD("rotate", "axis", "angle"), &Spatial::rotate); + ClassDB::bind_method(D_METHOD("global_rotate", "axis", "angle"), &Spatial::global_rotate); + ClassDB::bind_method(D_METHOD("global_scale", "scale"), &Spatial::global_scale); ClassDB::bind_method(D_METHOD("global_translate", "offset"), &Spatial::global_translate); + ClassDB::bind_method(D_METHOD("rotate_object_local", "axis", "angle"), &Spatial::rotate_object_local); + ClassDB::bind_method(D_METHOD("scale_object_local", "scale"), &Spatial::scale_object_local); + ClassDB::bind_method(D_METHOD("translate_object_local", "offset"), &Spatial::translate_object_local); + ClassDB::bind_method(D_METHOD("rotate_x", "angle"), &Spatial::rotate_x); + ClassDB::bind_method(D_METHOD("rotate_y", "angle"), &Spatial::rotate_y); + ClassDB::bind_method(D_METHOD("rotate_z", "angle"), &Spatial::rotate_z); + ClassDB::bind_method(D_METHOD("translate", "offset"), &Spatial::translate); ClassDB::bind_method(D_METHOD("orthonormalize"), &Spatial::orthonormalize); ClassDB::bind_method(D_METHOD("set_identity"), &Spatial::set_identity); @@ -751,7 +788,9 @@ void Spatial::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_scale", "get_scale"); ADD_GROUP("Visibility", ""); ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible"); - //ADD_PROPERTY( PropertyInfo(Variant::TRANSFORM,"transform/local"), "set_transform", "get_transform") ; +#ifdef TOOLS_ENABLED + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "gizmo", PROPERTY_HINT_RESOURCE_TYPE, "SpatialGizmo", 0), "set_gizmo", "get_gizmo"); +#endif ADD_SIGNAL(MethodInfo("visibility_changed")); } diff --git a/scene/3d/spatial.h b/scene/3d/spatial.h index 5ebe2f5214..518bba9a51 100644 --- a/scene/3d/spatial.h +++ b/scene/3d/spatial.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPATIAL_H #define SPATIAL_H @@ -158,17 +159,23 @@ public: Transform get_relative_transform(const Node *p_parent) const; - void rotate(const Vector3 &p_normal, float p_radians); - void rotate_x(float p_radians); - void rotate_y(float p_radians); - void rotate_z(float p_radians); + void rotate(const Vector3 &p_axis, float p_angle); + void rotate_x(float p_angle); + void rotate_y(float p_angle); + void rotate_z(float p_angle); void translate(const Vector3 &p_offset); void scale(const Vector3 &p_ratio); - void global_rotate(const Vector3 &p_normal, float p_radians); + + void rotate_object_local(const Vector3 &p_axis, float p_angle); + void scale_object_local(const Vector3 &p_scale); + void translate_object_local(const Vector3 &p_offset); + + void global_rotate(const Vector3 &p_axis, float p_angle); + void global_scale(const Vector3 &p_scale); void global_translate(const Vector3 &p_offset); - void look_at(const Vector3 &p_target, const Vector3 &p_up_normal); - void look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up_normal); + void look_at(const Vector3 &p_target, const Vector3 &p_up); + void look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up); Vector3 to_local(Vector3 p_global) const; Vector3 to_global(Vector3 p_local) const; diff --git a/scene/3d/spatial_velocity_tracker.cpp b/scene/3d/spatial_velocity_tracker.cpp index 1c7423e645..c547e76e30 100644 --- a/scene/3d/spatial_velocity_tracker.cpp +++ b/scene/3d/spatial_velocity_tracker.cpp @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* spatial_velocity_tracker.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 "spatial_velocity_tracker.h" #include "engine.h" @@ -95,6 +125,8 @@ void SpatialVelocityTracker::_bind_methods() { ClassDB::bind_method(D_METHOD("update_position", "position"), &SpatialVelocityTracker::update_position); ClassDB::bind_method(D_METHOD("get_tracked_linear_velocity"), &SpatialVelocityTracker::get_tracked_linear_velocity); ClassDB::bind_method(D_METHOD("reset", "position"), &SpatialVelocityTracker::reset); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "track_physics_step"), "set_track_physics_step", "is_tracking_physics_step"); } SpatialVelocityTracker::SpatialVelocityTracker() { diff --git a/scene/3d/spatial_velocity_tracker.h b/scene/3d/spatial_velocity_tracker.h index c4371ff1f7..a8278a4fb5 100644 --- a/scene/3d/spatial_velocity_tracker.h +++ b/scene/3d/spatial_velocity_tracker.h @@ -1,3 +1,33 @@ +/*************************************************************************/ +/* spatial_velocity_tracker.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (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 SPATIAL_VELOCITY_TRACKER_H #define SPATIAL_VELOCITY_TRACKER_H diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index 6bd673c7a2..232855c978 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sprite_3d.h" #include "core_string_names.h" #include "scene/scene_string_names.h" diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h index 0ec8f4d668..23e1d96b4b 100644 --- a/scene/3d/sprite_3d.h +++ b/scene/3d/sprite_3d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPRITE_3D_H #define SPRITE_3D_H diff --git a/scene/3d/vehicle_body.cpp b/scene/3d/vehicle_body.cpp index d9918c0b62..ed3bde9504 100644 --- a/scene/3d/vehicle_body.cpp +++ b/scene/3d/vehicle_body.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "vehicle_body.h" #define ROLLING_INFLUENCE_FIX @@ -374,7 +375,7 @@ void VehicleBody::_update_wheel(int p_idx, PhysicsDirectBodyState *s) { Basis steeringMat(up, steering); - Basis rotatingMat(right, -wheel.m_rotation); + Basis rotatingMat(right, wheel.m_rotation); /* if (p_idx==1) @@ -571,7 +572,7 @@ void VehicleBody::_resolve_single_bilateral(PhysicsDirectBodyState *s, const Vec b2invmass); // FIXME: rel_vel assignment here is overwritten by the following assignment. - // What seemes to be intented in the next next assignment is: rel_vel = normal.dot(rel_vel); + // What seemes to be intended in the next next assignment is: rel_vel = normal.dot(rel_vel); // Investigate why. real_t rel_vel = jac.getRelativeVelocity( s->get_linear_velocity(), @@ -815,26 +816,24 @@ void VehicleBody::_update_friction(PhysicsDirectBodyState *s) { void VehicleBody::_direct_state_changed(Object *p_state) { - PhysicsDirectBodyState *s = Object::cast_to<PhysicsDirectBodyState>(p_state); + RigidBody::_direct_state_changed(p_state); - set_ignore_transform_notification(true); - set_global_transform(s->get_transform()); - set_ignore_transform_notification(false); + state = Object::cast_to<PhysicsDirectBodyState>(p_state); - float step = s->get_step(); + float step = state->get_step(); for (int i = 0; i < wheels.size(); i++) { - _update_wheel(i, s); + _update_wheel(i, state); } for (int i = 0; i < wheels.size(); i++) { - _ray_cast(i, s); - wheels[i]->set_transform(s->get_transform().inverse() * wheels[i]->m_worldTransform); + _ray_cast(i, state); + wheels[i]->set_transform(state->get_transform().inverse() * wheels[i]->m_worldTransform); } - _update_suspension(s); + _update_suspension(state); for (int i = 0; i < wheels.size(); i++) { @@ -847,21 +846,21 @@ void VehicleBody::_direct_state_changed(Object *p_state) { suspensionForce = wheel.m_maxSuspensionForce; } Vector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step; - Vector3 relpos = wheel.m_raycastInfo.m_contactPointWS - s->get_transform().origin; + Vector3 relpos = wheel.m_raycastInfo.m_contactPointWS - state->get_transform().origin; - s->apply_impulse(relpos, impulse); + state->apply_impulse(relpos, impulse); //getRigidBody()->applyImpulse(impulse, relpos); } - _update_friction(s); + _update_friction(state); for (int i = 0; i < wheels.size(); i++) { VehicleWheel &wheel = *wheels[i]; - Vector3 relpos = wheel.m_raycastInfo.m_hardPointWS - s->get_transform().origin; - Vector3 vel = s->get_linear_velocity() + (s->get_angular_velocity()).cross(relpos); // * mPos); + Vector3 relpos = wheel.m_raycastInfo.m_hardPointWS - state->get_transform().origin; + Vector3 vel = state->get_linear_velocity() + (state->get_angular_velocity()).cross(relpos); // * mPos); if (wheel.m_raycastInfo.m_isInContact) { - const Transform &chassisWorldTransform = s->get_transform(); + const Transform &chassisWorldTransform = state->get_transform(); Vector3 fwd( chassisWorldTransform.basis[0][Vector3::AXIS_Z], @@ -882,29 +881,8 @@ void VehicleBody::_direct_state_changed(Object *p_state) { wheel.m_deltaRotation *= real_t(0.99); //damping of rotation when not in contact } - linear_velocity = s->get_linear_velocity(); -} - -void VehicleBody::set_mass(real_t p_mass) { - - mass = p_mass; - PhysicsServer::get_singleton()->body_set_param(get_rid(), PhysicsServer::BODY_PARAM_MASS, mass); -} - -real_t VehicleBody::get_mass() const { - - return mass; -} - -void VehicleBody::set_friction(real_t p_friction) { - friction = p_friction; - PhysicsServer::get_singleton()->body_set_param(get_rid(), PhysicsServer::BODY_PARAM_FRICTION, friction); -} - -real_t VehicleBody::get_friction() const { - - return friction; + state = NULL; } void VehicleBody::set_engine_force(float p_engine_force) { @@ -935,18 +913,8 @@ float VehicleBody::get_steering() const { return m_steeringValue; } -Vector3 VehicleBody::get_linear_velocity() const { - return linear_velocity; -} - void VehicleBody::_bind_methods() { - ClassDB::bind_method(D_METHOD("set_mass", "mass"), &VehicleBody::set_mass); - ClassDB::bind_method(D_METHOD("get_mass"), &VehicleBody::get_mass); - - ClassDB::bind_method(D_METHOD("set_friction", "friction"), &VehicleBody::set_friction); - ClassDB::bind_method(D_METHOD("get_friction"), &VehicleBody::get_friction); - ClassDB::bind_method(D_METHOD("set_engine_force", "engine_force"), &VehicleBody::set_engine_force); ClassDB::bind_method(D_METHOD("get_engine_force"), &VehicleBody::get_engine_force); @@ -956,21 +924,14 @@ void VehicleBody::_bind_methods() { ClassDB::bind_method(D_METHOD("set_steering", "steering"), &VehicleBody::set_steering); ClassDB::bind_method(D_METHOD("get_steering"), &VehicleBody::get_steering); - ClassDB::bind_method(D_METHOD("get_linear_velocity"), &VehicleBody::get_linear_velocity); - - ClassDB::bind_method(D_METHOD("_direct_state_changed"), &VehicleBody::_direct_state_changed); - ADD_GROUP("Motion", ""); ADD_PROPERTY(PropertyInfo(Variant::REAL, "engine_force", PROPERTY_HINT_RANGE, "0.00,1024.0,0.01"), "set_engine_force", "get_engine_force"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "brake", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_brake", "get_brake"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "steering", PROPERTY_HINT_RANGE, "-180,180.0,0.01"), "set_steering", "get_steering"); - ADD_GROUP("Mass", ""); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_RANGE, "0.01,65536,0.01"), "set_mass", "get_mass"); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0.01,1,0.01"), "set_friction", "get_friction"); } VehicleBody::VehicleBody() : - PhysicsBody(PhysicsServer::BODY_MODE_RIGID) { + RigidBody() { m_pitchControl = 0; m_currentVehicleSpeedKmHour = real_t(0.); @@ -981,10 +942,11 @@ VehicleBody::VehicleBody() : friction = 1; + state = NULL; ccd = false; exclude.insert(get_rid()); - PhysicsServer::get_singleton()->body_set_force_integration_callback(get_rid(), this, "_direct_state_changed"); + //PhysicsServer::get_singleton()->body_set_force_integration_callback(get_rid(), this, "_direct_state_changed"); set_mass(40); } diff --git a/scene/3d/vehicle_body.h b/scene/3d/vehicle_body.h index b4420e95e7..7810a42e8a 100644 --- a/scene/3d/vehicle_body.h +++ b/scene/3d/vehicle_body.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VEHICLE_BODY_H #define VEHICLE_BODY_H @@ -138,20 +139,13 @@ public: VehicleWheel(); }; -class VehicleBody : public PhysicsBody { - - GDCLASS(VehicleBody, PhysicsBody); +class VehicleBody : public RigidBody { - real_t mass; - real_t friction; + GDCLASS(VehicleBody, RigidBody); float engine_force; float brake; - Vector3 linear_velocity; - Vector3 angular_velocity; - bool ccd; - real_t m_pitchControl; real_t m_steeringValue; real_t m_currentVehicleSpeedKmHour; @@ -191,12 +185,6 @@ class VehicleBody : public PhysicsBody { void _direct_state_changed(Object *p_state); public: - void set_mass(real_t p_mass); - real_t get_mass() const; - - void set_friction(real_t p_friction); - real_t get_friction() const; - void set_engine_force(float p_engine_force); float get_engine_force() const; @@ -206,8 +194,6 @@ public: void set_steering(float p_steering); float get_steering() const; - Vector3 get_linear_velocity() const; - VehicleBody(); }; diff --git a/scene/3d/visibility_notifier.cpp b/scene/3d/visibility_notifier.cpp index e6c660bad7..9d6e4941f3 100644 --- a/scene/3d/visibility_notifier.cpp +++ b/scene/3d/visibility_notifier.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visibility_notifier.h" #include "engine.h" @@ -169,7 +170,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) { if (add) { - p_node->connect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed", varray(p_node), CONNECT_ONESHOT); + p_node->connect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed", varray(p_node), CONNECT_ONESHOT); nodes[p_node] = meta; _change_node_state(p_node, false); } @@ -207,7 +208,7 @@ void VisibilityEnabler::_notification(int p_what) { if (!visible) _change_node_state(E->key(), true); - E->key()->disconnect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed"); + E->key()->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed"); } nodes.clear(); @@ -239,7 +240,7 @@ void VisibilityEnabler::_node_removed(Node *p_node) { if (!visible) _change_node_state(p_node, true); - p_node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed"); + 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 ae17939e12..b1985f4a0c 100644 --- a/scene/3d/visibility_notifier.h +++ b/scene/3d/visibility_notifier.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISIBILITY_NOTIFIER_H #define VISIBILITY_NOTIFIER_H diff --git a/scene/3d/visual_instance.cpp b/scene/3d/visual_instance.cpp index 7497f35d29..00541a7d8a 100644 --- a/scene/3d/visual_instance.cpp +++ b/scene/3d/visual_instance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_instance.h" #include "scene/scene_string_names.h" diff --git a/scene/3d/visual_instance.h b/scene/3d/visual_instance.h index 34f035c9f8..8458a343b2 100644 --- a/scene/3d/visual_instance.h +++ b/scene/3d/visual_instance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_INSTANCE_H #define VISUAL_INSTANCE_H diff --git a/scene/3d/voxel_light_baker.cpp b/scene/3d/voxel_light_baker.cpp index e1717a56f3..d389b69ef3 100644 --- a/scene/3d/voxel_light_baker.cpp +++ b/scene/3d/voxel_light_baker.cpp @@ -461,16 +461,16 @@ void VoxelLightBaker::_plot_face(int p_idx, int p_level, int p_x, int p_y, int p } } - if (bake_cells[p_idx].childs[i] == CHILD_EMPTY) { + if (bake_cells[p_idx].children[i] == CHILD_EMPTY) { //sub cell must be created uint32_t child_idx = bake_cells.size(); - bake_cells[p_idx].childs[i] = child_idx; + bake_cells[p_idx].children[i] = child_idx; bake_cells.resize(bake_cells.size() + 1); bake_cells[child_idx].level = p_level + 1; } - _plot_face(bake_cells[p_idx].childs[i], p_level + 1, nx, ny, nz, p_vtx, p_normal, p_uv, p_material, aabb); + _plot_face(bake_cells[p_idx].children[i], p_level + 1, nx, ny, nz, p_vtx, p_normal, p_uv, p_material, aabb); } } } @@ -700,7 +700,7 @@ void VoxelLightBaker::_init_light_plot(int p_idx, int p_level, int p_x, int p_y, int half = (1 << (cell_subdiv - 1)) >> (p_level + 1); for (int i = 0; i < 8; i++) { - uint32_t child = bake_cells[p_idx].childs[i]; + uint32_t child = bake_cells[p_idx].children[i]; if (child == CHILD_EMPTY) continue; @@ -809,7 +809,7 @@ uint32_t VoxelLightBaker::_find_cell_at_pos(const Cell *cells, int x, int y, int ofs_z += half; } - cell = bc->childs[child]; + cell = bc->children[child]; if (cell == CHILD_EMPTY) return CHILD_EMPTY; @@ -1257,7 +1257,7 @@ void VoxelLightBaker::_fixup_plot(int p_idx, int p_level) { for (int i = 0; i < 8; i++) { - uint32_t child = bake_cells[p_idx].childs[i]; + uint32_t child = bake_cells[p_idx].children[i]; if (child == CHILD_EMPTY) continue; @@ -1483,7 +1483,7 @@ void VoxelLightBaker::_sample_baked_octree_filtered_and_anisotropic(const Vector ofs_z += half; } - cell = bc->childs[child]; + cell = bc->children[child]; if (cell == CHILD_EMPTY) break; @@ -1766,7 +1766,7 @@ Vector3 VoxelLightBaker::_compute_ray_trace_at_pos(const Vector3 &p_pos, const V ofs_z += half; } - cell = bc->childs[child]; + cell = bc->children[child]; if (unlikely(cell == CHILD_EMPTY)) break; @@ -1928,7 +1928,7 @@ Error VoxelLightBaker::make_lightmap(const Transform &p_xform, Ref<Mesh> &p_mesh for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (lightmap_ptr[i * width + j].normal == Vector3()) - continue; //empty, dont write over it anyway + continue; //empty, don't write over it anyway float gauss_sum = gauss_kernel[0]; Vector3 accum = lightmap_ptr[i * width + j].pos * gauss_kernel[0]; for (int k = 1; k < 4; k++) { @@ -2191,7 +2191,7 @@ PoolVector<int> VoxelLightBaker::create_gi_probe_data() { for (int i = 0; i < bake_cells.size(); i++) { for (int j = 0; j < 8; j++) { - w32[ofs++] = bake_cells[i].childs[j]; + w32[ofs++] = bake_cells[i].children[j]; } { //albedo @@ -2275,7 +2275,7 @@ void VoxelLightBaker::_debug_mesh(int p_idx, int p_level, const AABB &p_aabb, Re for (int i = 0; i < 8; i++) { - uint32_t child = bake_cells[p_idx].childs[i]; + uint32_t child = bake_cells[p_idx].children[i]; if (child == CHILD_EMPTY || child >= max_original_cells) continue; @@ -2290,7 +2290,7 @@ void VoxelLightBaker::_debug_mesh(int p_idx, int p_level, const AABB &p_aabb, Re if (i & 4) aabb.position.z += aabb.size.z; - _debug_mesh(bake_cells[p_idx].childs[i], p_level + 1, aabb, p_multimesh, idx, p_mode); + _debug_mesh(bake_cells[p_idx].children[i], p_level + 1, aabb, p_multimesh, idx, p_mode); } } } @@ -2423,7 +2423,7 @@ PoolVector<uint8_t> VoxelLightBaker::create_capture_octree(int p_subdiv) { } for (int j = 0; j < 8; j++) { - uint32_t child = bake_cells[demap[i]].childs[j]; + uint32_t child = bake_cells[demap[i]].children[j]; octree[i].children[j] = child == CHILD_EMPTY ? CHILD_EMPTY : remap[child]; } } diff --git a/scene/3d/voxel_light_baker.h b/scene/3d/voxel_light_baker.h index d270a26a2a..6a1f1253a3 100644 --- a/scene/3d/voxel_light_baker.h +++ b/scene/3d/voxel_light_baker.h @@ -60,7 +60,7 @@ private: struct Cell { - uint32_t childs[8]; + uint32_t children[8]; float albedo[3]; //albedo in RGB24 float emission[3]; //accumulated light in 16:16 fixed point (needs to be integer for moving lights fast) float normal[3]; @@ -70,7 +70,7 @@ private: Cell() { for (int i = 0; i < 8; i++) { - childs[i] = CHILD_EMPTY; + children[i] = CHILD_EMPTY; } for (int i = 0; i < 3; i++) { diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp index 76043436df..949a0be3bc 100644 --- a/scene/animation/animation_cache.cpp +++ b/scene/animation/animation_cache.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation_cache.h" void AnimationCache::_node_exit_tree(Node *p_node) { @@ -55,7 +56,7 @@ void AnimationCache::_clear_cache() { while (connected_nodes.size()) { - connected_nodes.front()->get()->disconnect("tree_exited", this, "_node_exit_tree"); + connected_nodes.front()->get()->disconnect("tree_exiting", this, "_node_exit_tree"); connected_nodes.erase(connected_nodes.front()); } path_cache.clear(); @@ -180,7 +181,7 @@ void AnimationCache::_update_cache() { if (!connected_nodes.has(path.node)) { connected_nodes.insert(path.node); - path.node->connect("tree_exited", this, "_node_exit_tree", Node::make_binds(path.node), CONNECT_ONESHOT); + path.node->connect("tree_exiting", this, "_node_exit_tree", Node::make_binds(path.node), CONNECT_ONESHOT); } } diff --git a/scene/animation/animation_cache.h b/scene/animation/animation_cache.h index 63c1f243ef..cf28236376 100644 --- a/scene/animation/animation_cache.h +++ b/scene/animation/animation_cache.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_CACHE_H #define ANIMATION_CACHE_H diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index 6463180d9e..9db4a5fb04 100644 --- a/scene/animation/animation_player.cpp +++ b/scene/animation/animation_player.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation_player.h" #include "engine.h" @@ -48,24 +49,15 @@ bool AnimationPlayer::_set(const StringName &p_name, const Variant &p_value) { String name = p_name; - if (p_name == SceneStringNames::get_singleton()->playback_speed || p_name == SceneStringNames::get_singleton()->speed) { //bw compatibility - set_speed_scale(p_value); - - } else if (p_name == SceneStringNames::get_singleton()->playback_active) { - set_active(p_value); - } else if (name.begins_with("playback/play")) { + if (name.begins_with("playback/play")) { // bw compatibility - String which = p_value; + set_current_animation(p_value); - if (which == "[stop]") - stop(); - else - play(which); } else if (name.begins_with("anims/")) { String which = name.get_slicec('/', 1); - add_animation(which, p_value); + } else if (name.begins_with("next/")) { String which = name.get_slicec('/', 1); @@ -86,9 +78,6 @@ bool AnimationPlayer::_set(const StringName &p_name, const Variant &p_value) { set_blend_time(from, to, time); } - } else if (p_name == SceneStringNames::get_singleton()->autoplay) { - autoplay = p_value; - } else return false; @@ -99,24 +88,15 @@ bool AnimationPlayer::_get(const StringName &p_name, Variant &r_ret) const { String name = p_name; - if (name == "playback/speed") { //bw compatibility - - r_ret = speed_scale; - } else if (name == "playback/active") { - - r_ret = is_active(); - } else if (name == "playback/play") { + if (name == "playback/play") { // bw compatibility - if (is_active() && is_playing()) - r_ret = playback.assigned; - else - r_ret = "[stop]"; + r_ret = get_current_animation(); } else if (name.begins_with("anims/")) { String which = name.get_slicec('/', 1); - r_ret = get_animation(which).get_ref_ptr(); + } else if (name.begins_with("next/")) { String which = name.get_slicec('/', 1); @@ -140,27 +120,43 @@ bool AnimationPlayer::_get(const StringName &p_name, Variant &r_ret) const { } r_ret = array; - } else if (name == "autoplay") { - r_ret = autoplay; - } else return false; return true; } -void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const { +void AnimationPlayer::_validate_property(PropertyInfo &property) const { + + if (property.name == "current_animation") { + List<String> names; + + for (Map<StringName, AnimationData>::Element *E = animation_set.front(); E; E = E->next()) { + names.push_back(E->key()); + } + names.sort(); + names.push_front("[stop]"); + String hint; + for (List<String>::Element *E = names.front(); E; E = E->next()) { + + if (E != names.front()) + hint += ","; + hint += E->get(); + } - List<String> names; + property.hint_string = hint; + } +} + +void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const { List<PropertyInfo> anim_names; for (Map<StringName, AnimationData>::Element *E = animation_set.front(); E; E = E->next()) { - anim_names.push_back(PropertyInfo(Variant::OBJECT, "anims/" + String(E->key()), PROPERTY_HINT_RESOURCE_TYPE, "Animation", PROPERTY_USAGE_NOEDITOR)); + anim_names.push_back(PropertyInfo(Variant::OBJECT, "anims/" + String(E->key()), PROPERTY_HINT_RESOURCE_TYPE, "Animation", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE)); if (E->get().next != StringName()) - anim_names.push_back(PropertyInfo(Variant::STRING, "next/" + String(E->key()), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - names.push_back(E->key()); + anim_names.push_back(PropertyInfo(Variant::STRING, "next/" + String(E->key()), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } anim_names.sort(); @@ -169,24 +165,7 @@ void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(E->get()); } - { - names.sort(); - names.push_front("[stop]"); - String hint; - for (List<String>::Element *E = names.front(); E; E = E->next()) { - - if (E != names.front()) - hint += ","; - hint += E->get(); - } - - p_list->push_back(PropertyInfo(Variant::STRING, "playback/play", PROPERTY_HINT_ENUM, hint, PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_ANIMATE_AS_TRIGGER)); - p_list->push_back(PropertyInfo(Variant::BOOL, "playback/active", PROPERTY_HINT_NONE, "")); - p_list->push_back(PropertyInfo(Variant::REAL, "playback/speed", PROPERTY_HINT_RANGE, "-64,64,0.01")); - } - - p_list->push_back(PropertyInfo(Variant::ARRAY, "blend_times", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::STRING, "autoplay", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::ARRAY, "blend_times", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } void AnimationPlayer::advance(float p_time) { @@ -275,8 +254,8 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim) { } { - if (!child->is_connected("tree_exited", this, "_node_removed")) - child->connect("tree_exited", this, "_node_removed", make_binds(child), CONNECT_ONESHOT); + if (!child->is_connected("tree_exiting", this, "_node_removed")) + child->connect("tree_exiting", this, "_node_removed", make_binds(child), CONNECT_ONESHOT); } TrackNodeCacheKey key; @@ -547,12 +526,14 @@ void AnimationPlayer::_animation_process_data(PlaybackData &cd, float p_delta, f if (!backwards && cd.pos <= len && next_pos == len /*&& playback.blend.empty()*/) { //playback finished - end_notify = true; + end_reached = true; + end_notify = cd.pos < len; // Notify only if not already at the end } if (backwards && cd.pos >= 0 && next_pos == 0 /*&& playback.blend.empty()*/) { //playback finished - end_notify = true; + end_reached = true; + end_notify = cd.pos > 0; // Notify only if not already at the beginning } } @@ -679,24 +660,26 @@ void AnimationPlayer::_animation_process(float p_delta) { if (playback.current.from) { + end_reached = false; end_notify = false; _animation_process2(p_delta); _animation_update_transforms(); - if (end_notify) { + if (end_reached) { if (queued.size()) { String old = playback.assigned; play(queued.front()->get()); String new_name = playback.assigned; queued.pop_front(); - end_notify = false; - emit_signal(SceneStringNames::get_singleton()->animation_changed, old, new_name); + if (end_notify) + emit_signal(SceneStringNames::get_singleton()->animation_changed, old, new_name); } else { //stop(); playing = false; _set_process(false); - end_notify = false; - emit_signal(SceneStringNames::get_singleton()->animation_finished, playback.assigned); + if (end_notify) + emit_signal(SceneStringNames::get_singleton()->animation_finished, playback.assigned); } + end_reached = false; } } else { @@ -954,7 +937,7 @@ void AnimationPlayer::play(const StringName &p_name, float p_custom_blend, float c.current.speed_scale = p_custom_scale; c.assigned = p_name; - if (!end_notify) + if (!end_reached) queued.clear(); _set_process(true); // always process when starting an animation playing = true; @@ -985,10 +968,27 @@ bool AnimationPlayer::is_playing() const { }; return true; - */ + */ } + void AnimationPlayer::set_current_animation(const String &p_anim) { + if (p_anim == "[stop]" || p_anim == "") { + stop(); + } else if (!is_playing() || playback.assigned != p_anim) { + play(p_anim); + } else { + // Same animation, do not replay from start + } +} + +String AnimationPlayer::get_current_animation() const { + + return (is_playing() ? playback.assigned : ""); +} + +void AnimationPlayer::set_assigned_animation(const String &p_anim) { + if (is_playing()) { play(p_anim); } else { @@ -999,9 +999,9 @@ void AnimationPlayer::set_current_animation(const String &p_anim) { } } -String AnimationPlayer::get_current_animation() const { +String AnimationPlayer::get_assigned_animation() const { - return (playback.assigned); + return playback.assigned; } void AnimationPlayer::stop(bool p_reset) { @@ -1028,8 +1028,10 @@ float AnimationPlayer::get_speed_scale() const { void AnimationPlayer::seek(float p_time, bool p_update) { if (!playback.current.from) { - if (playback.assigned) - set_current_animation(playback.assigned); + if (playback.assigned) { + ERR_FAIL_COND(!animation_set.has(playback.assigned)); + playback.current.from = &animation_set[playback.assigned]; + } ERR_FAIL_COND(!playback.current.from); } @@ -1042,8 +1044,10 @@ void AnimationPlayer::seek(float p_time, bool p_update) { void AnimationPlayer::seek_delta(float p_time, float p_delta) { if (!playback.current.from) { - if (playback.assigned) - set_current_animation(playback.assigned); + if (playback.assigned) { + ERR_FAIL_COND(!animation_set.has(playback.assigned)); + playback.current.from = &animation_set[playback.assigned]; + } ERR_FAIL_COND(!playback.current.from); } @@ -1301,6 +1305,8 @@ void AnimationPlayer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_current_animation", "anim"), &AnimationPlayer::set_current_animation); ClassDB::bind_method(D_METHOD("get_current_animation"), &AnimationPlayer::get_current_animation); + ClassDB::bind_method(D_METHOD("set_assigned_animation", "anim"), &AnimationPlayer::set_assigned_animation); + ClassDB::bind_method(D_METHOD("get_assigned_animation"), &AnimationPlayer::get_assigned_animation); ClassDB::bind_method(D_METHOD("queue", "name"), &AnimationPlayer::queue); ClassDB::bind_method(D_METHOD("clear_queue"), &AnimationPlayer::clear_queue); @@ -1329,14 +1335,22 @@ void AnimationPlayer::_bind_methods() { ClassDB::bind_method(D_METHOD("seek", "seconds", "update"), &AnimationPlayer::seek, DEFVAL(false)); ClassDB::bind_method(D_METHOD("advance", "delta"), &AnimationPlayer::advance); + ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_node"), "set_root", "get_root"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_animation", PROPERTY_HINT_ENUM, "", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_ANIMATE_AS_TRIGGER), "set_current_animation", "get_current_animation"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "assigned_animation", PROPERTY_HINT_NONE, "", 0), "set_assigned_animation", "get_assigned_animation"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "autoplay", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_autoplay", "get_autoplay"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "current_animation_length", PROPERTY_HINT_NONE, "", 0), "", "get_current_animation_length"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "current_animation_position", PROPERTY_HINT_NONE, "", 0), "", "get_current_animation_position"); + ADD_GROUP("Playback Options", "playback_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_animation_process_mode", "get_animation_process_mode"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_default_blend_time", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_default_blend_time", "get_default_blend_time"); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_node"), "set_root", "get_root"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "playback_active", PROPERTY_HINT_NONE, "", 0), "set_active", "is_active"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_speed", PROPERTY_HINT_RANGE, "-64,64,0.01"), "set_speed_scale", "get_speed_scale"); - ADD_SIGNAL(MethodInfo("animation_finished", PropertyInfo(Variant::STRING, "name"))); + ADD_SIGNAL(MethodInfo("animation_finished", PropertyInfo(Variant::STRING, "anim_name"))); ADD_SIGNAL(MethodInfo("animation_changed", PropertyInfo(Variant::STRING, "old_name"), PropertyInfo(Variant::STRING, "new_name"))); - ADD_SIGNAL(MethodInfo("animation_started", PropertyInfo(Variant::STRING, "name"))); + ADD_SIGNAL(MethodInfo("animation_started", PropertyInfo(Variant::STRING, "anim_name"))); BIND_ENUM_CONSTANT(ANIMATION_PROCESS_PHYSICS); BIND_ENUM_CONSTANT(ANIMATION_PROCESS_IDLE); @@ -1348,6 +1362,7 @@ AnimationPlayer::AnimationPlayer() { cache_update_size = 0; cache_update_prop_size = 0; speed_scale = 1; + end_reached = false; end_notify = false; animation_process_mode = ANIMATION_PROCESS_IDLE; processing = false; diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h index 57c658e054..ef758bac44 100644 --- a/scene/animation/animation_player.h +++ b/scene/animation/animation_player.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_PLAYER_H #define ANIMATION_PLAYER_H @@ -205,6 +206,7 @@ private: List<StringName> queued; + bool end_reached; bool end_notify; String autoplay; @@ -249,6 +251,7 @@ private: protected: bool _set(const StringName &p_name, const Variant &p_value); bool _get(const StringName &p_name, Variant &r_ret) const; + virtual void _validate_property(PropertyInfo &property) const; void _get_property_list(List<PropertyInfo> *p_list) const; void _notification(int p_what); @@ -281,6 +284,8 @@ public: bool is_playing() const; String get_current_animation() const; void set_current_animation(const String &p_anim); + String get_assigned_animation() const; + void set_assigned_animation(const String &p_anim); void stop_all(); void set_active(bool p_active); bool is_active() const; diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp index 5777562f93..89f0e43a86 100644 --- a/scene/animation/animation_tree_player.cpp +++ b/scene/animation/animation_tree_player.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation_tree_player.h" #include "animation_player.h" diff --git a/scene/animation/animation_tree_player.h b/scene/animation/animation_tree_player.h index c6062b97e4..09d6f6fcb4 100644 --- a/scene/animation/animation_tree_player.h +++ b/scene/animation/animation_tree_player.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_TREE_PLAYER_H #define ANIMATION_TREE_PLAYER_H diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index 2f30337cb8..49013b160a 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tween.h" #include "method_bind_ext.gen.inc" @@ -218,11 +219,13 @@ void Tween::_bind_methods() { 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)); - ADD_SIGNAL(MethodInfo("tween_started", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key"))); - ADD_SIGNAL(MethodInfo("tween_step", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::REAL, "elapsed"), PropertyInfo(Variant::OBJECT, "value"))); - ADD_SIGNAL(MethodInfo("tween_completed", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key"))); + ADD_SIGNAL(MethodInfo("tween_started", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key"))); + ADD_SIGNAL(MethodInfo("tween_step", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key"), PropertyInfo(Variant::REAL, "elapsed"), PropertyInfo(Variant::OBJECT, "value"))); + ADD_SIGNAL(MethodInfo("tween_completed", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key"))); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "repeat"), "set_repeat", "is_repeat"); ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_tween_process_mode", "get_tween_process_mode"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_speed", PROPERTY_HINT_RANGE, "-64,64,0.01"), "set_speed_scale", "get_speed_scale"); BIND_ENUM_CONSTANT(TWEEN_PROCESS_PHYSICS); BIND_ENUM_CONSTANT(TWEEN_PROCESS_IDLE); @@ -561,57 +564,50 @@ void Tween::_tween_process(float p_delta) { data.finish = true; } - switch (data.type) { - case INTER_PROPERTY: - case INTER_METHOD: { - Variant result = _run_equation(data); - emit_signal("tween_step", object, NodePath(Vector<StringName>(), data.key, false), data.elapsed, result); - _apply_tween_value(data, result); - if (data.finish) - _apply_tween_value(data, data.final_val); - } break; - - case INTER_CALLBACK: - if (data.finish) { - if (data.call_deferred) { - - switch (data.args) { - case 0: - object->call_deferred(data.key[0]); - break; - case 1: - object->call_deferred(data.key[0], data.arg[0]); - break; - case 2: - object->call_deferred(data.key[0], data.arg[0], data.arg[1]); - break; - case 3: - object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2]); - break; - case 4: - object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3]); - break; - case 5: - object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]); - break; - } - } else { - Variant::CallError error; - Variant *arg[5] = { - &data.arg[0], - &data.arg[1], - &data.arg[2], - &data.arg[3], - &data.arg[4], - }; - object->call(data.key[0], (const Variant **)arg, data.args, error); + if (data.type == INTER_CALLBACK) { + if (data.finish) { + if (data.call_deferred) { + + switch (data.args) { + case 0: + object->call_deferred(data.key[0]); + break; + case 1: + object->call_deferred(data.key[0], data.arg[0]); + break; + case 2: + object->call_deferred(data.key[0], data.arg[0], data.arg[1]); + break; + case 3: + object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2]); + break; + case 4: + object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3]); + break; + case 5: + object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]); + break; } + } else { + Variant::CallError error; + Variant *arg[5] = { + &data.arg[0], + &data.arg[1], + &data.arg[2], + &data.arg[3], + &data.arg[4], + }; + object->call(data.key[0], (const Variant **)arg, data.args, error); } - break; - default: {} + } + } else { + Variant result = _run_equation(data); + emit_signal("tween_step", object, NodePath(Vector<StringName>(), data.key, false), data.elapsed, result); + _apply_tween_value(data, result); } if (data.finish) { + _apply_tween_value(data, data.final_val); emit_signal("tween_completed", object, NodePath(Vector<StringName>(), data.key, false)); // not repeat mode, remove completed action if (!repeat) diff --git a/scene/animation/tween.h b/scene/animation/tween.h index f052c415ae..757d80e90a 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TWEEN_H #define TWEEN_H diff --git a/scene/animation/tween_interpolaters.cpp b/scene/animation/tween_interpolaters.cpp index 72c603473a..11f2b0c17f 100644 --- a/scene/animation/tween_interpolaters.cpp +++ b/scene/animation/tween_interpolaters.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tween.h" const real_t pi = 3.1415926535898; diff --git a/scene/audio/audio_player.cpp b/scene/audio/audio_player.cpp index 8a73c65df6..766c9acf99 100644 --- a/scene/audio/audio_player.cpp +++ b/scene/audio/audio_player.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_player.h" #include "engine.h" diff --git a/scene/audio/audio_player.h b/scene/audio/audio_player.h index 74109b1fac..21189aea6d 100644 --- a/scene/audio/audio_player.h +++ b/scene/audio/audio_player.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOPLAYER_H #define AUDIOPLAYER_H diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp index 41ff000ac1..9dfd388c3d 100644 --- a/scene/gui/base_button.cpp +++ b/scene/gui/base_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "base_button.h" #include "os/keyboard.h" @@ -310,10 +311,6 @@ void BaseButton::set_disabled(bool p_disabled) { status.disabled = p_disabled; update(); _change_notify("disabled"); - if (p_disabled) - set_focus_mode(FOCUS_NONE); - else - set_focus_mode(enabled_focus_mode); } bool BaseButton::is_disabled() const { @@ -503,12 +500,12 @@ void BaseButton::_bind_methods() { ClassDB::bind_method(D_METHOD("get_button_group"), &BaseButton::get_button_group); BIND_VMETHOD(MethodInfo("_pressed")); - BIND_VMETHOD(MethodInfo("_toggled", PropertyInfo(Variant::BOOL, "pressed"))); + BIND_VMETHOD(MethodInfo("_toggled", PropertyInfo(Variant::BOOL, "button_pressed"))); ADD_SIGNAL(MethodInfo("pressed")); ADD_SIGNAL(MethodInfo("button_up")); ADD_SIGNAL(MethodInfo("button_down")); - ADD_SIGNAL(MethodInfo("toggled", PropertyInfo(Variant::BOOL, "pressed"))); + ADD_SIGNAL(MethodInfo("toggled", PropertyInfo(Variant::BOOL, "button_pressed"))); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "disabled"), "set_disabled", "is_disabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "toggle_mode"), "set_toggle_mode", "is_toggle_mode"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "pressed"), "set_pressed", "is_pressed"); @@ -538,15 +535,15 @@ BaseButton::BaseButton() { set_focus_mode(FOCUS_ALL); enabled_focus_mode = FOCUS_ALL; action_mode = ACTION_MODE_BUTTON_RELEASE; +} + +BaseButton::~BaseButton() { if (button_group.is_valid()) { button_group->buttons.erase(this); } } -BaseButton::~BaseButton() { -} - void ButtonGroup::get_buttons(List<BaseButton *> *r_buttons) { for (Set<BaseButton *>::Element *E = buttons.front(); E; E = E->next()) { diff --git a/scene/gui/base_button.h b/scene/gui/base_button.h index 00c9fe959c..6917e112ab 100644 --- a/scene/gui/base_button.h +++ b/scene/gui/base_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BASE_BUTTON_H #define BASE_BUTTON_H @@ -89,8 +90,8 @@ public: /* Signals */ - bool is_pressed() const; ///< return wether button is pressed (toggled in) - bool is_pressing() const; ///< return wether button is pressed (toggled in) + bool is_pressed() const; ///< return whether button is pressed (toggled in) + bool is_pressing() const; ///< return whether button is pressed (toggled in) bool is_hovered() const; void set_pressed(bool p_pressed); ///only works in toggle mode diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp index b7f1dbaa70..12b9fe7c03 100644 --- a/scene/gui/box_container.cpp +++ b/scene/gui/box_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "box_container.h" #include "label.h" #include "margin_container.h" diff --git a/scene/gui/box_container.h b/scene/gui/box_container.h index b22b3e28e3..abc228f804 100644 --- a/scene/gui/box_container.h +++ b/scene/gui/box_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BOX_CONTAINER_H #define BOX_CONTAINER_H diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp index d5715d63b6..03b25a138f 100644 --- a/scene/gui/button.cpp +++ b/scene/gui/button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "button.h" #include "print_string.h" #include "servers/visual_server.h" diff --git a/scene/gui/button.h b/scene/gui/button.h index b3645fff7a..0b41b14f02 100644 --- a/scene/gui/button.h +++ b/scene/gui/button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BUTTON_H #define BUTTON_H diff --git a/scene/gui/center_container.cpp b/scene/gui/center_container.cpp index bf9ca69be4..cf71f89830 100644 --- a/scene/gui/center_container.cpp +++ b/scene/gui/center_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "center_container.h" Size2 CenterContainer::get_minimum_size() const { diff --git a/scene/gui/center_container.h b/scene/gui/center_container.h index 97912b11c7..519e1493ec 100644 --- a/scene/gui/center_container.h +++ b/scene/gui/center_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CENTER_CONTAINER_H #define CENTER_CONTAINER_H diff --git a/scene/gui/check_box.cpp b/scene/gui/check_box.cpp index 73db240468..0790f87ea7 100644 --- a/scene/gui/check_box.cpp +++ b/scene/gui/check_box.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* check_button.cpp */ +/* check_box.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "check_box.h" #include "servers/visual_server.h" diff --git a/scene/gui/check_box.h b/scene/gui/check_box.h index e7358c1fb2..8375b46ca0 100644 --- a/scene/gui/check_box.h +++ b/scene/gui/check_box.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CHECK_BOX_H #define CHECK_BOX_H diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp index dbafcd4353..f9ed0ecdbb 100644 --- a/scene/gui/check_button.cpp +++ b/scene/gui/check_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "check_button.h" #include "print_string.h" diff --git a/scene/gui/check_button.h b/scene/gui/check_button.h index 8cf927de9b..a11749e3f6 100644 --- a/scene/gui/check_button.h +++ b/scene/gui/check_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CHECK_BUTTON_H #define CHECK_BUTTON_H diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 95298f5a18..30bcc48149 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "color_picker.h" #include "os/input.h" @@ -209,6 +210,7 @@ Color ColorPicker::get_pick_color() const { } void ColorPicker::add_preset(const Color &p_color) { + if (presets.find(p_color)) { presets.move_to_back(presets.find(p_color)); } else { @@ -482,6 +484,10 @@ void ColorPicker::_bind_methods() { ClassDB::bind_method(D_METHOD("_preset_input"), &ColorPicker::_preset_input); ClassDB::bind_method(D_METHOD("_screen_input"), &ColorPicker::_screen_input); + ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_pick_color", "get_pick_color"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "edit_alpha"), "set_edit_alpha", "is_editing_alpha"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "raw_mode"), "set_raw_mode", "is_raw_mode"); + ADD_SIGNAL(MethodInfo("color_changed", PropertyInfo(Variant::COLOR, "color"))); } diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h index 1f6a8fb1bb..01ae1cc464 100644 --- a/scene/gui/color_picker.h +++ b/scene/gui/color_picker.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLOR_PICKER_H #define COLOR_PICKER_H diff --git a/scene/gui/color_rect.cpp b/scene/gui/color_rect.cpp index d212ba9416..463f3911dc 100644 --- a/scene/gui/color_rect.cpp +++ b/scene/gui/color_rect.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "color_rect.h" void ColorRect::set_frame_color(const Color &p_color) { diff --git a/scene/gui/color_rect.h b/scene/gui/color_rect.h index 747ae72997..a841008f76 100644 --- a/scene/gui/color_rect.h +++ b/scene/gui/color_rect.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLOR_RECT_H #define COLOR_RECT_H diff --git a/scene/gui/container.cpp b/scene/gui/container.cpp index 20616d5dd8..7cb0ad5707 100644 --- a/scene/gui/container.cpp +++ b/scene/gui/container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "container.h" #include "message_queue.h" #include "scene/scene_string_names.h" diff --git a/scene/gui/container.h b/scene/gui/container.h index 2b9910dcf5..c472162f58 100644 --- a/scene/gui/container.h +++ b/scene/gui/container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTAINER_H #define CONTAINER_H diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 6072653c54..01415594d3 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "control.h" #include "project_settings.h" #include "scene/main/canvas_layer.h" @@ -860,6 +861,8 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName & class_name = ClassDB::get_parent_class_nocheck(class_name); } + class_name = type; + Control *parent = Object::cast_to<Control>(theme_owner->get_parent()); if (parent) @@ -868,8 +871,6 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName & theme_owner = NULL; } - class_name = type; - while (class_name != StringName()) { if (Theme::get_default()->has_stylebox(p_name, class_name)) return Theme::get_default()->get_stylebox(p_name, class_name); @@ -1324,7 +1325,7 @@ float Control::_get_parent_range(int p_idx) const { if (!is_inside_tree()) { - return 1.0; + return 0; } if (data.parent_canvas_item) { @@ -1333,7 +1334,7 @@ float Control::_get_parent_range(int p_idx) const { return get_viewport()->get_visible_rect().size[p_idx & 1]; } - return 1.0; + return 0; } float Control::_get_range(int p_idx) const { @@ -1356,24 +1357,32 @@ float Control::_a2s(float p_val, float p_anchor, float p_range) const { } void Control::set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin, bool p_push_opposite_anchor) { - bool pushed = false; + float parent_range = _get_parent_range((p_margin == MARGIN_LEFT || p_margin == MARGIN_RIGHT) ? 0 : 1); + float previous_margin_pos = data.margin[p_margin] + data.anchor[p_margin] * parent_range; + float previous_opposite_margin_pos = data.margin[(p_margin + 2) % 4] + data.anchor[(p_margin + 2) % 4] * parent_range; + data.anchor[p_margin] = CLAMP(p_anchor, 0.0, 1.0); if (((p_margin == MARGIN_LEFT || p_margin == MARGIN_TOP) && data.anchor[p_margin] > data.anchor[(p_margin + 2) % 4]) || ((p_margin == MARGIN_RIGHT || p_margin == MARGIN_BOTTOM) && data.anchor[p_margin] < data.anchor[(p_margin + 2) % 4])) { if (p_push_opposite_anchor) { data.anchor[(p_margin + 2) % 4] = data.anchor[p_margin]; - pushed = true; } else { data.anchor[p_margin] = data.anchor[(p_margin + 2) % 4]; } } - if (is_inside_tree()) { - if (p_keep_margin) { - _size_changed(); + if (!p_keep_margin) { + data.margin[p_margin] = _s2a(previous_margin_pos, data.anchor[p_margin], parent_range); + if (p_push_opposite_anchor) { + data.margin[(p_margin + 2) % 4] = _s2a(previous_opposite_margin_pos, data.anchor[(p_margin + 2) % 4], parent_range); } } + + if (is_inside_tree()) { + _size_changed(); + } + update(); _change_notify(); } @@ -2004,7 +2013,7 @@ Control *Control::find_prev_valid_focus() const { if (from->is_set_as_toplevel() || !Object::cast_to<Control>(from->get_parent())) { - //find last of the childs + //find last of the children prev_child = _prev_control(from); @@ -2154,6 +2163,7 @@ void Control::set_theme(const Ref<Theme> &p_theme) { data.theme = p_theme; if (!p_theme.is_null()) { + data.theme_owner = this; _propagate_theme_changed(this, this); } else { @@ -2737,7 +2747,7 @@ void Control::_bind_methods() { ClassDB::bind_method(D_METHOD("add_icon_override", "name", "texture"), &Control::add_icon_override); ClassDB::bind_method(D_METHOD("add_shader_override", "name", "shader"), &Control::add_shader_override); - ClassDB::bind_method(D_METHOD("add_style_override", "name", "stylebox"), &Control::add_style_override); + ClassDB::bind_method(D_METHOD("add_stylebox_override", "name", "stylebox"), &Control::add_style_override); ClassDB::bind_method(D_METHOD("add_font_override", "name", "font"), &Control::add_font_override); ClassDB::bind_method(D_METHOD("add_color_override", "name", "color"), &Control::add_color_override); ClassDB::bind_method(D_METHOD("add_constant_override", "name", "constant"), &Control::add_constant_override); @@ -2749,6 +2759,7 @@ void Control::_bind_methods() { ClassDB::bind_method(D_METHOD("get_constant", "name", "type"), &Control::get_constant, DEFVAL("")); ClassDB::bind_method(D_METHOD("has_icon_override", "name"), &Control::has_icon_override); + ClassDB::bind_method(D_METHOD("has_shader_override", "name"), &Control::has_shader_override); ClassDB::bind_method(D_METHOD("has_stylebox_override", "name"), &Control::has_stylebox_override); ClassDB::bind_method(D_METHOD("has_font_override", "name"), &Control::has_font_override); ClassDB::bind_method(D_METHOD("has_color_override", "name"), &Control::has_color_override); @@ -2830,6 +2841,7 @@ void Control::_bind_methods() { ADD_GROUP("Rect", "rect_"); ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_position", "get_position"); + ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_global_position", PROPERTY_HINT_NONE, "", 0), "set_global_position", "get_global_position"); ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_size", "get_size"); ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_min_size"), "set_custom_minimum_size", "get_custom_minimum_size"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "rect_rotation", PROPERTY_HINT_RANGE, "-1080,1080,0.01"), "set_rotation_degrees", "get_rotation_degrees"); @@ -2847,9 +2859,11 @@ void Control::_bind_methods() { ADD_PROPERTYINZ(PropertyInfo(Variant::NODE_PATH, "focus_neighbour_bottom"), "set_focus_neighbour", "get_focus_neighbour", MARGIN_BOTTOM); ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "focus_next"), "set_focus_next", "get_focus_next"); ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "focus_previous"), "set_focus_previous", "get_focus_previous"); + ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "focus_mode", PROPERTY_HINT_ENUM, "None,Click,All"), "set_focus_mode", "get_focus_mode"); ADD_GROUP("Mouse", "mouse_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "mouse_filter", PROPERTY_HINT_ENUM, "Stop,Pass,Ignore"), "set_mouse_filter", "get_mouse_filter"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "mouse_default_cursor_shape", PROPERTY_HINT_ENUM, "Arrow,Ibeam,Pointing hand,Cross,Wait,Busy,Drag,Can drop,Forbidden,Vertical resize,Horizontal resize,Secondary diagonal resize,Main diagonal resize,Move,Vertial split,Horizontal split,Help"), "set_default_cursor_shape", "get_default_cursor_shape"); ADD_GROUP("Size Flags", "size_flags_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "size_flags_horizontal", PROPERTY_HINT_FLAGS, "Fill,Expand,Shrink Center,Shrink End"), "set_h_size_flags", "get_h_size_flags"); diff --git a/scene/gui/control.h b/scene/gui/control.h index 8da40e7d3f..51325f27b5 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONTROL_H #define CONTROL_H @@ -316,11 +317,11 @@ public: /* POSITIONING */ - void set_anchors_preset(LayoutPreset p_preset, bool p_keep_margin = false); + void set_anchors_preset(LayoutPreset p_preset, bool p_keep_margin = true); void set_margins_preset(LayoutPreset p_preset, LayoutPresetMode p_resize_mode = PRESET_MODE_MINSIZE, int p_margin = 0); void set_anchors_and_margins_preset(LayoutPreset p_preset, LayoutPresetMode p_resize_mode = PRESET_MODE_MINSIZE, int p_margin = 0); - void set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin = false, bool p_push_opposite_anchor = true); + void set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin = true, bool p_push_opposite_anchor = true); float get_anchor(Margin p_margin) const; void set_margin(Margin p_margin, float p_value); diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index a2cf0c951f..d9737fa21a 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dialogs.h" #include "line_edit.h" #include "print_string.h" diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h index c4cde8ef22..e61ede7c3d 100644 --- a/scene/gui/dialogs.h +++ b/scene/gui/dialogs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DIALOGS_H #define DIALOGS_H diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 7bf06bc8c2..58717edbae 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "file_dialog.h" #include "os/keyboard.h" #include "print_string.h" @@ -792,6 +793,15 @@ void FileDialog::_bind_methods() { ClassDB::bind_method(D_METHOD("invalidate"), &FileDialog::invalidate); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "mode_overrides_title"), "set_mode_overrides_title", "is_mode_overriding_title"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Open one,Open many,Open folder,Open any,Save"), "set_mode", "get_mode"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "access", PROPERTY_HINT_ENUM, "Resources,User data,File system"), "set_access", "get_access"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "filters"), "set_filters", "get_filters"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_hidden_files"), "set_show_hidden_files", "is_showing_hidden_files"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_dir"), "set_current_dir", "get_current_dir"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_file"), "set_current_file", "get_current_file"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_path"), "set_current_path", "get_current_path"); + ADD_SIGNAL(MethodInfo("file_selected", PropertyInfo(Variant::STRING, "path"))); ADD_SIGNAL(MethodInfo("files_selected", PropertyInfo(Variant::POOL_STRING_ARRAY, "paths"))); ADD_SIGNAL(MethodInfo("dir_selected", PropertyInfo(Variant::STRING, "dir"))); @@ -805,12 +815,6 @@ void FileDialog::_bind_methods() { BIND_ENUM_CONSTANT(ACCESS_RESOURCES); BIND_ENUM_CONSTANT(ACCESS_USERDATA); BIND_ENUM_CONSTANT(ACCESS_FILESYSTEM); - - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "mode_overrides_title"), "set_mode_overrides_title", "is_mode_overriding_title"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Open one,Open many,Open folder,Open any,Save"), "set_mode", "get_mode"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "access", PROPERTY_HINT_ENUM, "Resources,User data,File system"), "set_access", "get_access"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "filters"), "set_filters", "get_filters"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_hidden_files"), "set_show_hidden_files", "is_showing_hidden_files"); } void FileDialog::set_show_hidden_files(bool p_show) { diff --git a/scene/gui/file_dialog.h b/scene/gui/file_dialog.h index 04f004bf47..2a09494682 100644 --- a/scene/gui/file_dialog.h +++ b/scene/gui/file_dialog.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FILE_DIALOG_H #define FILE_DIALOG_H diff --git a/scene/gui/gradient_edit.cpp b/scene/gui/gradient_edit.cpp index 10cbac7d40..3985039716 100644 --- a/scene/gui/gradient_edit.cpp +++ b/scene/gui/gradient_edit.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* color_ramp_edit.cpp */ +/* gradient_edit.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gradient_edit.h" #include "os/keyboard.h" diff --git a/scene/gui/gradient_edit.h b/scene/gui/gradient_edit.h index 5471b0a769..e7834ea0de 100644 --- a/scene/gui/gradient_edit.h +++ b/scene/gui/gradient_edit.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* color_ramp_edit.h */ +/* gradient_edit.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,8 +27,9 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef SCENE_GUI_COLOR_RAMP_EDIT_H_ -#define SCENE_GUI_COLOR_RAMP_EDIT_H_ + +#ifndef GRADIENT_EDIT_H +#define GRADIENT_EDIT_H #include "scene/gui/color_picker.h" #include "scene/gui/popup.h" @@ -72,9 +73,4 @@ public: virtual ~GradientEdit(); }; -/*class ColorRampEditPanel : public Panel -{ - GDCLASS(ColorRampEditPanel, Panel ); -};*/ - -#endif /* SCENE_GUI_COLOR_RAMP_EDIT_H_ */ +#endif // GRADIENT_EDIT_H diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index d0ab77ecf8..38ce91a4df 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "graph_edit.h" #include "os/input.h" @@ -1146,9 +1147,18 @@ void GraphEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("is_node_connected", "from", "from_port", "to", "to_port"), &GraphEdit::is_node_connected); ClassDB::bind_method(D_METHOD("disconnect_node", "from", "from_port", "to", "to_port"), &GraphEdit::disconnect_node); ClassDB::bind_method(D_METHOD("get_connection_list"), &GraphEdit::_get_connection_list); + ClassDB::bind_method(D_METHOD("clear_connections"), &GraphEdit::clear_connections); ClassDB::bind_method(D_METHOD("get_scroll_ofs"), &GraphEdit::get_scroll_ofs); ClassDB::bind_method(D_METHOD("set_scroll_ofs", "ofs"), &GraphEdit::set_scroll_ofs); + ClassDB::bind_method(D_METHOD("add_valid_right_disconnect_type", "type"), &GraphEdit::add_valid_right_disconnect_type); + ClassDB::bind_method(D_METHOD("remove_valid_right_disconnect_type", "type"), &GraphEdit::remove_valid_right_disconnect_type); + ClassDB::bind_method(D_METHOD("add_valid_left_disconnect_type", "type"), &GraphEdit::add_valid_left_disconnect_type); + ClassDB::bind_method(D_METHOD("remove_valid_left_disconnect_type", "type"), &GraphEdit::remove_valid_left_disconnect_type); + ClassDB::bind_method(D_METHOD("add_valid_connection_type", "from_type", "to_type"), &GraphEdit::add_valid_connection_type); + ClassDB::bind_method(D_METHOD("remove_valid_connection_type", "from_type", "to_type"), &GraphEdit::remove_valid_connection_type); + ClassDB::bind_method(D_METHOD("is_valid_connection_type", "from_type", "to_type"), &GraphEdit::is_valid_connection_type); + ClassDB::bind_method(D_METHOD("set_zoom", "p_zoom"), &GraphEdit::set_zoom); ClassDB::bind_method(D_METHOD("get_zoom"), &GraphEdit::get_zoom); @@ -1179,6 +1189,12 @@ void GraphEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("set_selected", "node"), &GraphEdit::set_selected); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "right_disconnects"), "set_right_disconnects", "is_right_disconnects_enabled"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_offset"), "set_scroll_ofs", "get_scroll_ofs"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "snap_distance"), "set_snap", "get_snap"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_snap"), "set_use_snap", "is_using_snap"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "zoom"), "set_zoom", "get_zoom"); + ADD_SIGNAL(MethodInfo("connection_request", PropertyInfo(Variant::STRING, "from"), PropertyInfo(Variant::INT, "from_slot"), PropertyInfo(Variant::STRING, "to"), PropertyInfo(Variant::INT, "to_slot"))); ADD_SIGNAL(MethodInfo("disconnection_request", PropertyInfo(Variant::STRING, "from"), PropertyInfo(Variant::INT, "from_slot"), PropertyInfo(Variant::STRING, "to"), PropertyInfo(Variant::INT, "to_slot"))); ADD_SIGNAL(MethodInfo("popup_request", PropertyInfo(Variant::VECTOR2, "p_position"))); diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h index d307765bc0..3bfde44854 100644 --- a/scene/gui/graph_edit.h +++ b/scene/gui/graph_edit.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* graph_edit.cpp */ +/* graph_edit.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GRAPH_EDIT_H #define GRAPH_EDIT_H diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index 12aa79bf65..24857d49fa 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "graph_node.h" #include "method_bind_ext.gen.inc" @@ -704,8 +705,12 @@ void GraphNode::_bind_methods() { ClassDB::bind_method(D_METHOD("get_overlay"), &GraphNode::get_overlay); ADD_PROPERTY(PropertyInfo(Variant::STRING, "title"), "set_title", "get_title"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_close"), "set_show_close_button", "is_close_button_visible"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "resizable"), "set_resizable", "is_resizable"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selected"), "set_selected", "is_selected"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "comment"), "set_comment", "is_comment"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "overlay", PROPERTY_HINT_ENUM, "Disabled,Breakpoint,Position"), "set_overlay", "get_overlay"); ADD_SIGNAL(MethodInfo("offset_changed")); ADD_SIGNAL(MethodInfo("dragged", PropertyInfo(Variant::VECTOR2, "from"), PropertyInfo(Variant::VECTOR2, "to"))); diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h index 13ef533134..20d25a69b0 100644 --- a/scene/gui/graph_node.h +++ b/scene/gui/graph_node.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GRAPH_NODE_H #define GRAPH_NODE_H diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp index a0d9b5f5ff..8c3f835be3 100644 --- a/scene/gui/grid_container.cpp +++ b/scene/gui/grid_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "grid_container.h" void GridContainer::_notification(int p_what) { diff --git a/scene/gui/grid_container.h b/scene/gui/grid_container.h index c52f8230b0..243d06f034 100644 --- a/scene/gui/grid_container.h +++ b/scene/gui/grid_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GRID_CONTAINER_H #define GRID_CONTAINER_H diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index b1c862d1d1..77d3a34c66 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "item_list.h" #include "os/os.h" #include "project_settings.h" @@ -930,6 +931,9 @@ void ItemList::_notification(int p_what) { scroll_bar->hide(); } else { scroll_bar->show(); + + if (do_autoscroll_to_bottom) + scroll_bar->set_value(max); } break; } @@ -1313,6 +1317,11 @@ Size2 ItemList::get_minimum_size() const { return Size2(); } +void ItemList::set_autoscroll_to_bottom(const bool p_enable) { + + do_autoscroll_to_bottom = p_enable; +} + void ItemList::set_auto_height(bool p_enable) { auto_height = p_enable; @@ -1410,7 +1419,7 @@ void ItemList::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_items"), &ItemList::_set_items); ClassDB::bind_method(D_METHOD("_get_items"), &ItemList::_get_items); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items"); ADD_PROPERTY(PropertyInfo(Variant::INT, "select_mode", PROPERTY_HINT_ENUM, "Single,Multi"), "set_select_mode", "get_select_mode"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "allow_rmb_select"), "set_allow_rmb_select", "get_allow_rmb_select"); @@ -1423,6 +1432,7 @@ void ItemList::_bind_methods() { ADD_GROUP("Icon", ""); ADD_PROPERTY(PropertyInfo(Variant::INT, "icon_mode", PROPERTY_HINT_ENUM, "Top,Left"), "set_icon_mode", "get_icon_mode"); ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "icon_scale"), "set_icon_scale", "get_icon_scale"); + ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "fixed_icon_size"), "set_fixed_icon_size", "get_fixed_icon_size"); BIND_ENUM_CONSTANT(ICON_MODE_TOP); BIND_ENUM_CONSTANT(ICON_MODE_LEFT); @@ -1466,6 +1476,7 @@ ItemList::ItemList() { ensure_selected_visible = false; defer_select_single = -1; allow_rmb_select = false; + do_autoscroll_to_bottom = false; icon_scale = 1.0f; set_clip_contents(true); diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index df751d8b9d..24e9498044 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ITEMLIST_H #define ITEMLIST_H @@ -107,6 +108,8 @@ private: real_t icon_scale; + bool do_autoscroll_to_bottom; + Array _get_items() const; void _set_items(const Array &p_items); @@ -212,6 +215,8 @@ public: Size2 get_minimum_size() const; + void set_autoscroll_to_bottom(const bool p_enable); + VScrollBar *get_v_scroll() { return scroll_bar; } ItemList(); diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index be065bc0fb..830f724b3c 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "label.h" #include "print_string.h" #include "project_settings.h" @@ -563,6 +564,7 @@ void Label::set_visible_characters(int p_amount) { if (get_total_character_count() > 0) { percent_visible = (float)p_amount / (float)total_char_cache; } + _change_notify("percent_visible"); update(); } @@ -583,6 +585,7 @@ void Label::set_percent_visible(float p_percent) { visible_chars = get_total_character_count() * p_percent; percent_visible = p_percent; } + _change_notify("visible_chars"); update(); } @@ -664,6 +667,7 @@ void Label::_bind_methods() { ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "autowrap"), "set_autowrap", "has_autowrap"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "clip_text"), "set_clip_text", "is_clipping_text"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "uppercase"), "set_uppercase", "is_uppercase"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "visible_characters", PROPERTY_HINT_RANGE, "-1,128000,1", PROPERTY_USAGE_EDITOR), "set_visible_characters", "get_visible_characters"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_visible", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_percent_visible", "get_percent_visible"); ADD_PROPERTY(PropertyInfo(Variant::INT, "lines_skipped", PROPERTY_HINT_RANGE, "0,999,1"), "set_lines_skipped", "get_lines_skipped"); ADD_PROPERTY(PropertyInfo(Variant::INT, "max_lines_visible", PROPERTY_HINT_RANGE, "-1,999,1"), "set_max_lines_visible", "get_max_lines_visible"); diff --git a/scene/gui/label.h b/scene/gui/label.h index 160eb66e53..d5e0b60773 100644 --- a/scene/gui/label.h +++ b/scene/gui/label.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LABEL_H #define LABEL_H diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 34abb1fbcc..524a68a116 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "line_edit.h" #include "label.h" #include "os/keyboard.h" @@ -368,6 +369,18 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) { shift_selection_check_post(k->get_shift()); } break; + case KEY_UP: { + + shift_selection_check_pre(k->get_shift()); + set_cursor_position(0); + shift_selection_check_post(k->get_shift()); + } break; + case KEY_DOWN: { + + shift_selection_check_pre(k->get_shift()); + set_cursor_position(text.length()); + shift_selection_check_post(k->get_shift()); + } break; case KEY_DELETE: { if (!editable) @@ -1400,8 +1413,8 @@ void LineEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("set_context_menu_enabled", "enable"), &LineEdit::set_context_menu_enabled); ClassDB::bind_method(D_METHOD("is_context_menu_enabled"), &LineEdit::is_context_menu_enabled); - ADD_SIGNAL(MethodInfo("text_changed", PropertyInfo(Variant::STRING, "text"))); - ADD_SIGNAL(MethodInfo("text_entered", PropertyInfo(Variant::STRING, "text"))); + ADD_SIGNAL(MethodInfo("text_changed", PropertyInfo(Variant::STRING, "new_text"))); + ADD_SIGNAL(MethodInfo("text_entered", PropertyInfo(Variant::STRING, "new_text"))); BIND_ENUM_CONSTANT(ALIGN_LEFT); BIND_ENUM_CONSTANT(ALIGN_CENTER); @@ -1424,13 +1437,14 @@ void LineEdit::_bind_methods() { ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "secret"), "set_secret", "is_secret"); ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "expand_to_text_length"), "set_expand_to_text_length", "get_expand_to_text_length"); ADD_PROPERTY(PropertyInfo(Variant::INT, "focus_mode", PROPERTY_HINT_ENUM, "None,Click,All"), "set_focus_mode", "get_focus_mode"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled"); ADD_GROUP("Placeholder", "placeholder_"); ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "placeholder_text"), "set_placeholder", "get_placeholder"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "placeholder_alpha", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_placeholder_alpha", "get_placeholder_alpha"); ADD_GROUP("Caret", "caret_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_blink"), "cursor_set_blink_enabled", "cursor_get_blink_enabled"); ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "caret_blink_speed", PROPERTY_HINT_RANGE, "0.1,10,0.1"), "cursor_set_blink_speed", "cursor_get_blink_speed"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "caret_position"), "set_cursor_position", "get_cursor_position"); } LineEdit::LineEdit() { diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h index f57fde2525..e15980d3c4 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LINE_EDIT_H #define LINE_EDIT_H diff --git a/scene/gui/link_button.cpp b/scene/gui/link_button.cpp index dca83dc31f..d862e8669c 100644 --- a/scene/gui/link_button.cpp +++ b/scene/gui/link_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "link_button.h" void LinkButton::set_text(const String &p_text) { diff --git a/scene/gui/link_button.h b/scene/gui/link_button.h index 610f481e4e..0821ad9c0d 100644 --- a/scene/gui/link_button.h +++ b/scene/gui/link_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef LINKBUTTON_H #define LINKBUTTON_H diff --git a/scene/gui/margin_container.cpp b/scene/gui/margin_container.cpp index 97cc16c22d..5e1d53fe1d 100644 --- a/scene/gui/margin_container.cpp +++ b/scene/gui/margin_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "margin_container.h" Size2 MarginContainer::get_minimum_size() const { diff --git a/scene/gui/margin_container.h b/scene/gui/margin_container.h index 443e0769bc..ea75109248 100644 --- a/scene/gui/margin_container.h +++ b/scene/gui/margin_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MARGIN_CONTAINER_H #define MARGIN_CONTAINER_H diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp index caf3b90fa1..2e74faa61d 100644 --- a/scene/gui/menu_button.cpp +++ b/scene/gui/menu_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "menu_button.h" #include "os/keyboard.h" #include "scene/main/viewport.h" @@ -88,7 +89,7 @@ void MenuButton::_bind_methods() { ClassDB::bind_method(D_METHOD("_get_items"), &MenuButton::_get_items); ClassDB::bind_method(D_METHOD("set_disable_shortcuts", "disabled"), &MenuButton::set_disable_shortcuts); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items"); ADD_SIGNAL(MethodInfo("about_to_show")); } diff --git a/scene/gui/menu_button.h b/scene/gui/menu_button.h index bfe168adf7..2356444ecb 100644 --- a/scene/gui/menu_button.h +++ b/scene/gui/menu_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MENU_BUTTON_H #define MENU_BUTTON_H diff --git a/scene/gui/nine_patch_rect.cpp b/scene/gui/nine_patch_rect.cpp index 0e753675f7..b8f6ffe6d2 100644 --- a/scene/gui/nine_patch_rect.cpp +++ b/scene/gui/nine_patch_rect.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "nine_patch_rect.h" #include "servers/visual_server.h" diff --git a/scene/gui/nine_patch_rect.h b/scene/gui/nine_patch_rect.h index dc6c5c8a28..b4b4602a7d 100644 --- a/scene/gui/nine_patch_rect.h +++ b/scene/gui/nine_patch_rect.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NINE_PATCH_RECT_H #define NINE_PATCH_RECT_H diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp index a447889971..1a46921561 100644 --- a/scene/gui/option_button.cpp +++ b/scene/gui/option_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "option_button.h" #include "print_string.h" @@ -318,7 +319,7 @@ void OptionButton::_bind_methods() { ClassDB::bind_method(D_METHOD("_get_items"), &OptionButton::_get_items); ADD_PROPERTY(PropertyInfo(Variant::INT, "selected"), "_select_int", "get_selected"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items"); ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "ID"))); } diff --git a/scene/gui/option_button.h b/scene/gui/option_button.h index c2854e9d1a..f65fa1b631 100644 --- a/scene/gui/option_button.h +++ b/scene/gui/option_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef OPTION_BUTTON_H #define OPTION_BUTTON_H diff --git a/scene/gui/panel.cpp b/scene/gui/panel.cpp index 28a221b63e..4375e03a50 100644 --- a/scene/gui/panel.cpp +++ b/scene/gui/panel.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "panel.h" #include "print_string.h" diff --git a/scene/gui/panel.h b/scene/gui/panel.h index 8641be4423..db8b35372e 100644 --- a/scene/gui/panel.h +++ b/scene/gui/panel.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PANEL_H #define PANEL_H diff --git a/scene/gui/panel_container.cpp b/scene/gui/panel_container.cpp index 9d73b82952..a778d62659 100644 --- a/scene/gui/panel_container.cpp +++ b/scene/gui/panel_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "panel_container.h" Size2 PanelContainer::get_minimum_size() const { diff --git a/scene/gui/panel_container.h b/scene/gui/panel_container.h index 0a412cb091..267e2b921f 100644 --- a/scene/gui/panel_container.h +++ b/scene/gui/panel_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PANEL_CONTAINER_H #define PANEL_CONTAINER_H diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp index 73bf867c37..d18a3a3f2f 100644 --- a/scene/gui/popup.cpp +++ b/scene/gui/popup.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "popup.h" #include "engine.h" diff --git a/scene/gui/popup.h b/scene/gui/popup.h index efe2ee88c2..550e803578 100644 --- a/scene/gui/popup.h +++ b/scene/gui/popup.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POPUP_H #define POPUP_H diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 7999f50013..89000fcde1 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "popup_menu.h" #include "os/input.h" #include "os/keyboard.h" @@ -122,8 +123,7 @@ int PopupMenu::_get_mouse_over(const Point2 &p_over) const { for (int i = 0; i < items.size(); i++) { - if (i > 0) - ofs.y += vseparation; + ofs.y += vseparation; float h; if (!items[i].icon.is_null()) { @@ -189,6 +189,26 @@ void PopupMenu::_submenu_timeout() { submenu_over = -1; } +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; + if (dy > 0 && global_y < 0) + dy = MIN(dy, -global_y - 1); + else if (dy < 0 && global_y + get_size().y > get_viewport_rect().size.y) + dy = -MIN(-dy, global_y + get_size().y - get_viewport_rect().size.y - 1); + set_position(get_position() + Vector2(0, dy)); + + Ref<InputEventMouseMotion> ie; + ie.instance(); + ie->set_position(p_over - Vector2(0, dy)); + _gui_input(ie); +} + void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) { Ref<InputEventKey> k = p_event; @@ -286,39 +306,13 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) { case BUTTON_WHEEL_DOWN: { if (get_global_position().y + get_size().y > get_viewport_rect().size.y) { - - int vseparation = get_constant("vseparation"); - Ref<Font> font = get_font("font"); - - Point2 pos = get_position(); - int s = (vseparation + font->get_height()) * 3; - pos.y -= (s * b->get_factor()); - set_position(pos); - - //update hover - Ref<InputEventMouseMotion> ie; - ie.instance(); - ie->set_position(b->get_position() + Vector2(0, s)); - _gui_input(ie); + _scroll(-b->get_factor(), b->get_position()); } } break; case BUTTON_WHEEL_UP: { if (get_global_position().y < 0) { - - int vseparation = get_constant("vseparation"); - Ref<Font> font = get_font("font"); - - Point2 pos = get_position(); - int s = (vseparation + font->get_height()) * 3; - pos.y += (s * b->get_factor()); - set_position(pos); - - //update hover - Ref<InputEventMouseMotion> ie; - ie.instance(); - ie->set_position(b->get_position() - Vector2(0, s)); - _gui_input(ie); + _scroll(b->get_factor(), b->get_position()); } } break; case BUTTON_LEFT: { @@ -387,6 +381,13 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) { update(); } } + + Ref<InputEventPanGesture> pan_gesture = p_event; + if (pan_gesture.is_valid()) { + if (get_global_position().y + get_size().y > get_viewport_rect().size.y || get_global_position().y < 0) { + _scroll(-pan_gesture->get_delta().y, pan_gesture->get_position()); + } + } } bool PopupMenu::has_point(const Point2 &p_point) const { @@ -459,7 +460,7 @@ void PopupMenu::_notification(int p_what) { if (i == mouse_over) { - hover->draw(ci, Rect2(item_ofs + Point2(-hseparation, -vseparation), Size2(get_size().width - style->get_minimum_size().width + hseparation * 2, h + vseparation * 2))); + hover->draw(ci, Rect2(item_ofs + Point2(-hseparation, -vseparation / 2), Size2(get_size().width - style->get_minimum_size().width + hseparation * 2, h + vseparation))); } if (items[i].separator) { @@ -1222,9 +1223,10 @@ void PopupMenu::_bind_methods() { ClassDB::bind_method(D_METHOD("_submenu_timeout"), &PopupMenu::_submenu_timeout); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items"); ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "hide_on_item_selection"), "set_hide_on_item_selection", "is_hide_on_item_selection"); ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "hide_on_checkable_item_selection"), "set_hide_on_checkable_item_selection", "is_hide_on_checkable_item_selection"); + ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "hide_on_state_item_selection"), "set_hide_on_state_item_selection", "is_hide_on_state_item_selection"); ADD_SIGNAL(MethodInfo("id_pressed", PropertyInfo(Variant::INT, "ID"))); ADD_SIGNAL(MethodInfo("index_pressed", PropertyInfo(Variant::INT, "index"))); diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h index f51ba81c89..60f36e95ec 100644 --- a/scene/gui/popup_menu.h +++ b/scene/gui/popup_menu.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POPUP_MENU_H #define POPUP_MENU_H @@ -83,6 +84,7 @@ class PopupMenu : public Popup { String _get_accel_text(int p_item) const; int _get_mouse_over(const Point2 &p_over) const; virtual Size2 get_minimum_size() const; + void _scroll(float p_factor, const Point2 &p_over); void _gui_input(const Ref<InputEvent> &p_event); void _activate_submenu(int over); void _submenu_timeout(); diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp index 505068f155..c85bed0451 100644 --- a/scene/gui/progress_bar.cpp +++ b/scene/gui/progress_bar.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "progress_bar.h" Size2 ProgressBar::get_minimum_size() const { diff --git a/scene/gui/progress_bar.h b/scene/gui/progress_bar.h index f7b2a194ba..d091c983b1 100644 --- a/scene/gui/progress_bar.h +++ b/scene/gui/progress_bar.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PROGRESS_BAR_H #define PROGRESS_BAR_H diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp index b1a33906d2..cd6c6bb65c 100644 --- a/scene/gui/range.cpp +++ b/scene/gui/range.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "range.h" void Range::_value_changed_notify() { @@ -247,6 +248,7 @@ void Range::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "set_step", "get_step"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "page"), "set_page", "get_page"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "value"), "set_value", "get_value"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "ratio", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_as_ratio", "get_as_ratio"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "exp_edit"), "set_exp_ratio", "is_ratio_exp"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rounded"), "set_use_rounded_values", "is_using_rounded_values"); } diff --git a/scene/gui/range.h b/scene/gui/range.h index 521ce412cf..de9383afd8 100644 --- a/scene/gui/range.h +++ b/scene/gui/range.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RANGE_H #define RANGE_H diff --git a/scene/gui/reference_rect.cpp b/scene/gui/reference_rect.cpp index 1b25965dab..5e25f43daf 100644 --- a/scene/gui/reference_rect.cpp +++ b/scene/gui/reference_rect.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "reference_rect.h" #include "engine.h" diff --git a/scene/gui/reference_rect.h b/scene/gui/reference_rect.h index 3a062f1b6b..473e348c85 100644 --- a/scene/gui/reference_rect.h +++ b/scene/gui/reference_rect.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REFERENCE_RECT_H #define REFERENCE_RECT_H diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index 4f2cfccd4a..a7419519ae 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rich_text_label.h" #include "os/keyboard.h" #include "os/os.h" @@ -371,19 +372,20 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int & cw = tab_size * font->get_char_size(' ').width; } - if (underline) { - Color uc = color; - uc.a *= 0.5; - int uy = y + lh - fh + ascent + 2; - float underline_width = 1.0; -#ifdef TOOLS_ENABLED - underline_width *= EDSCALE; -#endif - VS::get_singleton()->canvas_item_add_line(ci, p_ofs + Point2(align_ofs + pofs, uy), p_ofs + Point2(align_ofs + pofs + cw, uy), uc, underline_width); - } ofs += cw; } } + + if (underline) { + Color uc = color; + uc.a *= 0.5; + int uy = y + lh - fh + ascent + 2; + float underline_width = 1.0; +#ifdef TOOLS_ENABLED + underline_width *= EDSCALE; +#endif + VS::get_singleton()->canvas_item_add_line(ci, p_ofs + Point2(align_ofs + wofs, uy), p_ofs + Point2(align_ofs + wofs + w, uy), uc, underline_width); + } } ADVANCE(fw); @@ -451,6 +453,8 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int & table->columns[i].width = 0; } //compute minimum width for each cell + const int available_width = p_width - hseparation * (table->columns.size() - 1) - wofs; + for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) { ERR_CONTINUE(E->get()->type != ITEM_FRAME); //children should all be frames ItemFrame *frame = static_cast<ItemFrame *>(E->get()); @@ -461,7 +465,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int & for (int i = 0; i < frame->lines.size(); i++) { - _process_line(frame, Point2(), ly, p_width, i, PROCESS_CACHE, cfont, Color()); + _process_line(frame, Point2(), ly, available_width, i, PROCESS_CACHE, cfont, Color()); table->columns[column].min_width = MAX(table->columns[column].min_width, frame->lines[i].minimum_width); } idx++; @@ -470,11 +474,11 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int & //compute available width and total ratio (for expanders) int total_ratio = 0; - int available_width = p_width - hseparation * (table->columns.size() - 1); + int remaining_width = available_width; table->total_width = hseparation; for (int i = 0; i < table->columns.size(); i++) { - available_width -= table->columns[i].min_width; + remaining_width -= table->columns[i].min_width; if (table->columns[i].expand) total_ratio += table->columns[i].expand_ratio; } @@ -484,7 +488,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int & for (int i = 0; i < table->columns.size(); i++) { table->columns[i].width = table->columns[i].min_width; if (table->columns[i].expand) - table->columns[i].width += table->columns[i].expand_ratio * available_width / total_ratio; + table->columns[i].width += table->columns[i].expand_ratio * remaining_width / total_ratio; table->total_width += table->columns[i].width + hseparation; } @@ -2041,6 +2045,15 @@ void RichTextLabel::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "visible_characters", PROPERTY_HINT_RANGE, "-1,128000,1"), "set_visible_characters", "get_visible_characters"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_visible", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_percent_visible", "get_percent_visible"); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "meta_underlined"), "set_meta_underline", "is_meta_underlined"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_size", PROPERTY_HINT_RANGE, "0,24,1"), "set_tab_size", "get_tab_size"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text"); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_active"), "set_scroll_active", "is_scroll_active"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_following"), "set_scroll_follow", "is_scroll_following"); + + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selection_enabled"), "set_selection_enabled", "is_selection_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "override_selected_font_color"), "set_override_selected_font_color", "is_overriding_selected_font_color"); ADD_SIGNAL(MethodInfo("meta_clicked", PropertyInfo(Variant::NIL, "meta", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT))); diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index c942ecc00f..48f746e28d 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RICH_TEXT_LABEL_H #define RICH_TEXT_LABEL_H diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp index 3ac1ba0e48..95fcda2db3 100644 --- a/scene/gui/scroll_bar.cpp +++ b/scene/gui/scroll_bar.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scroll_bar.h" #include "os/keyboard.h" @@ -322,14 +323,14 @@ void ScrollBar::_notification(int p_what) { if (drag_slave) { drag_slave->connect("gui_input", this, "_drag_slave_input"); - drag_slave->connect("tree_exited", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT); + drag_slave->connect("tree_exiting", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT); } } if (p_what == NOTIFICATION_EXIT_TREE) { if (drag_slave) { drag_slave->disconnect("gui_input", this, "_drag_slave_input"); - drag_slave->disconnect("tree_exited", this, "_drag_slave_exit"); + drag_slave->disconnect("tree_exiting", this, "_drag_slave_exit"); } drag_slave = NULL; @@ -654,7 +655,7 @@ void ScrollBar::set_drag_slave(const NodePath &p_path) { if (drag_slave) { drag_slave->disconnect("gui_input", this, "_drag_slave_input"); - drag_slave->disconnect("tree_exited", this, "_drag_slave_exit"); + drag_slave->disconnect("tree_exiting", this, "_drag_slave_exit"); } } @@ -670,7 +671,7 @@ void ScrollBar::set_drag_slave(const NodePath &p_path) { if (drag_slave) { drag_slave->connect("gui_input", this, "_drag_slave_input"); - drag_slave->connect("tree_exited", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT); + drag_slave->connect("tree_exiting", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT); } } } diff --git a/scene/gui/scroll_bar.h b/scene/gui/scroll_bar.h index 9d0dc3ccbc..15e037f8bb 100644 --- a/scene/gui/scroll_bar.h +++ b/scene/gui/scroll_bar.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCROLL_BAR_H #define SCROLL_BAR_H diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index 42745a7042..33b3d46486 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scroll_container.h" #include "os/os.h" bool ScrollContainer::clips_input() const { @@ -461,14 +462,16 @@ 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("set_h_scroll", "val"), &ScrollContainer::set_h_scroll); + 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", "val"), &ScrollContainer::set_v_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); ADD_GROUP("Scroll", "scroll_"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_horizontal"), "set_enable_h_scroll", "is_h_scroll_enabled"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_vertical"), "set_enable_v_scroll", "is_v_scroll_enabled"); + 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"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_vertical_enabled"), "set_enable_v_scroll", "is_v_scroll_enabled"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_vertical"), "set_v_scroll", "get_v_scroll"); }; ScrollContainer::ScrollContainer() { diff --git a/scene/gui/scroll_container.h b/scene/gui/scroll_container.h index 997d03cbf2..6e3387918b 100644 --- a/scene/gui/scroll_container.h +++ b/scene/gui/scroll_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCROLL_CONTAINER_H #define SCROLL_CONTAINER_H diff --git a/scene/gui/separator.cpp b/scene/gui/separator.cpp index f65d51cf86..cd0b06da81 100644 --- a/scene/gui/separator.cpp +++ b/scene/gui/separator.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "separator.h" Size2 Separator::get_minimum_size() const { diff --git a/scene/gui/separator.h b/scene/gui/separator.h index 985ccce31d..7949c7ca9b 100644 --- a/scene/gui/separator.h +++ b/scene/gui/separator.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEPARATOR_H #define SEPARATOR_H diff --git a/scene/gui/shortcut.cpp b/scene/gui/shortcut.cpp index 4f32786854..36490cf254 100644 --- a/scene/gui/shortcut.cpp +++ b/scene/gui/shortcut.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shortcut.h" #include "os/keyboard.h" diff --git a/scene/gui/shortcut.h b/scene/gui/shortcut.h index 1d5bfc8bd9..f9240642bf 100644 --- a/scene/gui/shortcut.h +++ b/scene/gui/shortcut.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHORTCUT_H #define SHORTCUT_H diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp index 37b4d30e3c..a7a1b499c3 100644 --- a/scene/gui/slider.cpp +++ b/scene/gui/slider.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "slider.h" #include "os/keyboard.h" diff --git a/scene/gui/slider.h b/scene/gui/slider.h index c380ab25a5..e77a0b7423 100644 --- a/scene/gui/slider.h +++ b/scene/gui/slider.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SLIDER_H #define SLIDER_H diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp index 76bcde01af..3c5d524d80 100644 --- a/scene/gui/spin_box.cpp +++ b/scene/gui/spin_box.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "spin_box.h" #include "os/input.h" diff --git a/scene/gui/spin_box.h b/scene/gui/spin_box.h index ab969556d9..b8565ec082 100644 --- a/scene/gui/spin_box.h +++ b/scene/gui/spin_box.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPIN_BOX_H #define SPIN_BOX_H diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp index d0b7537665..e1d49019b3 100644 --- a/scene/gui/split_container.cpp +++ b/scene/gui/split_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "split_container.h" #include "label.h" diff --git a/scene/gui/split_container.h b/scene/gui/split_container.h index 2f3e480434..a31dc766d2 100644 --- a/scene/gui/split_container.h +++ b/scene/gui/split_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPLIT_CONTAINER_H #define SPLIT_CONTAINER_H diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index d00e360642..0312e58094 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tab_container.h" #include "message_queue.h" diff --git a/scene/gui/tab_container.h b/scene/gui/tab_container.h index 7374fc2d77..0ba8c205ea 100644 --- a/scene/gui/tab_container.h +++ b/scene/gui/tab_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TAB_CONTAINER_H #define TAB_CONTAINER_H diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp index 3ab031a2ea..f0e89877cd 100644 --- a/scene/gui/tabs.cpp +++ b/scene/gui/tabs.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tabs.h" #include "message_queue.h" @@ -850,6 +851,7 @@ void Tabs::_bind_methods() { ADD_SIGNAL(MethodInfo("tab_clicked", PropertyInfo(Variant::INT, "tab"))); ADD_PROPERTY(PropertyInfo(Variant::INT, "current_tab", PROPERTY_HINT_RANGE, "-1,4096,1", PROPERTY_USAGE_EDITOR), "set_current_tab", "get_current_tab"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_align", PROPERTY_HINT_ENUM, "Left,Center,Right"), "set_tab_align", "get_tab_align"); ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "tab_close_display_policy", PROPERTY_HINT_ENUM, "Show Never,Show Active Only,Show Always"), "set_tab_close_display_policy", "get_tab_close_display_policy"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scrolling_enabled"), "set_scrolling_enabled", "get_scrolling_enabled"); diff --git a/scene/gui/tabs.h b/scene/gui/tabs.h index ffc0944829..246b3cba67 100644 --- a/scene/gui/tabs.h +++ b/scene/gui/tabs.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TABS_H #define TABS_H diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 46ad956b68..95bd676a08 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "text_edit.h" #include "message_queue.h" @@ -454,7 +455,7 @@ void TextEdit::_update_selection_mode_word() { end += 1; } - // inital selection + // initial selection if (!selection.active) { select(row, beg, row, end); selection.selecting_column = beg; @@ -882,12 +883,12 @@ void TextEdit::_notification(int p_what) { } // give visual indication of empty selected line - if (selection.active && line >= selection.from_line && line <= selection.to_line) { + if (selection.active && line >= selection.from_line && line <= selection.to_line && char_margin >= xmargin_beg) { int char_w = cache.font->get_char_size(' ').width; VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg + ofs_x, ofs_y, char_w, get_row_height()), cache.selection_color); } } else { - // if it has text, then draw current line marker in the margin, as line number ect will draw over it, draw the rest of line marker later. + // if it has text, then draw current line marker in the margin, as line number etc will draw over it, draw the rest of line marker later. if (line == cursor.line && highlight_current_line) { VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(0, ofs_y, xmargin_beg, get_row_height()), cache.current_line_color); } @@ -936,7 +937,7 @@ void TextEdit::_notification(int p_what) { cache.font->draw(ci, Point2(cache.style_normal->get_margin(MARGIN_LEFT) + cache.breakpoint_gutter_width + ofs_x, ofs_y + cache.font->get_ascent()), fc, cache.line_number_color); } - //loop through charcters in one line + //loop through characters in one line for (int j = 0; j < str.length(); j++) { //look for keyword @@ -1024,6 +1025,21 @@ void TextEdit::_notification(int p_what) { const Color *col = keywords.custom_getptr(range, hash); + if (!col) { + col = member_keywords.custom_getptr(range, hash); + + if (col) { + for (int k = j - 1; k >= 0; k--) { + if (str[k] == '.') { + col = NULL; //member indexing not allowed + break; + } else if (str[k] > 32) { + break; + } + } + } + } + if (col) { in_keyword = true; @@ -1103,6 +1119,19 @@ void TextEdit::_notification(int p_what) { if ((char_ofs + char_margin) < xmargin_beg) { char_ofs += char_w; + + // line highlighting handle horizontal clipping + if (line == cursor.line && highlight_current_line) { + // char next to margin is skipped + if ((char_ofs + char_margin) > xmargin_beg) { + VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg + ofs_x, ofs_y, (char_ofs + char_margin) - (xmargin_beg + ofs_x), get_row_height()), cache.current_line_color); + } + + // end of line when last char is skipped + if (j == str.length() - 1) { + VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg + ofs_x, ofs_y, xmargin_end - (char_ofs + char_margin + char_w), get_row_height()), cache.current_line_color); + } + } continue; } @@ -1498,7 +1527,7 @@ void TextEdit::_notification(int p_what) { if (OS::get_singleton()->has_virtual_keyboard()) OS::get_singleton()->show_virtual_keyboard(get_text(), get_global_rect()); if (raised_from_completion) { - VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1); + VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 1); } } break; @@ -1512,7 +1541,7 @@ void TextEdit::_notification(int p_what) { if (OS::get_singleton()->has_virtual_keyboard()) OS::get_singleton()->hide_virtual_keyboard(); if (raised_from_completion) { - VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0); + VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 0); } } break; } @@ -1747,14 +1776,15 @@ void TextEdit::_get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) co float rows = p_mouse.y; rows -= cache.style_normal->get_margin(MARGIN_TOP); + rows += (CLAMP(v_scroll->get_value() - get_line_scroll_pos(true), 0, 1) * get_row_height()); rows /= get_row_height(); - int lsp = get_line_scroll_pos(true); - int row = cursor.line_ofs + (rows + (round(v_scroll->get_value()) - lsp)); + int first_vis_line = CLAMP(cursor.line_ofs, 0, text.size() - 1); + int row = first_vis_line + Math::floor(rows); if (is_hiding_enabled()) { // row will be offset by the hidden rows - int f_ofs = num_lines_from(CLAMP(cursor.line_ofs, 0, text.size() - 1), MIN(rows + 1, text.size() - cursor.line_ofs)) - 1; - row = cursor.line_ofs + (f_ofs + (round(v_scroll->get_value()) - lsp)); + int f_ofs = num_lines_from(first_vis_line, rows + 1) - 1; + row = first_vis_line + f_ofs; row = CLAMP(row, 0, text.size() - num_lines_from(text.size() - 1, -1)); } @@ -1822,10 +1852,18 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { if (mb->is_pressed()) { if (mb->get_button_index() == BUTTON_WHEEL_UP && !mb->get_command()) { - _scroll_up(3 * mb->get_factor()); + if (mb->get_shift()) { + h_scroll->set_value(h_scroll->get_value() - (100 * mb->get_factor())); + } else { + _scroll_up(3 * mb->get_factor()); + } } if (mb->get_button_index() == BUTTON_WHEEL_DOWN && !mb->get_command()) { - _scroll_down(3 * mb->get_factor()); + if (mb->get_shift()) { + h_scroll->set_value(h_scroll->get_value() + (100 * mb->get_factor())); + } else { + _scroll_down(3 * mb->get_factor()); + } } if (mb->get_button_index() == BUTTON_WHEEL_LEFT) { h_scroll->set_value(h_scroll->get_value() - (100 * mb->get_factor())); @@ -2581,22 +2619,19 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { if (cc == 0 && cursor.line > 0) { cursor_set_line(cursor.line - 1); cursor_set_column(text[cursor.line].length()); - break; - } - - while (cc > 0) { - - bool ischar = _is_text_char(text[cursor.line][cc - 1]); + } else { + while (cc > 0) { + bool ischar = _is_text_char(text[cursor.line][cc - 1]); - if (prev_char && !ischar) - break; + if (prev_char && !ischar) + break; - prev_char = ischar; - cc--; + prev_char = ischar; + cc--; + } + cursor_set_column(cc); } - cursor_set_column(cc); - } else if (cursor.column == 0) { if (cursor.line > 0) { @@ -2645,21 +2680,18 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { if (cc == text[cursor.line].length() && cursor.line < text.size() - 1) { cursor_set_line(cursor.line + 1); cursor_set_column(0); - break; - } - - while (cc < text[cursor.line].length()) { - - bool ischar = _is_text_char(text[cursor.line][cc]); + } else { + while (cc < text[cursor.line].length()) { + bool ischar = _is_text_char(text[cursor.line][cc]); - if (prev_char && !ischar) - break; - prev_char = ischar; - cc++; + if (prev_char && !ischar) + break; + prev_char = ischar; + cc++; + } + cursor_set_column(cc); } - cursor_set_column(cc); - } else if (cursor.column == text[cursor.line].length()) { if (cursor.line < text.size() - 1) { @@ -2731,6 +2763,8 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { _scroll_lines_down(); break; } + + { #else if (k->get_command() && k->get_alt()) { _scroll_lines_down(); @@ -2739,9 +2773,15 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { if (k->get_command()) cursor_set_line(text.size() - 1, true, false); - else + else { #endif - cursor_set_line(cursor_get_line() + num_lines_from(CLAMP(cursor.line + 1, 0, text.size() - 1), 1), true, false); + if (!is_last_visible_line(cursor.line)) { + cursor_set_line(cursor_get_line() + num_lines_from(CLAMP(cursor.line + 1, 0, text.size() - 1), 1), true, false); + } else { + cursor_set_line(text.size() - 1); + cursor_set_column(get_line(cursor.line).length(), true); + } + } if (k->get_shift()) _post_shift_selection(); @@ -3091,7 +3131,7 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { return; } - if (!scancode_handled && !k->get_command()) { //for german kbds + if (!scancode_handled && !k->get_command()) { //for German kbds if (k->get_unicode() >= 32) { @@ -3137,6 +3177,9 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { void TextEdit::_scroll_up(real_t p_delta) { + if (scrolling && smooth_scroll_enabled && SGN(target_v_scroll - v_scroll->get_value()) != SGN(-p_delta)) + scrolling = false; + if (scrolling) { target_v_scroll = (target_v_scroll - p_delta); } else { @@ -3147,8 +3190,12 @@ void TextEdit::_scroll_up(real_t p_delta) { if (target_v_scroll <= 0) { target_v_scroll = 0; } - scrolling = true; - set_physics_process(true); + if (Math::abs(target_v_scroll - v_scroll->get_value()) < 1.0) { + v_scroll->set_value(target_v_scroll); + } else { + scrolling = true; + set_physics_process(true); + } } else { v_scroll->set_value(target_v_scroll); } @@ -3156,6 +3203,9 @@ void TextEdit::_scroll_up(real_t p_delta) { void TextEdit::_scroll_down(real_t p_delta) { + if (scrolling && smooth_scroll_enabled && SGN(target_v_scroll - v_scroll->get_value()) != SGN(p_delta)) + scrolling = false; + if (scrolling) { target_v_scroll = (target_v_scroll + p_delta); } else { @@ -3172,8 +3222,13 @@ void TextEdit::_scroll_down(real_t p_delta) { if (target_v_scroll > max_v_scroll) { target_v_scroll = max_v_scroll; } - scrolling = true; - set_physics_process(true); + + if (Math::abs(target_v_scroll - v_scroll->get_value()) < 1.0) { + v_scroll->set_value(target_v_scroll); + } else { + scrolling = true; + set_physics_process(true); + } } else { v_scroll->set_value(target_v_scroll); } @@ -3615,9 +3670,10 @@ void TextEdit::center_viewport_to_cursor() { int visible_rows = get_visible_rows(); if (h_scroll->is_visible_in_tree()) visible_rows -= ((h_scroll->get_combined_minimum_size().height - 1) / get_row_height()); - - int max_ofs = text.size() - (scroll_past_end_of_file_enabled ? 1 : num_lines_from(text.size() - 1, -visible_rows)); - cursor.line_ofs = CLAMP(cursor.line - num_lines_from(cursor.line - visible_rows / 2, -visible_rows / 2), 0, max_ofs); + if (text.size() >= visible_rows) { + int max_ofs = text.size() - (scroll_past_end_of_file_enabled ? 1 : MAX(num_lines_from(text.size() - 1, -visible_rows), 0)); + cursor.line_ofs = CLAMP(cursor.line - num_lines_from(MAX(cursor.line - visible_rows / 2, 0), -visible_rows / 2), 0, max_ofs); + } int cursor_x = get_column_x_offset(cursor.column, text[cursor.line]); if (cursor_x > (cursor.x_ofs + visible_width)) @@ -4020,11 +4076,21 @@ void TextEdit::set_wrap(bool p_wrap) { wrap = p_wrap; } +bool TextEdit::is_wrapping() const { + + return wrap; +} + void TextEdit::set_max_chars(int p_max_chars) { max_chars = p_max_chars; } +int TextEdit::get_max_chars() const { + + return max_chars; +} + void TextEdit::_reset_caret_blink_timer() { if (caret_blink_enabled) { caret_blink_timer->stop(); @@ -4101,6 +4167,16 @@ void TextEdit::add_color_region(const String &p_begin_key, const String &p_end_k update(); } +void TextEdit::add_member_keyword(const String &p_keyword, const Color &p_color) { + member_keywords[p_keyword] = p_color; + update(); +} + +void TextEdit::clear_member_keywords() { + member_keywords.clear(); + update(); +} + void TextEdit::set_syntax_coloring(bool p_enabled) { syntax_coloring = p_enabled; @@ -4440,31 +4516,44 @@ bool TextEdit::search(const String &p_key, uint32_t p_search_flags, int p_from_l int pos_from = 0; int last_pos = -1; - while ((last_pos = (p_search_flags & SEARCH_MATCH_CASE) ? text_line.find(p_key, pos_from) : text_line.findn(p_key, pos_from)) != -1) { - if (p_search_flags & SEARCH_BACKWARDS) { + while (true) { - if (last_pos > from_column) - break; - pos = last_pos; + while ((last_pos = (p_search_flags & SEARCH_MATCH_CASE) ? text_line.find(p_key, pos_from) : text_line.findn(p_key, pos_from)) != -1) { - } else { + if (p_search_flags & SEARCH_BACKWARDS) { - if (last_pos >= from_column) { + if (last_pos > from_column) + break; pos = last_pos; - break; + + } else { + + if (last_pos >= from_column) { + pos = last_pos; + break; + } } + + pos_from = last_pos + p_key.length(); } - pos_from = last_pos + p_key.length(); - } + bool is_match = true; + + if (pos != -1 && (p_search_flags & SEARCH_WHOLE_WORDS)) { + //validate for whole words + if (pos > 0 && _is_text_char(text_line[pos - 1])) + is_match = false; + else if (pos + p_key.length() < text_line.length() && _is_text_char(text_line[pos + p_key.length()])) + is_match = false; + } + + if (is_match || last_pos == -1 || pos == -1) { + break; + } - if (pos != -1 && (p_search_flags & SEARCH_WHOLE_WORDS)) { - //validate for whole words - if (pos > 0 && _is_text_char(text_line[pos - 1])) - pos = -1; - else if (_is_text_char(text_line[pos + p_key.length()])) - pos = -1; + pos_from = pos + 1; + pos = -1; } if (pos != -1) @@ -4590,6 +4679,24 @@ int TextEdit::num_lines_from(int p_line_from, int unhidden_amount) const { return num_total; } +bool TextEdit::is_last_visible_line(int p_line) const { + + ERR_FAIL_INDEX_V(p_line, text.size(), false); + + if (p_line == text.size() - 1) + return true; + + if (!is_hiding_enabled()) + return false; + + for (int i = p_line + 1; i < text.size(); i++) { + if (!is_line_hidden(i)) + return false; + } + + return true; +} + int TextEdit::get_indent_level(int p_line) const { ERR_FAIL_INDEX_V(p_line, text.size(), 0); @@ -4785,6 +4892,8 @@ void TextEdit::undo() { else undo_stack_pos = undo_stack_pos->prev(); + deselect(); + TextOperation op = undo_stack_pos->get(); _do_text_op(op, true); current_op.version = op.prev_version; @@ -4819,6 +4928,8 @@ void TextEdit::redo() { if (undo_stack_pos == NULL) return; //nothing to do. + deselect(); + TextOperation op = undo_stack_pos->get(); _do_text_op(op, false); current_op.version = op.version; @@ -5019,7 +5130,7 @@ void TextEdit::_confirm_completion() { void TextEdit::_cancel_code_hint() { - VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0); + VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 0); raised_from_completion = false; completion_hint = ""; update(); @@ -5027,7 +5138,7 @@ void TextEdit::_cancel_code_hint() { void TextEdit::_cancel_completion() { - VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0); + VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 0); raised_from_completion = false; if (!completion_active) return; @@ -5202,7 +5313,7 @@ void TextEdit::query_code_comple() { void TextEdit::set_code_hint(const String &p_hint) { - VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1); + VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 1); raised_from_completion = true; completion_hint = p_hint; completion_hint_offset = -0xFFFF; @@ -5211,7 +5322,7 @@ void TextEdit::set_code_hint(const String &p_hint) { void TextEdit::code_complete(const Vector<String> &p_strings, bool p_forced) { - VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1); + VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 1); raised_from_completion = true; completion_strings = p_strings; completion_active = true; @@ -5485,7 +5596,9 @@ void TextEdit::_bind_methods() { ClassDB::bind_method(D_METHOD("is_readonly"), &TextEdit::is_readonly); ClassDB::bind_method(D_METHOD("set_wrap", "enable"), &TextEdit::set_wrap); - ClassDB::bind_method(D_METHOD("set_max_chars", "amount"), &TextEdit::set_max_chars); + ClassDB::bind_method(D_METHOD("is_wrapping"), &TextEdit::is_wrapping); + // ClassDB::bind_method(D_METHOD("set_max_chars", "amount"), &TextEdit::set_max_chars); + // ClassDB::bind_method(D_METHOD("get_max_char"), &TextEdit::get_max_chars); ClassDB::bind_method(D_METHOD("set_context_menu_enabled", "enable"), &TextEdit::set_context_menu_enabled); ClassDB::bind_method(D_METHOD("is_context_menu_enabled"), &TextEdit::is_context_menu_enabled); @@ -5559,6 +5672,8 @@ void TextEdit::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smooth_scrolling"), "set_smooth_scroll_enable", "is_smooth_scroll_enabled"); 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_lines"), "set_wrap", "is_wrapping"); + // ADD_PROPERTY(PropertyInfo(Variant::BOOL, "max_chars"), "set_max_chars", "get_max_chars"); ADD_GROUP("Caret", "caret_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_block_mode"), "cursor_set_block_mode", "cursor_is_block_mode"); diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 320bb6d9fd..acbf41aa81 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXT_EDIT_H #define TEXT_EDIT_H @@ -209,6 +210,7 @@ class TextEdit : public Control { //syntax coloring HashMap<String, Color> keywords; + HashMap<String, Color> member_keywords; Vector<ColorRegion> color_regions; @@ -433,6 +435,7 @@ public: void fold_all_lines(); void unhide_all_lines(); int num_lines_from(int p_line_from, int unhidden_amount) const; + bool is_last_visible_line(int p_line) const; bool can_fold(int p_line) const; bool is_folded(int p_line) const; void fold_line(int p_line); @@ -489,7 +492,10 @@ public: bool is_readonly() const; void set_max_chars(int p_max_chars); + int get_max_chars() const; + void set_wrap(bool p_wrap); + bool is_wrapping() const; void clear(); @@ -541,6 +547,9 @@ public: void add_color_region(const String &p_begin_key = String(), const String &p_end_key = String(), const Color &p_color = Color(), bool p_line_only = false); void clear_colors(); + void add_member_keyword(const String &p_keyword, const Color &p_color); + void clear_member_keywords(); + int get_v_scroll() const; void set_v_scroll(int p_scroll); diff --git a/scene/gui/texture_button.cpp b/scene/gui/texture_button.cpp index ec77fae1fa..07c9894611 100644 --- a/scene/gui/texture_button.cpp +++ b/scene/gui/texture_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_button.h" Size2 TextureButton::get_minimum_size() const { diff --git a/scene/gui/texture_button.h b/scene/gui/texture_button.h index c6b05703ed..1cf4b66413 100644 --- a/scene/gui/texture_button.h +++ b/scene/gui/texture_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_BUTTON_H #define TEXTURE_BUTTON_H diff --git a/scene/gui/texture_progress.cpp b/scene/gui/texture_progress.cpp index 5f0c7f7385..01b00c34ea 100644 --- a/scene/gui/texture_progress.cpp +++ b/scene/gui/texture_progress.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_progress.h" #include "engine.h" diff --git a/scene/gui/texture_progress.h b/scene/gui/texture_progress.h index ab1f42fe3b..77c3980e29 100644 --- a/scene/gui/texture_progress.h +++ b/scene/gui/texture_progress.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_PROGRESS_H #define TEXTURE_PROGRESS_H diff --git a/scene/gui/texture_rect.cpp b/scene/gui/texture_rect.cpp index 5b689cfce2..f4285525f6 100644 --- a/scene/gui/texture_rect.cpp +++ b/scene/gui/texture_rect.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture_rect.h" #include "servers/visual_server.h" diff --git a/scene/gui/texture_rect.h b/scene/gui/texture_rect.h index b6ccdff217..b684ac816c 100644 --- a/scene/gui/texture_rect.h +++ b/scene/gui/texture_rect.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_FRAME_H #define TEXTURE_FRAME_H diff --git a/scene/gui/tool_button.cpp b/scene/gui/tool_button.cpp index e86776af90..4220a6b5ce 100644 --- a/scene/gui/tool_button.cpp +++ b/scene/gui/tool_button.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tool_button.h" ToolButton::ToolButton() { diff --git a/scene/gui/tool_button.h b/scene/gui/tool_button.h index 14a7cdc2fe..b8be18e560 100644 --- a/scene/gui/tool_button.h +++ b/scene/gui/tool_button.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TOOL_BUTTON_H #define TOOL_BUTTON_H diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 08f1bdff3d..e12044fca2 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tree.h" #include <limits.h> @@ -44,12 +45,12 @@ void TreeItem::move_to_top() { - if (!parent || parent->childs == this) + if (!parent || parent->children == this) return; //already on top TreeItem *prev = get_prev(); prev->next = next; - next = parent->childs; - parent->childs = this; + next = parent->children; + parent->children = this; } void TreeItem::move_to_bottom() { @@ -64,7 +65,7 @@ void TreeItem::move_to_bottom() { if (prev) { prev->next = next; } else { - parent->childs = next; + parent->children = next; } last->next = this; next = NULL; @@ -367,10 +368,10 @@ TreeItem *TreeItem::get_next() { TreeItem *TreeItem::get_prev() { - if (!parent || parent->childs == this) + if (!parent || parent->children == this) return NULL; - TreeItem *prev = parent->childs; + TreeItem *prev = parent->children; while (prev && prev->next != this) prev = prev->next; @@ -384,7 +385,7 @@ TreeItem *TreeItem::get_parent() { TreeItem *TreeItem::get_children() { - return childs; + return children; } TreeItem *TreeItem::get_prev_visible() { @@ -401,10 +402,10 @@ TreeItem *TreeItem::get_prev_visible() { } else { current = prev; - while (!current->collapsed && current->childs) { + while (!current->collapsed && current->children) { //go to the very end - current = current->childs; + current = current->children; while (current->next) current = current->next; } @@ -417,9 +418,9 @@ TreeItem *TreeItem::get_next_visible() { TreeItem *current = this; - if (!current->collapsed && current->childs) { + if (!current->collapsed && current->children) { - current = current->childs; + current = current->children; } else if (current->next) { @@ -443,7 +444,7 @@ TreeItem *TreeItem::get_next_visible() { void TreeItem::remove_child(TreeItem *p_item) { ERR_FAIL_NULL(p_item); - TreeItem **c = &childs; + TreeItem **c = &children; while (*c) { @@ -783,6 +784,10 @@ void TreeItem::_bind_methods() { ClassDB::bind_method(D_METHOD("set_disable_folding", "disable"), &TreeItem::set_disable_folding); ClassDB::bind_method(D_METHOD("is_folding_disabled"), &TreeItem::is_folding_disabled); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collapsed"), "set_collapsed", "is_collapsed"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disable_folding"), "set_disable_folding", "is_folding_disabled"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "custom_minimum_height", PROPERTY_HINT_RANGE, "0,1000,1"), "set_custom_minimum_height", "get_custom_minimum_height"); + BIND_ENUM_CONSTANT(CELL_MODE_STRING); BIND_ENUM_CONSTANT(CELL_MODE_CHECK); BIND_ENUM_CONSTANT(CELL_MODE_RANGE); @@ -797,16 +802,16 @@ void TreeItem::_bind_methods() { void TreeItem::clear_children() { - TreeItem *c = childs; + TreeItem *c = children; while (c) { TreeItem *aux = c; c = c->get_next(); - aux->parent = 0; // so it wont try to recursively autoremove from me in here + aux->parent = 0; // so it won't try to recursively autoremove from me in here memdelete(aux); } - childs = 0; + children = 0; }; TreeItem::TreeItem(Tree *p_tree) { @@ -818,7 +823,7 @@ TreeItem::TreeItem(Tree *p_tree) { parent = 0; // parent item next = 0; // next in list - childs = 0; //child items + children = 0; //child items } TreeItem::~TreeItem() { @@ -915,6 +920,7 @@ int Tree::compute_item_height(TreeItem *p_item) const { if (p_item == root && hide_root) return 0; + ERR_FAIL_COND_V(cache.font.is_null(), 0); int height = cache.font->get_height(); for (int i = 0; i < columns.size(); i++) { @@ -971,9 +977,9 @@ int Tree::get_item_height(TreeItem *p_item) const { int height = compute_item_height(p_item); height += cache.vseparation; - if (!p_item->collapsed) { /* if not collapsed, check the childs */ + if (!p_item->collapsed) { /* if not collapsed, check the children */ - TreeItem *c = p_item->childs; + TreeItem *c = p_item->children; while (c) { @@ -988,6 +994,8 @@ int Tree::get_item_height(TreeItem *p_item) const { void Tree::draw_item_rect(const TreeItem::Cell &p_cell, const Rect2i &p_rect, const Color &p_color, const Color &p_icon_color) { + ERR_FAIL_COND(cache.font.is_null()); + Rect2i rect = p_rect; Ref<Font> font = cache.font; String text = p_cell.text; @@ -1057,6 +1065,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 //draw separation. //if (p_item->get_parent()!=root || !hide_root) + ERR_FAIL_COND_V(cache.font.is_null(), -1); Ref<Font> font = cache.font; int font_ascent = font->get_ascent(); @@ -1377,7 +1386,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 } } - if (!p_item->disable_folding && !hide_folding && p_item->childs) { //has childs, draw the guide box + if (!p_item->disable_folding && !hide_folding && p_item->children) { //has children, draw the guide box Ref<Texture> arrow; @@ -1404,9 +1413,9 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 children_pos.y += htotal; } - if (!p_item->collapsed) { /* if not collapsed, check the childs */ + if (!p_item->collapsed) { /* if not collapsed, check the children */ - TreeItem *c = p_item->childs; + TreeItem *c = p_item->children; while (c) { @@ -1423,17 +1432,33 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 #endif Point2i parent_pos = Point2i(parent_ofs - cache.arrow->get_width() / 2, p_pos.y + label_h / 2 + cache.arrow->get_height() / 2) - cache.offset + p_draw_ofs; - VisualServer::get_singleton()->canvas_item_add_line(ci, root_pos, Point2i(parent_pos.x - Math::floor(line_width / 2), root_pos.y), cache.relationship_line_color, line_width); - VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), parent_pos, cache.relationship_line_color, line_width); + + if (root_pos.y + line_width >= 0) { + VisualServer::get_singleton()->canvas_item_add_line(ci, root_pos, Point2i(parent_pos.x - Math::floor(line_width / 2), root_pos.y), cache.relationship_line_color, line_width); + VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), parent_pos, cache.relationship_line_color, line_width); + } + + if (htotal < 0) { + return -1; + } } - int child_h = draw_item(children_pos, p_draw_ofs, p_draw_size, c); + if (htotal >= 0) { + int child_h = draw_item(children_pos, p_draw_ofs, p_draw_size, c); - if (child_h < 0 && cache.draw_relationship_lines == 0) - return -1; // break, stop drawing, no need to anymore + if (child_h < 0) { + if (cache.draw_relationship_lines == 0) { + return -1; // break, stop drawing, no need to anymore + } else { + htotal = -1; + children_pos.y = cache.offset.y + p_draw_size.height; + } + } else { + htotal += child_h; + children_pos.y += child_h; + } + } - htotal += child_h; - children_pos.y += child_h; c = c->next; } } @@ -1544,7 +1569,7 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c *r_in_range = false; } - TreeItem *c = p_current->childs; + TreeItem *c = p_current->children; while (c) { @@ -1610,7 +1635,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool if (!p_item->disable_folding && !hide_folding && (p_pos.x >= x_ofs && p_pos.x < (x_ofs + cache.item_margin))) { - if (p_item->childs) + if (p_item->children) p_item->set_collapsed(!p_item->is_collapsed()); return -1; //handled! @@ -1917,9 +1942,9 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool new_pos.y -= item_h; } - if (!p_item->collapsed) { /* if not collapsed, check the childs */ + if (!p_item->collapsed) { /* if not collapsed, check the children */ - TreeItem *c = p_item->childs; + TreeItem *c = p_item->children; while (c) { @@ -2352,8 +2377,6 @@ void Tree::_gui_input(Ref<InputEvent> p_event) { last_keypress = 0; } } break; - - last_keypress = 0; } } @@ -2779,6 +2802,7 @@ void Tree::update_scrollbars() { int Tree::_get_title_button_height() const { + ERR_FAIL_COND_V(cache.font.is_null() || cache.title_button.is_null(), 0); return show_column_titles ? cache.font->get_height() + cache.title_button->get_minimum_size().height : 0; } @@ -2964,7 +2988,7 @@ TreeItem *Tree::create_item(TreeItem *p_parent, int p_idx) { ti->cells.resize(columns.size()); TreeItem *prev = NULL; - TreeItem *c = p_parent->childs; + TreeItem *c = p_parent->children; int idx = 0; while (c) { @@ -2979,7 +3003,7 @@ TreeItem *Tree::create_item(TreeItem *p_parent, int p_idx) { if (prev) prev->next = ti; else - p_parent->childs = ti; + p_parent->children = ti; ti->parent = p_parent; } else { @@ -3012,8 +3036,8 @@ TreeItem *Tree::get_last_item() { if (last->next) last = last->next; - else if (last->childs) - last = last->childs; + else if (last->children) + last = last->children; else break; } @@ -3046,6 +3070,7 @@ void Tree::item_selected(int p_column, TreeItem *p_item) { p_item->cells[p_column].selected = true; //emit_signal("multi_selected",p_item,p_column,true); - NO this is for TreeItem::select + selected_col = p_column; } else { select_single_item(p_item, root, p_column); @@ -3066,12 +3091,19 @@ void Tree::set_select_mode(SelectMode p_mode) { select_mode = p_mode; } +Tree::SelectMode Tree::get_select_mode() const { + + return select_mode; +} + void Tree::deselect_all() { TreeItem *item = get_next_selected(get_root()); while (item) { item->deselect(selected_col); + TreeItem *prev_item = item; item = get_next_selected(get_root()); + ERR_FAIL_COND(item == prev_item); } selected_item = NULL; @@ -3119,6 +3151,11 @@ void Tree::set_hide_root(bool p_enabled) { update(); } +bool Tree::is_root_hidden() const { + + return hide_root; +} + void Tree::set_column_min_width(int p_column, int p_min_width) { ERR_FAIL_INDEX(p_column, columns.size()); @@ -3171,9 +3208,9 @@ TreeItem *Tree::get_next_selected(TreeItem *p_item) { p_item = root; } else { - if (p_item->childs) { + if (p_item->children) { - p_item = p_item->childs; + p_item = p_item->children; } else if (p_item->next) { @@ -3288,9 +3325,9 @@ int Tree::get_item_offset(TreeItem *p_item) const { ofs += compute_item_height(it) + cache.vseparation; - if (it->childs && !it->collapsed) { + if (it->children && !it->collapsed) { - it = it->childs; + it = it->children; } else if (it->next) { @@ -3511,7 +3548,7 @@ TreeItem *Tree::_find_item_at_pos(TreeItem *p_item, const Point2 &p_pos, int &r_ } if (p_item->is_collapsed()) - return NULL; // do not try childs, it's collapsed + return NULL; // do not try children, it's collapsed TreeItem *n = p_item->get_children(); while (n) { @@ -3739,11 +3776,13 @@ void Tree::_bind_methods() { ClassDB::bind_method(D_METHOD("get_column_width", "column"), &Tree::get_column_width); ClassDB::bind_method(D_METHOD("set_hide_root", "enable"), &Tree::set_hide_root); + ClassDB::bind_method(D_METHOD("is_root_hidden"), &Tree::is_root_hidden); ClassDB::bind_method(D_METHOD("get_next_selected", "from"), &Tree::_get_next_selected); ClassDB::bind_method(D_METHOD("get_selected"), &Tree::get_selected); ClassDB::bind_method(D_METHOD("get_selected_column"), &Tree::get_selected_column); ClassDB::bind_method(D_METHOD("get_pressed_button"), &Tree::get_pressed_button); ClassDB::bind_method(D_METHOD("set_select_mode", "mode"), &Tree::set_select_mode); + ClassDB::bind_method(D_METHOD("get_select_mode"), &Tree::get_select_mode); ClassDB::bind_method(D_METHOD("set_columns", "amount"), &Tree::set_columns); ClassDB::bind_method(D_METHOD("get_columns"), &Tree::get_columns); @@ -3777,6 +3816,14 @@ void Tree::_bind_methods() { ClassDB::bind_method(D_METHOD("set_allow_reselect", "allow"), &Tree::set_allow_reselect); ClassDB::bind_method(D_METHOD("get_allow_reselect"), &Tree::get_allow_reselect); + ADD_PROPERTY(PropertyInfo(Variant::INT, "columns"), "set_columns", "get_columns"); + 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::BOOL, "hide_folding"), "set_hide_folding", "is_folding_hidden"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_root"), "set_hide_root", "is_root_hidden"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "drop_mode_flags", PROPERTY_HINT_FLAGS, "On Item,In between"), "set_drop_mode_flags", "get_drop_mode_flags"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "select_mode", PROPERTY_HINT_ENUM, "Single,Row,Multi"), "set_select_mode", "get_select_mode"); + ADD_SIGNAL(MethodInfo("item_selected")); ADD_SIGNAL(MethodInfo("cell_selected")); ADD_SIGNAL(MethodInfo("multi_selected", PropertyInfo(Variant::OBJECT, "item"), PropertyInfo(Variant::INT, "column"), PropertyInfo(Variant::BOOL, "selected"))); diff --git a/scene/gui/tree.h b/scene/gui/tree.h index a6ebf6c3da..2a8546a743 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TREE_H #define TREE_H @@ -143,13 +144,13 @@ private: Vector<Cell> cells; - bool collapsed; // wont show childs + bool collapsed; // won't show children bool disable_folding; int custom_min_height; TreeItem *parent; // parent item TreeItem *next; // next in list - TreeItem *childs; //child items + TreeItem *children; //child items Tree *tree; //tree (for reference) TreeItem(Tree *p_tree); @@ -541,11 +542,13 @@ public: int get_column_width(int p_column) const; void set_hide_root(bool p_enabled); + bool is_root_hidden() const; TreeItem *get_next_selected(TreeItem *p_item); TreeItem *get_selected() const; int get_selected_column() const; int get_pressed_button() const; void set_select_mode(SelectMode p_mode); + SelectMode get_select_mode() const; void deselect_all(); bool is_anything_selected(); diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp index 06be83bf08..4eee0126d8 100644 --- a/scene/gui/video_player.cpp +++ b/scene/gui/video_player.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "video_player.h" #include "os/os.h" @@ -37,11 +38,6 @@ int VideoPlayer::sp_get_channel_count() const { return playback->get_channels(); } -void VideoPlayer::sp_set_mix_rate(int p_rate) { - - server_mix_rate = p_rate; -} - bool VideoPlayer::mix(AudioFrame *p_buffer, int p_frames) { // Check the amount resampler can really handle. @@ -240,7 +236,7 @@ void VideoPlayer::set_stream(const Ref<VideoStream> &p_stream) { AudioServer::get_singleton()->lock(); if (channels > 0) - resampler.setup(channels, playback->get_mix_rate(), server_mix_rate, buffering_ms, 0); + resampler.setup(channels, playback->get_mix_rate(), AudioServer::get_singleton()->get_mix_rate(), buffering_ms, 0); else resampler.clear(); AudioServer::get_singleton()->unlock(); @@ -475,9 +471,13 @@ void VideoPlayer::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "VideoStream"), "set_stream", "get_stream"); //ADD_PROPERTY( PropertyInfo(Variant::BOOL, "stream/loop"), "set_loop", "has_loop") ; ADD_PROPERTY(PropertyInfo(Variant::REAL, "volume_db", PROPERTY_HINT_RANGE, "-80,24,0.01"), "set_volume_db", "get_volume_db"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "volume", PROPERTY_HINT_EXP_RANGE, "0,15,0.01", 0), "set_volume", "get_volume"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autoplay"), "set_autoplay", "has_autoplay"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused"), "set_paused", "is_paused"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "expand"), "set_expand", "has_expand"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "buffering_msec", PROPERTY_HINT_RANGE, "10,1000"), "set_buffering_msec", "get_buffering_msec"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "stream_position", PROPERTY_HINT_RANGE, "0,1280000,0.1", 0), "set_stream_position", "get_stream_position"); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus"); } @@ -493,7 +493,6 @@ VideoPlayer::VideoPlayer() { bus_index = 0; buffering_ms = 500; - server_mix_rate = 44100; // internal_stream.player=this; // stream_rid=AudioServer::get_singleton()->audio_stream_create(&internal_stream); diff --git a/scene/gui/video_player.h b/scene/gui/video_player.h index e772851b0e..5c379b5620 100644 --- a/scene/gui/video_player.h +++ b/scene/gui/video_player.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VIDEO_PLAYER_H #define VIDEO_PLAYER_H @@ -49,7 +50,6 @@ class VideoPlayer : public Control { Ref<VideoStream> stream; int sp_get_channel_count() const; - void sp_set_mix_rate(int p_rate); //notify the stream of the mix rate bool mix(AudioFrame *p_buffer, int p_frames); RID stream_rid; @@ -68,7 +68,6 @@ class VideoPlayer : public Control { bool expand; bool loops; int buffering_ms; - int server_mix_rate; int audio_track; int bus_index; diff --git a/scene/gui/viewport_container.cpp b/scene/gui/viewport_container.cpp index e949c20c36..ac5e6020eb 100644 --- a/scene/gui/viewport_container.cpp +++ b/scene/gui/viewport_container.cpp @@ -27,8 +27,10 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "viewport_container.h" +#include "core/engine.h" #include "scene/main/viewport.h" Size2 ViewportContainer::get_minimum_size() const { @@ -138,8 +140,34 @@ void ViewportContainer::_notification(int p_what) { } } +void ViewportContainer::_input(const Ref<InputEvent> &p_event) { + + if (Engine::get_singleton()->is_editor_hint()) + return; + + Transform2D xform = get_global_transform(); + + if (stretch) { + Transform2D scale_xf; + scale_xf.scale(Vector2(shrink, shrink)); + xform *= scale_xf; + } + + Ref<InputEvent> ev = p_event->xformed_by(xform.affine_inverse()); + + for (int i = 0; i < get_child_count(); i++) { + + Viewport *c = Object::cast_to<Viewport>(get_child(i)); + if (!c || c->is_input_disabled()) + continue; + + c->input(ev); + } +} + void ViewportContainer::_bind_methods() { + ClassDB::bind_method(D_METHOD("_input", "event"), &ViewportContainer::_input); ClassDB::bind_method(D_METHOD("set_stretch", "enable"), &ViewportContainer::set_stretch); ClassDB::bind_method(D_METHOD("is_stretch_enabled"), &ViewportContainer::is_stretch_enabled); @@ -154,4 +182,5 @@ ViewportContainer::ViewportContainer() { stretch = false; shrink = 1; + set_process_input(true); } diff --git a/scene/gui/viewport_container.h b/scene/gui/viewport_container.h index c28b3075aa..45c4cd03a1 100644 --- a/scene/gui/viewport_container.h +++ b/scene/gui/viewport_container.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VIEWPORTCONTAINER_H #define VIEWPORTCONTAINER_H @@ -47,6 +48,7 @@ public: void set_stretch(bool p_enable); bool is_stretch_enabled() const; + void _input(const Ref<InputEvent> &p_event); void set_stretch_shrink(int p_shrink); int get_stretch_shrink() const; diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp index 939de346eb..31d45d8e4c 100644 --- a/scene/main/canvas_layer.cpp +++ b/scene/main/canvas_layer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "canvas_layer.h" #include "viewport.h" @@ -253,8 +254,11 @@ void CanvasLayer::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_RANGE, "-128,128,1"), "set_layer", "get_layer"); //ADD_PROPERTY( PropertyInfo(Variant::MATRIX32,"transform",PROPERTY_HINT_RANGE),"set_transform","get_transform") ; ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset"); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "rotation"), "set_rotation_degrees", "get_rotation_degrees"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "rotation_degrees", PROPERTY_HINT_RANGE, "-1440,1440,0.1", PROPERTY_USAGE_EDITOR), "set_rotation_degrees", "get_rotation_degrees"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "rotation", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_rotation", "get_rotation"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale"), "set_scale", "get_scale"); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", 0), "set_custom_viewport", "get_custom_viewport"); } CanvasLayer::CanvasLayer() { diff --git a/scene/main/canvas_layer.h b/scene/main/canvas_layer.h index 81d2616cdc..c3352a6dba 100644 --- a/scene/main/canvas_layer.h +++ b/scene/main/canvas_layer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CANVAS_LAYER_H #define CANVAS_LAYER_H diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp index e99a21fbce..3d58aa65f8 100644 --- a/scene/main/http_request.cpp +++ b/scene/main/http_request.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "http_request.h" #include "version.h" @@ -523,6 +524,7 @@ void HTTPRequest::_bind_methods() { ClassDB::bind_method(D_METHOD("_redirect_request"), &HTTPRequest::_redirect_request); ClassDB::bind_method(D_METHOD("_request_done"), &HTTPRequest::_request_done); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "download_file", PROPERTY_HINT_FILE), "set_download_file", "get_download_file"); 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 1777a7f8f1..eb5d020bc5 100644 --- a/scene/main/http_request.h +++ b/scene/main/http_request.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef HTTPREQUEST_H #define HTTPREQUEST_H diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp index a2c29d8209..24b04c0c4a 100644 --- a/scene/main/instance_placeholder.cpp +++ b/scene/main/instance_placeholder.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "instance_placeholder.h" #include "io/resource_loader.h" diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h index 9b2f1e1168..d70f1318ea 100644 --- a/scene/main/instance_placeholder.h +++ b/scene/main/instance_placeholder.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef INSTANCE_PLACEHOLDER_H #define INSTANCE_PLACEHOLDER_H diff --git a/scene/main/node.cpp b/scene/main/node.cpp index d82000e3fa..ac85dd64af 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "node.h" #include "core/core_string_names.h" @@ -183,7 +184,7 @@ void Node::_propagate_ready() { } void Node::_propagate_enter_tree() { - // this needs to happen to all childs before any enter_tree + // this needs to happen to all children before any enter_tree if (data.parent) { data.tree = data.parent->data.tree; @@ -274,7 +275,7 @@ void Node::_propagate_exit_tree() { get_script_instance()->call_multilevel(SceneStringNames::get_singleton()->_exit_tree, NULL, 0); } - emit_signal(SceneStringNames::get_singleton()->tree_exited); + emit_signal(SceneStringNames::get_singleton()->tree_exiting); notification(NOTIFICATION_EXIT_TREE, true); if (data.tree) @@ -296,6 +297,8 @@ void Node::_propagate_exit_tree() { data.ready_notified = false; data.tree = NULL; data.depth = -1; + + emit_signal(SceneStringNames::get_singleton()->tree_exited); } void Node::move_child(Node *p_child, int p_pos) { @@ -1199,13 +1202,13 @@ void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) { unique = false; } else { //check if exists - Node **childs = data.children.ptrw(); + Node **children = data.children.ptrw(); int cc = data.children.size(); for (int i = 0; i < cc; i++) { - if (childs[i] == p_child) + if (children[i] == p_child) continue; - if (childs[i]->data.name == p_child->data.name) { + if (children[i]->data.name == p_child->data.name) { unique = false; break; } @@ -1308,7 +1311,7 @@ void Node::_add_child_nocheck(Node *p_child, const StringName &p_name) { } /* Notify */ - //recognize childs created in this node constructor + //recognize children created in this node constructor p_child->data.parent_owned = data.in_constructor; add_child_notify(p_child); } @@ -2168,7 +2171,16 @@ Node *Node::_duplicate(int p_flags, Map<const Node *, Node *> *r_duplimap) const value = Array(value).duplicate(); } - current_node->set(name, value); + if (E->get().usage & PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE) { + + Resource *res = Object::cast_to<Resource>(value); + if (res) // Duplicate only if it's a resource + current_node->set(name, res->duplicate()); + + } else { + + current_node->set(name, value); + } } } @@ -2880,7 +2892,7 @@ void Node::_bind_methods() { #ifdef TOOLS_ENABLED ClassDB::bind_method(D_METHOD("_set_import_path", "import_path"), &Node::set_import_path); ClassDB::bind_method(D_METHOD("_get_import_path"), &Node::get_import_path); - ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "_import_path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_import_path", "_get_import_path"); + ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "_import_path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_import_path", "_get_import_path"); #endif @@ -2942,6 +2954,7 @@ void Node::_bind_methods() { ADD_SIGNAL(MethodInfo("renamed")); ADD_SIGNAL(MethodInfo("tree_entered")); + ADD_SIGNAL(MethodInfo("tree_exiting")); ADD_SIGNAL(MethodInfo("tree_exited")); //ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/process" ),"set_process","is_processing") ; @@ -2950,7 +2963,10 @@ void Node::_bind_methods() { //ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/unhandled_input" ), "set_process_unhandled_input","is_processing_unhandled_input" ) ; ADD_GROUP("Pause", "pause_"); ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "pause_mode", PROPERTY_HINT_ENUM, "Inherit,Stop,Process"), "set_pause_mode", "get_pause_mode"); - ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "editor/display_folded", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_display_folded", "is_displayed_folded"); + ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "editor/display_folded", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_display_folded", "is_displayed_folded"); + ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "name", PROPERTY_HINT_NONE, "", 0), "set_name", "get_name"); + ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "filename", PROPERTY_HINT_NONE, "", 0), "set_filename", "get_filename"); + ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "owner", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "set_owner", "get_owner"); BIND_VMETHOD(MethodInfo("_process", PropertyInfo(Variant::REAL, "delta"))); BIND_VMETHOD(MethodInfo("_physics_process", PropertyInfo(Variant::REAL, "delta"))); diff --git a/scene/main/node.h b/scene/main/node.h index 2aca84324d..dc6bda4621 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef NODE_H #define NODE_H diff --git a/scene/main/resource_preloader.cpp b/scene/main/resource_preloader.cpp index 76fa40cc7c..dbe7daa604 100644 --- a/scene/main/resource_preloader.cpp +++ b/scene/main/resource_preloader.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "resource_preloader.h" void ResourcePreloader::_set_resources(const Array &p_data) { @@ -160,7 +161,7 @@ void ResourcePreloader::_bind_methods() { ClassDB::bind_method(D_METHOD("get_resource", "name"), &ResourcePreloader::get_resource); ClassDB::bind_method(D_METHOD("get_resource_list"), &ResourcePreloader::_get_resource_list); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "resources", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_resources", "_get_resources"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "resources", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_resources", "_get_resources"); } ResourcePreloader::ResourcePreloader() { diff --git a/scene/main/resource_preloader.h b/scene/main/resource_preloader.h index 479cde51ae..98c7b21f37 100644 --- a/scene/main/resource_preloader.h +++ b/scene/main/resource_preloader.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RESOURCE_PRELOADER_H #define RESOURCE_PRELOADER_H diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 07f93fa52b..55ae9fe1ec 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scene_tree.h" #include "editor/editor_node.h" @@ -54,6 +55,8 @@ void SceneTreeTimer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_time_left", "time"), &SceneTreeTimer::set_time_left); ClassDB::bind_method(D_METHOD("get_time_left"), &SceneTreeTimer::get_time_left); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "time_left"), "set_time_left", "get_time_left"); + ADD_SIGNAL(MethodInfo("timeout")); } @@ -1683,6 +1686,11 @@ void SceneTree::set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_network_ } } +Ref<NetworkedMultiplayerPeer> SceneTree::get_network_peer() const { + + return network_peer; +} + bool SceneTree::is_network_server() const { ERR_FAIL_COND_V(!network_peer.is_valid(), false); @@ -2126,6 +2134,7 @@ void SceneTree::_bind_methods() { ClassDB::bind_method(D_METHOD("has_group", "name"), &SceneTree::has_group); ClassDB::bind_method(D_METHOD("set_auto_accept_quit", "enabled"), &SceneTree::set_auto_accept_quit); + ClassDB::bind_method(D_METHOD("set_quit_on_go_back", "enabled"), &SceneTree::set_quit_on_go_back); ClassDB::bind_method(D_METHOD("set_debug_collisions_hint", "enable"), &SceneTree::set_debug_collisions_hint); ClassDB::bind_method(D_METHOD("is_debugging_collisions_hint"), &SceneTree::is_debugging_collisions_hint); @@ -2186,6 +2195,7 @@ void SceneTree::_bind_methods() { ClassDB::bind_method(D_METHOD("_change_scene"), &SceneTree::_change_scene); ClassDB::bind_method(D_METHOD("set_network_peer", "peer"), &SceneTree::set_network_peer); + ClassDB::bind_method(D_METHOD("get_network_peer"), &SceneTree::get_network_peer); ClassDB::bind_method(D_METHOD("is_network_server"), &SceneTree::is_network_server); ClassDB::bind_method(D_METHOD("has_network_peer"), &SceneTree::has_network_peer); ClassDB::bind_method(D_METHOD("get_network_connected_peers"), &SceneTree::get_network_connected_peers); @@ -2202,6 +2212,18 @@ void SceneTree::_bind_methods() { ClassDB::bind_method(D_METHOD("set_use_font_oversampling", "enable"), &SceneTree::set_use_font_oversampling); ClassDB::bind_method(D_METHOD("is_using_font_oversampling"), &SceneTree::is_using_font_oversampling); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debug_collisions_hint"), "set_debug_collisions_hint", "is_debugging_collisions_hint"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debug_navigation_hint"), "set_debug_navigation_hint", "is_debugging_navigation_hint"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused"), "set_pause", "is_paused"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "refuse_new_network_connections"), "set_refuse_new_network_connections", "is_refusing_new_network_connections"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_font_oversampling"), "set_use_font_oversampling", "is_using_font_oversampling"); +#ifdef TOOLS_ENABLED + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "edited_scene_root", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "set_edited_scene_root", "get_edited_scene_root"); +#endif + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "current_scene", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "set_current_scene", "get_current_scene"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "network_peer", PROPERTY_HINT_RESOURCE_TYPE, "NetworkedMultiplayerPeer", 0), "set_network_peer", "get_network_peer"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "root", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "", "get_root"); + ADD_SIGNAL(MethodInfo("tree_changed")); ADD_SIGNAL(MethodInfo("node_added", PropertyInfo(Variant::OBJECT, "node"))); ADD_SIGNAL(MethodInfo("node_removed", PropertyInfo(Variant::OBJECT, "node"))); @@ -2349,7 +2371,7 @@ SceneTree::SceneTree() { ProjectSettings::get_singleton()->set("rendering/environment/default_environment", ""); } else { //file was erased, notify user. - ERR_PRINTS(RTR("Default Environment as specified in Project Setings (Rendering -> Environment -> Default Environment) could not be loaded.")); + ERR_PRINTS(RTR("Default Environment as specified in Project Settings (Rendering -> Environment -> Default Environment) could not be loaded.")); } } } diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h index dab446e226..c5357762ec 100644 --- a/scene/main/scene_tree.h +++ b/scene/main/scene_tree.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENE_MAIN_LOOP_H #define SCENE_MAIN_LOOP_H @@ -450,6 +451,7 @@ public: //network API void set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_network_peer); + Ref<NetworkedMultiplayerPeer> get_network_peer() const; bool is_network_server() const; bool has_network_peer() const; int get_network_unique_id() const; diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp index 90cec07f56..ad2cdbfd0f 100755 --- a/scene/main/timer.cpp +++ b/scene/main/timer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "timer.h" #include "engine.h" @@ -203,6 +204,8 @@ void Timer::_bind_methods() { 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::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"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "time_left", PROPERTY_HINT_NONE, "", 0), "", "get_time_left"); BIND_ENUM_CONSTANT(TIMER_PROCESS_PHYSICS); BIND_ENUM_CONSTANT(TIMER_PROCESS_IDLE); diff --git a/scene/main/timer.h b/scene/main/timer.h index 8c15e2eac7..410d985407 100755 --- a/scene/main/timer.h +++ b/scene/main/timer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TIMER_H #define TIMER_H diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 78706ee14a..1ff1f4b6d8 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "viewport.h" #include "os/input.h" @@ -195,8 +196,6 @@ void Viewport::_update_stretch_transform() { if (size_override_stretch && size_override) { - //print_line("sive override size "+size_override_size); - //print_line("rect size "+size); stretch_transform = Transform2D(); Size2 scale = size / (size_override_size + size_override_margin * 2); stretch_transform.scale(scale); @@ -210,114 +209,6 @@ void Viewport::_update_stretch_transform() { _update_global_transform(); } -void Viewport::_update_rect() { - - if (!is_inside_tree()) - return; - - /*if (!render_target && parent_control) { - - Control *c = parent_control; - - rect.pos=Point2(); - rect.size=c->get_size(); - }*/ - /* - VisualServer::ViewportRect vr; - vr.x=rect.pos.x; - vr.y=rect.pos.y; - - if (render_target) { - vr.x=0; - vr.y=0; - } - vr.width=rect.size.width; - vr.height=rect.size.height; - - VisualServer::get_singleton()->viewport_set_rect(viewport,vr); - last_vp_rect=rect; - - if (canvas_item.is_valid()) { - VisualServer::get_singleton()->canvas_item_set_custom_rect(canvas_item,true,rect); - } - - emit_signal("size_changed"); - texture->emit_changed(); -*/ -} - -void Viewport::_parent_resized() { - - _update_rect(); -} - -void Viewport::_parent_draw() { -} - -void Viewport::_parent_visibility_changed() { - - /* - if (parent_control) { - - Control *c = parent_control; - VisualServer::get_singleton()->canvas_item_set_visible(canvas_item,c->is_visible_in_tree()); - - _update_listener(); - _update_listener_2d(); - } -*/ -} - -void Viewport::_vp_enter_tree() { - - /* if (parent_control) { - - Control *cparent=parent_control; - RID parent_ci = cparent->get_canvas_item(); - ERR_FAIL_COND(!parent_ci.is_valid()); - canvas_item = VisualServer::get_singleton()->canvas_item_create(); - - VisualServer::get_singleton()->canvas_item_set_parent(canvas_item,parent_ci); - VisualServer::get_singleton()->canvas_item_set_visible(canvas_item,false); - //VisualServer::get_singleton()->canvas_item_attach_viewport(canvas_item,viewport); - parent_control->connect("resized",this,"_parent_resized"); - parent_control->connect("visibility_changed",this,"_parent_visibility_changed"); - } else if (!parent){ - - //VisualServer::get_singleton()->viewport_attach_to_screen(viewport,0); - - } -*/ -} - -void Viewport::_vp_exit_tree() { - - /* - if (parent_control) { - - parent_control->disconnect("resized",this,"_parent_resized"); - } - - if (parent_control) { - - parent_control->disconnect("visibility_changed",this,"_parent_visibility_changed"); - } - - if (canvas_item.is_valid()) { - - VisualServer::get_singleton()->free(canvas_item); - canvas_item=RID(); - - } - - if (!parent) { - - VisualServer::get_singleton()->viewport_detach(viewport); - - } -*/ -} - void Viewport::update_worlds() { if (!is_inside_tree()) @@ -375,7 +266,6 @@ void Viewport::_notification(int p_what) { _update_listener(); _update_listener_2d(); - _update_rect(); find_world_2d()->_register_viewport(this, Rect2()); @@ -435,11 +325,6 @@ void Viewport::_notification(int p_what) { if (world_2d.is_valid()) world_2d->_remove_viewport(this); - /* - if (!render_target) - _vp_exit_tree(); - */ - VisualServer::get_singleton()->viewport_set_scenario(viewport, RID()); // SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, RID()); VisualServer::get_singleton()->viewport_remove_canvas(viewport, current_canvas); @@ -678,6 +563,20 @@ void Viewport::_notification(int p_what) { } } break; + case SceneTree::NOTIFICATION_WM_FOCUS_OUT: { + if (gui.mouse_focus) { + //if mouse is being pressed, send a release event + Ref<InputEventMouseButton> mb; + mb.instance(); + mb->set_position(gui.mouse_focus->get_local_mouse_position()); + mb->set_global_position(gui.mouse_focus->get_local_mouse_position()); + mb->set_button_index(gui.mouse_focus_button); + mb->set_pressed(false); + Control *c = gui.mouse_focus; + gui.mouse_focus = NULL; + c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb); + } + } break; } } @@ -703,7 +602,6 @@ void Viewport::set_size(const Size2 &p_size) { size = p_size.floor(); VS::get_singleton()->viewport_set_size(viewport, size.width, size.height); - _update_rect(); _update_stretch_transform(); emit_signal("size_changed"); @@ -1152,7 +1050,7 @@ void Viewport::set_size_override(bool p_enable, const Size2 &p_size, const Vecto size_override_size = p_size; } size_override_margin = p_margin; - _update_rect(); + _update_stretch_transform(); emit_signal("size_changed"); } @@ -1171,9 +1069,6 @@ void Viewport::set_size_override_stretch(bool p_enable) { return; size_override_stretch = p_enable; - if (size_override) { - _update_rect(); - } _update_stretch_transform(); } @@ -2376,12 +2271,9 @@ List<Control *>::Element *Viewport::_gui_show_modal(Control *p_control) { mb->set_global_position(gui.mouse_focus->get_local_mouse_position()); mb->set_button_index(gui.mouse_focus_button); mb->set_pressed(false); - gui.mouse_focus->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb); - - //if (gui.mouse_over == gui.mouse_focus) { - // gui.mouse_focus->notification(Control::NOTIFICATION_MOUSE_EXIT); - //} + Control *c = gui.mouse_focus; gui.mouse_focus = NULL; + c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb); } return gui.modal_stack.back(); @@ -2672,9 +2564,6 @@ void Viewport::_bind_methods() { ClassDB::bind_method(D_METHOD("set_transparent_background", "enable"), &Viewport::set_transparent_background); ClassDB::bind_method(D_METHOD("has_transparent_background"), &Viewport::has_transparent_background); - ClassDB::bind_method(D_METHOD("_parent_visibility_changed"), &Viewport::_parent_visibility_changed); - - ClassDB::bind_method(D_METHOD("_parent_resized"), &Viewport::_parent_resized); ClassDB::bind_method(D_METHOD("_vp_input"), &Viewport::_vp_input); ClassDB::bind_method(D_METHOD("_vp_input_text", "text"), &Viewport::_vp_input_text); ClassDB::bind_method(D_METHOD("_vp_unhandled_input"), &Viewport::_vp_unhandled_input); @@ -2760,7 +2649,7 @@ void Viewport::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size"), "set_size", "get_size"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "own_world"), "set_use_own_world", "is_using_own_world"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world", PROPERTY_HINT_RESOURCE_TYPE, "World"), "set_world", "get_world"); - //ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"world_2d",PROPERTY_HINT_RESOURCE_TYPE,"World2D"), "set_world_2d", "get_world_2d") ; + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_2d", PROPERTY_HINT_RESOURCE_TYPE, "World2D", 0), "set_world_2d", "get_world_2d"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "transparent_bg"), "set_transparent_background", "has_transparent_background"); ADD_GROUP("Rendering", ""); ADD_PROPERTY(PropertyInfo(Variant::INT, "msaa", PROPERTY_HINT_ENUM, "Disabled,2x,4x,8x,16x"), "set_msaa", "get_msaa"); @@ -2786,6 +2675,8 @@ void Viewport::_bind_methods() { ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_1", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 1); ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_2", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 2); ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_3", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 3); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "canvas_transform", PROPERTY_HINT_NONE, "", 0), "set_canvas_transform", "get_canvas_transform"); + 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")); diff --git a/scene/main/viewport.h b/scene/main/viewport.h index 92c53a7ab8..07bbd3f1fa 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -1,4 +1,3 @@ - /*************************************************************************/ /* viewport.h */ /*************************************************************************/ @@ -28,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VIEWPORT_H #define VIEWPORT_H @@ -206,12 +206,6 @@ private: void _test_new_mouseover(ObjectID new_collider); Map<ObjectID, uint64_t> physics_2d_mouseover; - void _update_rect(); - - void _parent_resized(); - void _parent_draw(); - void _parent_visibility_changed(); - Ref<World2D> world_2d; Ref<World> world; Ref<World> own_world; @@ -294,9 +288,6 @@ private: _FORCE_INLINE_ Transform2D _get_input_pre_xform() const; - void _vp_enter_tree(); - void _vp_exit_tree(); - void _vp_input(const Ref<InputEvent> &p_ev); void _vp_input_text(const String &p_text); void _vp_unhandled_input(const Ref<InputEvent> &p_ev); diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 4036735807..bb0cf168af 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_scene_types.h" #include "core/class_db.h" @@ -200,6 +201,8 @@ static ResourceFormatLoaderDynamicFont *resource_loader_dynamic_font = NULL; static ResourceFormatLoaderStreamTexture *resource_loader_stream_texture = NULL; +static ResourceFormatLoaderBMFont *resource_loader_bmfont = NULL; + static ResourceFormatSaverShader *resource_saver_shader = NULL; static ResourceFormatLoaderShader *resource_loader_shader = NULL; @@ -220,31 +223,20 @@ void register_scene_types() { resource_loader_theme = memnew(ResourceFormatLoaderTheme); ResourceLoader::add_resource_format_loader(resource_loader_theme); - bool default_theme_hidpi = GLOBAL_DEF("gui/theme/use_hidpi", false); - ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/use_hidpi", PropertyInfo(Variant::BOOL, "gui/theme/use_hidpi", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)); - String theme_path = GLOBAL_DEF("gui/theme/custom", ""); - ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom", PropertyInfo(Variant::STRING, "gui/theme/custom", PROPERTY_HINT_FILE, "*.tres,*.res", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)); - String font_path = GLOBAL_DEF("gui/theme/custom_font", ""); - ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom_font", PropertyInfo(Variant::STRING, "gui/theme/custom_font", PROPERTY_HINT_FILE, "*.tres,*.res,*.font", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)); + resource_saver_text = memnew(ResourceFormatSaverText); + ResourceSaver::add_resource_format_saver(resource_saver_text, true); - bool has_theme = false; - if (theme_path != String()) { - Ref<Theme> theme = ResourceLoader::load(theme_path); - if (theme.is_valid()) { - Theme::set_default(theme); - has_theme = true; - } else { - ERR_PRINTS("Error loading custom theme '" + theme_path + "'"); - } - } + resource_loader_text = memnew(ResourceFormatLoaderText); + ResourceLoader::add_resource_format_loader(resource_loader_text, true); - if (!has_theme) { - Ref<Font> font; - if (font_path != String()) { - font = ResourceLoader::load(font_path); - } - make_default_theme(default_theme_hidpi, font); - } + resource_saver_shader = memnew(ResourceFormatSaverShader); + ResourceSaver::add_resource_format_saver(resource_saver_shader, true); + + resource_loader_shader = memnew(ResourceFormatLoaderShader); + ResourceLoader::add_resource_format_loader(resource_loader_shader, true); + + resource_loader_bmfont = memnew(ResourceFormatLoaderBMFont); + ResourceLoader::add_resource_format_loader(resource_loader_bmfont, true); OS::get_singleton()->yield(); //may take time to init @@ -604,24 +596,42 @@ void register_scene_types() { OS::get_singleton()->yield(); //may take time to init - resource_saver_text = memnew(ResourceFormatSaverText); - ResourceSaver::add_resource_format_saver(resource_saver_text, true); - - resource_loader_text = memnew(ResourceFormatLoaderText); - ResourceLoader::add_resource_format_loader(resource_loader_text, true); - - resource_saver_shader = memnew(ResourceFormatSaverShader); - ResourceSaver::add_resource_format_saver(resource_saver_shader, true); - - resource_loader_shader = memnew(ResourceFormatLoaderShader); - ResourceLoader::add_resource_format_loader(resource_loader_shader, true); - for (int i = 0; i < 20; i++) { GLOBAL_DEF("layer_names/2d_render/layer_" + itos(i + 1), ""); GLOBAL_DEF("layer_names/2d_physics/layer_" + itos(i + 1), ""); GLOBAL_DEF("layer_names/3d_render/layer_" + itos(i + 1), ""); GLOBAL_DEF("layer_names/3d_physics/layer_" + itos(i + 1), ""); } + + bool default_theme_hidpi = GLOBAL_DEF("gui/theme/use_hidpi", false); + ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/use_hidpi", PropertyInfo(Variant::BOOL, "gui/theme/use_hidpi", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)); + String theme_path = GLOBAL_DEF("gui/theme/custom", ""); + ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom", PropertyInfo(Variant::STRING, "gui/theme/custom", PROPERTY_HINT_FILE, "*.tres,*.res,*.theme", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)); + String font_path = GLOBAL_DEF("gui/theme/custom_font", ""); + ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom_font", PropertyInfo(Variant::STRING, "gui/theme/custom_font", PROPERTY_HINT_FILE, "*.tres,*.res,*.font", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)); + + Ref<Font> font; + if (font_path != String()) { + font = ResourceLoader::load(font_path); + if (!font.is_valid()) { + ERR_PRINTS("Error loading custom font '" + font_path + "'"); + } + } + + // Always make the default theme to avoid invalid default font/icon/style in the given theme + make_default_theme(default_theme_hidpi, font); + + if (theme_path != String()) { + Ref<Theme> theme = ResourceLoader::load(theme_path); + if (theme.is_valid()) { + Theme::set_default(theme); + if (font.is_valid()) { + Theme::set_default_font(font); + } + } else { + ERR_PRINTS("Error loading custom theme '" + theme_path + "'"); + } + } } void unregister_scene_types() { @@ -647,6 +657,9 @@ void unregister_scene_types() { if (resource_loader_shader) { memdelete(resource_loader_shader); } + if (resource_loader_bmfont) { + memdelete(resource_loader_bmfont); + } SpatialMaterial::finish_shaders(); ParticlesMaterial::finish_shaders(); diff --git a/scene/register_scene_types.h b/scene/register_scene_types.h index da7e290f25..9121c015fd 100644 --- a/scene/register_scene_types.h +++ b/scene/register_scene_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_SCENE_TYPES_H #define REGISTER_SCENE_TYPES_H diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp index 367c8235f5..6e58bc88d7 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "animation.h" #include "geometry.h" @@ -35,13 +36,7 @@ bool Animation::_set(const StringName &p_name, const Variant &p_value) { String name = p_name; - if (name == "length") - set_length(p_value); - else if (name == "loop") - set_loop(p_value); - else if (name == "step") - set_step(p_value); - else if (name.begins_with("tracks/")) { + if (name.begins_with("tracks/")) { int track = name.get_slicec('/', 1).to_int(); String what = name.get_slicec('/', 2); @@ -383,20 +378,15 @@ bool Animation::_get(const StringName &p_name, Variant &r_ret) const { } void Animation::_get_property_list(List<PropertyInfo> *p_list) const { - - p_list->push_back(PropertyInfo(Variant::REAL, "length", PROPERTY_HINT_RANGE, "0.001,99999,0.001")); - p_list->push_back(PropertyInfo(Variant::BOOL, "loop")); - p_list->push_back(PropertyInfo(Variant::REAL, "step", PROPERTY_HINT_RANGE, "0,4096,0.001")); - for (int i = 0; i < tracks.size(); i++) { - p_list->push_back(PropertyInfo(Variant::STRING, "tracks/" + itos(i) + "/type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::NODE_PATH, "tracks/" + itos(i) + "/path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::INT, "tracks/" + itos(i) + "/interp", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/loop_wrap", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/imported", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::ARRAY, "tracks/" + itos(i) + "/keys", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::STRING, "tracks/" + itos(i) + "/type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::NODE_PATH, "tracks/" + itos(i) + "/path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::INT, "tracks/" + itos(i) + "/interp", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/loop_wrap", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/imported", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::ARRAY, "tracks/" + itos(i) + "/keys", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } } @@ -1689,6 +1679,10 @@ void Animation::_bind_methods() { ClassDB::bind_method(D_METHOD("clear"), &Animation::clear); ClassDB::bind_method(D_METHOD("copy_track", "track", "to_animation"), &Animation::copy_track); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "length", PROPERTY_HINT_RANGE, "0.001,99999,0.001"), "set_length", "get_length"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop"), "set_loop", "has_loop"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "step", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_step", "get_step"); + BIND_ENUM_CONSTANT(TYPE_VALUE); BIND_ENUM_CONSTANT(TYPE_TRANSFORM); BIND_ENUM_CONSTANT(TYPE_METHOD); diff --git a/scene/resources/animation.h b/scene/resources/animation.h index 2975c7fd9d..73691a69f2 100644 --- a/scene/resources/animation.h +++ b/scene/resources/animation.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ANIMATION_H #define ANIMATION_H diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp index e52a83d17e..b77143cd9d 100644 --- a/scene/resources/audio_stream_sample.cpp +++ b/scene/resources/audio_stream_sample.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_stream_sample.h" void AudioStreamPlaybackSample::start(float p_from_pos) { @@ -76,7 +77,7 @@ void AudioStreamPlaybackSample::seek(float p_time) { if (base->format == AudioStreamSample::FORMAT_IMA_ADPCM) return; //no seeking in ima-adpcm - float max = get_length(); + float max = base->get_length(); if (p_time < 0) { p_time = 0; } else if (p_time >= max) { @@ -389,22 +390,6 @@ void AudioStreamPlaybackSample::mix(AudioFrame *p_buffer, float p_rate_scale, in } } -float AudioStreamPlaybackSample::get_length() const { - - int len = base->data_bytes; - switch (base->format) { - case AudioStreamSample::FORMAT_8_BITS: len /= 1; break; - case AudioStreamSample::FORMAT_16_BITS: len /= 2; break; - case AudioStreamSample::FORMAT_IMA_ADPCM: len *= 2; break; - } - - if (base->stereo) { - len /= 2; - } - - return float(len) / base->mix_rate; -} - AudioStreamPlaybackSample::AudioStreamPlaybackSample() { active = false; @@ -468,6 +453,22 @@ bool AudioStreamSample::is_stereo() const { return stereo; } +float AudioStreamSample::get_length() const { + + int len = data_bytes; + switch (format) { + case AudioStreamSample::FORMAT_8_BITS: len /= 1; break; + case AudioStreamSample::FORMAT_16_BITS: len /= 2; break; + case AudioStreamSample::FORMAT_IMA_ADPCM: len *= 2; break; + } + + if (stereo) { + len /= 2; + } + + return float(len) / mix_rate; +} + void AudioStreamSample::set_data(const PoolVector<uint8_t> &p_data) { AudioServer::get_singleton()->lock(); @@ -541,8 +542,8 @@ void AudioStreamSample::_bind_methods() { ClassDB::bind_method(D_METHOD("set_stereo", "stereo"), &AudioStreamSample::set_stereo); ClassDB::bind_method(D_METHOD("is_stereo"), &AudioStreamSample::is_stereo); - ClassDB::bind_method(D_METHOD("set_data", "data"), &AudioStreamSample::set_data); - ClassDB::bind_method(D_METHOD("get_data"), &AudioStreamSample::get_data); + ClassDB::bind_method(D_METHOD("_set_data", "data"), &AudioStreamSample::set_data); + ClassDB::bind_method(D_METHOD("_get_data"), &AudioStreamSample::get_data); ADD_PROPERTY(PropertyInfo(Variant::INT, "format", PROPERTY_HINT_ENUM, "8-Bit,16-Bit,IMA-ADPCM"), "set_format", "get_format"); ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_mode", PROPERTY_HINT_ENUM, "Disabled,Forward,Ping-Pong"), "set_loop_mode", "get_loop_mode"); @@ -550,7 +551,7 @@ void AudioStreamSample::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_end"), "set_loop_end", "get_loop_end"); ADD_PROPERTY(PropertyInfo(Variant::INT, "mix_rate"), "set_mix_rate", "get_mix_rate"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stereo"), "set_stereo", "is_stereo"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_data", "get_data"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); BIND_ENUM_CONSTANT(FORMAT_8_BITS); BIND_ENUM_CONSTANT(FORMAT_16_BITS); diff --git a/scene/resources/audio_stream_sample.h b/scene/resources/audio_stream_sample.h index a51483aa21..5fe65c194e 100644 --- a/scene/resources/audio_stream_sample.h +++ b/scene/resources/audio_stream_sample.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOSTREAMSAMPLE_H #define AUDIOSTREAMSAMPLE_H @@ -76,8 +77,6 @@ public: virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames); - virtual float get_length() const; //if supported, otherwise return 0 - AudioStreamPlaybackSample(); }; @@ -136,6 +135,8 @@ public: void set_stereo(bool p_enable); bool is_stereo() const; + virtual float get_length() const; //if supported, otherwise return 0 + void set_data(const PoolVector<uint8_t> &p_data); PoolVector<uint8_t> get_data() const; diff --git a/scene/resources/bit_mask.cpp b/scene/resources/bit_mask.cpp index 85bcfc9ecd..ea313b5a20 100644 --- a/scene/resources/bit_mask.cpp +++ b/scene/resources/bit_mask.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "bit_mask.h" #include "io/image_loader.h" @@ -80,7 +81,7 @@ void BitMap::set_bit_rect(const Rect2 &p_rect, bool p_value) { if (p_value) b |= (1 << bbit); else - b &= !(1 << bbit); + b &= ~(1 << bbit); data[bbyte] = b; } @@ -111,8 +112,8 @@ int BitMap::get_true_bit_count() const { void BitMap::set_bit(const Point2 &p_pos, bool p_value) { - int x = Math::fast_ftoi(p_pos.x); - int y = Math::fast_ftoi(p_pos.y); + int x = p_pos.x; + int y = p_pos.y; ERR_FAIL_INDEX(x, width); ERR_FAIL_INDEX(y, height); @@ -126,7 +127,7 @@ void BitMap::set_bit(const Point2 &p_pos, bool p_value) { if (p_value) b |= (1 << bbit); else - b &= !(1 << bbit); + b &= ~(1 << bbit); bitmask[bbyte] = b; } @@ -183,7 +184,7 @@ void BitMap::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data"), &BitMap::_set_data); ClassDB::bind_method(D_METHOD("_get_data"), &BitMap::_get_data); - ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); } BitMap::BitMap() { diff --git a/scene/resources/bit_mask.h b/scene/resources/bit_mask.h index 403f151004..cf126ef96b 100644 --- a/scene/resources/bit_mask.h +++ b/scene/resources/bit_mask.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BIT_MASK_H #define BIT_MASK_H @@ -38,7 +39,6 @@ class BitMap : public Resource { GDCLASS(BitMap, Resource); OBJ_SAVE_TYPE(BitMap); - RES_BASE_EXTENSION("pbm"); Vector<uint8_t> bitmask; int width; diff --git a/scene/resources/bounds.cpp b/scene/resources/bounds.cpp index 3e4be0defa..b115d92be3 100644 --- a/scene/resources/bounds.cpp +++ b/scene/resources/bounds.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "bounds.h" void Bounds::_bind_methods() { diff --git a/scene/resources/bounds.h b/scene/resources/bounds.h index 1454064853..dfe2fe40c6 100644 --- a/scene/resources/bounds.h +++ b/scene/resources/bounds.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BOUNDS_H #define BOUNDS_H diff --git a/scene/resources/box_shape.cpp b/scene/resources/box_shape.cpp index d93791ef4f..e9e01ed98a 100644 --- a/scene/resources/box_shape.cpp +++ b/scene/resources/box_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "box_shape.h" #include "servers/physics_server.h" diff --git a/scene/resources/box_shape.h b/scene/resources/box_shape.h index 2bbf455a46..5ef16b4766 100644 --- a/scene/resources/box_shape.h +++ b/scene/resources/box_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BOX_SHAPE_H #define BOX_SHAPE_H diff --git a/scene/resources/canvas.cpp b/scene/resources/canvas.cpp index e46b40736e..8da1da9541 100644 --- a/scene/resources/canvas.cpp +++ b/scene/resources/canvas.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "canvas.h" #include "servers/visual_server.h" diff --git a/scene/resources/canvas.h b/scene/resources/canvas.h index 1bb57987e3..dfdea82ca5 100644 --- a/scene/resources/canvas.h +++ b/scene/resources/canvas.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CANVAS_H #define CANVAS_H diff --git a/scene/resources/capsule_shape.cpp b/scene/resources/capsule_shape.cpp index bb721759c9..101970bad8 100644 --- a/scene/resources/capsule_shape.cpp +++ b/scene/resources/capsule_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "capsule_shape.h" #include "servers/physics_server.h" diff --git a/scene/resources/capsule_shape.h b/scene/resources/capsule_shape.h index 6a0b27bb0b..f89d07c5f1 100644 --- a/scene/resources/capsule_shape.h +++ b/scene/resources/capsule_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CAPSULE_SHAPE_H #define CAPSULE_SHAPE_H diff --git a/scene/resources/capsule_shape_2d.cpp b/scene/resources/capsule_shape_2d.cpp index 7b2dbf8e8c..95ab34abb2 100644 --- a/scene/resources/capsule_shape_2d.cpp +++ b/scene/resources/capsule_shape_2d.cpp @@ -27,11 +27,31 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "capsule_shape_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" +Vector<Vector2> CapsuleShape2D::_get_points() const { + + Vector<Vector2> points; + for (int i = 0; i < 24; i++) { + Vector2 ofs = Vector2(0, (i > 6 && i <= 18) ? -get_height() * 0.5 : get_height() * 0.5); + + points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() + ofs); + if (i == 6 || i == 18) + points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() - ofs); + } + + return points; +} + +bool CapsuleShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + return Geometry::is_point_in_polygon(p_point, _get_points()); +} + void CapsuleShape2D::_update_shape() { Physics2DServer::get_singleton()->shape_set_data(get_rid(), Vector2(radius, height)); @@ -62,15 +82,7 @@ real_t CapsuleShape2D::get_height() const { void CapsuleShape2D::draw(const RID &p_to_rid, const Color &p_color) { - Vector<Vector2> points; - for (int i = 0; i < 24; i++) { - Vector2 ofs = Vector2(0, (i > 6 && i <= 18) ? -get_height() * 0.5 : get_height() * 0.5); - - points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() + ofs); - if (i == 6 || i == 18) - points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() - ofs); - } - + Vector<Vector2> points = _get_points(); Vector<Color> col; col.push_back(p_color); VisualServer::get_singleton()->canvas_item_add_polygon(p_to_rid, points, col); diff --git a/scene/resources/capsule_shape_2d.h b/scene/resources/capsule_shape_2d.h index 7ce6a4ed63..04d663c010 100644 --- a/scene/resources/capsule_shape_2d.h +++ b/scene/resources/capsule_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CAPSULE_SHAPE_2D_H #define CAPSULE_SHAPE_2D_H @@ -39,11 +40,14 @@ class CapsuleShape2D : public Shape2D { real_t radius; void _update_shape(); + Vector<Vector2> _get_points() const; protected: static void _bind_methods(); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_height(real_t p_height); real_t get_height() const; diff --git a/scene/resources/circle_shape_2d.cpp b/scene/resources/circle_shape_2d.cpp index d9d0ddbe8f..1c7bb76b26 100644 --- a/scene/resources/circle_shape_2d.cpp +++ b/scene/resources/circle_shape_2d.cpp @@ -27,10 +27,17 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "circle_shape_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" + +bool CircleShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + return p_point.length() < get_radius() + p_tolerance; +} + void CircleShape2D::_update_shape() { Physics2DServer::get_singleton()->shape_set_data(get_rid(), radius); diff --git a/scene/resources/circle_shape_2d.h b/scene/resources/circle_shape_2d.h index f14f8f6776..06bb433170 100644 --- a/scene/resources/circle_shape_2d.h +++ b/scene/resources/circle_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CIRCLE_SHAPE_2D_H #define CIRCLE_SHAPE_2D_H @@ -42,6 +43,8 @@ protected: static void _bind_methods(); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_radius(real_t p_radius); real_t get_radius() const; diff --git a/scene/resources/color_ramp.cpp b/scene/resources/color_ramp.cpp index 22d52ef1ec..8c09130873 100644 --- a/scene/resources/color_ramp.cpp +++ b/scene/resources/color_ramp.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "color_ramp.h" #include "core_string_names.h" diff --git a/scene/resources/color_ramp.h b/scene/resources/color_ramp.h index 4e041355b2..c042a0d3d0 100644 --- a/scene/resources/color_ramp.h +++ b/scene/resources/color_ramp.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENE_RESOURCES_COLOR_RAMP_H_ #define SCENE_RESOURCES_COLOR_RAMP_H_ diff --git a/scene/resources/concave_polygon_shape.cpp b/scene/resources/concave_polygon_shape.cpp index 718aaeb27a..935f041837 100644 --- a/scene/resources/concave_polygon_shape.cpp +++ b/scene/resources/concave_polygon_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "concave_polygon_shape.h" #include "servers/physics_server.h" @@ -63,29 +64,6 @@ Vector<Vector3> ConcavePolygonShape::_gen_debug_mesh_lines() { return points; } -bool ConcavePolygonShape::_set(const StringName &p_name, const Variant &p_value) { - - if (p_name == "data") - PhysicsServer::get_singleton()->shape_set_data(get_shape(), p_value); - else - return false; - - return true; -} - -bool ConcavePolygonShape::_get(const StringName &p_name, Variant &r_ret) const { - - if (p_name == "data") - r_ret = PhysicsServer::get_singleton()->shape_get_data(get_shape()); - else - return false; - return true; -} -void ConcavePolygonShape::_get_property_list(List<PropertyInfo> *p_list) const { - - p_list->push_back(PropertyInfo(Variant::ARRAY, "data")); -} - void ConcavePolygonShape::_update_shape() { } @@ -104,6 +82,7 @@ void ConcavePolygonShape::_bind_methods() { ClassDB::bind_method(D_METHOD("set_faces", "faces"), &ConcavePolygonShape::set_faces); ClassDB::bind_method(D_METHOD("get_faces"), &ConcavePolygonShape::get_faces); + ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_faces", "get_faces"); } ConcavePolygonShape::ConcavePolygonShape() : diff --git a/scene/resources/concave_polygon_shape.h b/scene/resources/concave_polygon_shape.h index b94e3eca9c..2cc9095abf 100644 --- a/scene/resources/concave_polygon_shape.h +++ b/scene/resources/concave_polygon_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONCAVE_POLYGON_SHAPE_H #define CONCAVE_POLYGON_SHAPE_H @@ -57,9 +58,6 @@ class ConcavePolygonShape : public Shape { }; protected: - bool _set(const StringName &p_name, const Variant &p_value); - bool _get(const StringName &p_name, Variant &r_ret) const; - void _get_property_list(List<PropertyInfo> *p_list) const; static void _bind_methods(); virtual void _update_shape(); diff --git a/scene/resources/concave_polygon_shape_2d.cpp b/scene/resources/concave_polygon_shape_2d.cpp index 19985d4acf..d4343680ef 100644 --- a/scene/resources/concave_polygon_shape_2d.cpp +++ b/scene/resources/concave_polygon_shape_2d.cpp @@ -27,11 +27,29 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "concave_polygon_shape_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" +bool ConcavePolygonShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + PoolVector<Vector2> s = get_segments(); + int len = s.size(); + if (len == 0 || (len % 2) == 1) + return false; + + PoolVector<Vector2>::Read r = s.read(); + for (int i = 0; i < len; i += 2) { + Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, &r[i]); + if (p_point.distance_to(closest) < p_tolerance) + return true; + } + + return false; +} + void ConcavePolygonShape2D::set_segments(const PoolVector<Vector2> &p_segments) { Physics2DServer::get_singleton()->shape_set_data(get_rid(), p_segments); diff --git a/scene/resources/concave_polygon_shape_2d.h b/scene/resources/concave_polygon_shape_2d.h index 4a5defe72c..e8fa7369ac 100644 --- a/scene/resources/concave_polygon_shape_2d.h +++ b/scene/resources/concave_polygon_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONCAVE_POLYGON_SHAPE_2D_H #define CONCAVE_POLYGON_SHAPE_2D_H @@ -39,6 +40,8 @@ protected: static void _bind_methods(); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_segments(const PoolVector<Vector2> &p_segments); PoolVector<Vector2> get_segments() const; diff --git a/scene/resources/convex_polygon_shape.cpp b/scene/resources/convex_polygon_shape.cpp index e022b76907..a2e0996996 100644 --- a/scene/resources/convex_polygon_shape.cpp +++ b/scene/resources/convex_polygon_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "convex_polygon_shape.h" #include "quick_hull.h" #include "servers/physics_server.h" diff --git a/scene/resources/convex_polygon_shape.h b/scene/resources/convex_polygon_shape.h index 0a840f0bc5..62567fc031 100644 --- a/scene/resources/convex_polygon_shape.h +++ b/scene/resources/convex_polygon_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONVEX_POLYGON_SHAPE_H #define CONVEX_POLYGON_SHAPE_H diff --git a/scene/resources/convex_polygon_shape_2d.cpp b/scene/resources/convex_polygon_shape_2d.cpp index 98ef2ca7c6..d061c4ea1e 100644 --- a/scene/resources/convex_polygon_shape_2d.cpp +++ b/scene/resources/convex_polygon_shape_2d.cpp @@ -27,12 +27,18 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "convex_polygon_shape_2d.h" #include "geometry.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" +bool ConvexPolygonShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + return Geometry::is_point_in_polygon(p_point, points); +} + void ConvexPolygonShape2D::_update_shape() { Physics2DServer::get_singleton()->shape_set_data(get_rid(), points); diff --git a/scene/resources/convex_polygon_shape_2d.h b/scene/resources/convex_polygon_shape_2d.h index f492b7651b..69c237a0e6 100644 --- a/scene/resources/convex_polygon_shape_2d.h +++ b/scene/resources/convex_polygon_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONVEX_POLYGON_SHAPE_2D_H #define CONVEX_POLYGON_SHAPE_2D_H @@ -42,6 +43,8 @@ protected: static void _bind_methods(); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_point_cloud(const Vector<Vector2> &p_points); void set_points(const Vector<Vector2> &p_points); Vector<Vector2> get_points() const; diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp index 95cb336740..5fd6f6c74d 100644 --- a/scene/resources/curve.cpp +++ b/scene/resources/curve.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "curve.h" #include "core_string_names.h" @@ -510,7 +511,7 @@ void Curve::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "min_value", PROPERTY_HINT_RANGE, "-1024,1024,0.01"), "set_min_value", "get_min_value"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "max_value", PROPERTY_HINT_RANGE, "-1024,1024,0.01"), "set_max_value", "get_max_value"); ADD_PROPERTY(PropertyInfo(Variant::INT, "bake_resolution", PROPERTY_HINT_RANGE, "1,1000,1"), "set_bake_resolution", "get_bake_resolution"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); ADD_SIGNAL(MethodInfo(SIGNAL_RANGE_CHANGED)); @@ -914,7 +915,7 @@ void Curve2D::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data"), &Curve2D::_set_data); ADD_PROPERTY(PropertyInfo(Variant::REAL, "bake_interval", PROPERTY_HINT_RANGE, "0.01,512,0.01"), "set_bake_interval", "get_bake_interval"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); } Curve2D::Curve2D() { @@ -1409,7 +1410,7 @@ void Curve3D::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data"), &Curve3D::_set_data); ADD_PROPERTY(PropertyInfo(Variant::REAL, "bake_interval", PROPERTY_HINT_RANGE, "0.01,512,0.01"), "set_bake_interval", "get_bake_interval"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); } Curve3D::Curve3D() { diff --git a/scene/resources/curve.h b/scene/resources/curve.h index 4d421246bf..4f55e4055c 100644 --- a/scene/resources/curve.h +++ b/scene/resources/curve.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CURVE_H #define CURVE_H diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index b18583dfb1..a4049e4461 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -880,7 +880,7 @@ void make_default_theme(bool p_hidpi, Ref<Font> p_font) { Ref<StyleBox> default_style; Ref<Texture> default_icon; - Ref<BitmapFont> default_font; + Ref<Font> default_font; if (p_font.is_valid()) { default_font = p_font; } else if (p_hidpi) { @@ -888,7 +888,7 @@ void make_default_theme(bool p_hidpi, Ref<Font> p_font) { } else { default_font = make_font2(_lodpi_font_height, _lodpi_font_ascent, _lodpi_font_charcount, &_lodpi_font_charrects[0][0], _lodpi_font_kerning_pair_count, &_lodpi_font_kerning_pairs[0][0], _lodpi_font_img_width, _lodpi_font_img_height, _lodpi_font_img_data); } - Ref<BitmapFont> large_font = default_font; + Ref<Font> large_font = default_font; fill_default_theme(t, default_font, large_font, default_icon, default_style, p_hidpi ? 2.0 : 1.0); Theme::set_default(t); diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index d52002ad5c..e9d5ca969e 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifdef FREETYPE_ENABLED #include "dynamic_font.h" #include "os/file_access.h" @@ -34,13 +35,7 @@ bool DynamicFontData::CacheID::operator<(CacheID right) const { - if (size < right.size) - return true; - if (mipmaps != right.mipmaps) - return right.mipmaps; - if (filter != right.filter) - return right.filter; - return false; + return key < right.key; } Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(CacheID p_cache_id) { @@ -630,6 +625,7 @@ bool DynamicFontAtSize::update_oversampling() { textures.clear(); char_map.clear(); oversampling = font_oversampling; + valid = false; _load(); return true; @@ -650,8 +646,9 @@ DynamicFontAtSize::~DynamicFontAtSize() { if (valid) { FT_Done_FreeType(library); - font->size_cache.erase(id); } + font->size_cache.erase(id); + font.unref(); } ///////////////////////// @@ -972,14 +969,26 @@ void DynamicFont::finish_dynamic_fonts() { void DynamicFont::update_oversampling() { + Vector<Ref<DynamicFont> > changed; + + if (dynamic_font_mutex) + dynamic_font_mutex->lock(); + SelfList<DynamicFont> *E = dynamic_fonts.first(); while (E) { if (E->self()->data_at_size.is_valid() && E->self()->data_at_size->update_oversampling()) { - E->self()->emit_changed(); + changed.push_back(Ref<DynamicFont>(E->self())); } E = E->next(); } + + if (dynamic_font_mutex) + dynamic_font_mutex->unlock(); + + for (int i = 0; i < changed.size(); i++) { + changed[i]->emit_changed(); + } } ///////////////////////// diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h index 1a890dd65d..92bb77bed3 100644 --- a/scene/resources/dynamic_font.h +++ b/scene/resources/dynamic_font.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DYNAMIC_FONT_H #define DYNAMIC_FONT_H @@ -49,15 +50,17 @@ class DynamicFontData : public Resource { public: struct CacheID { - int size; - bool mipmaps; - bool filter; - + union { + struct { + uint32_t size : 16; + bool mipmaps : 1; + bool filter : 1; + }; + uint32_t key; + }; bool operator<(CacheID right) const; CacheID() { - size = 16; - mipmaps = false; - filter = false; + key = 0; } }; diff --git a/scene/resources/dynamic_font_stb.cpp b/scene/resources/dynamic_font_stb.cpp index 70495e9bbf..098b794a95 100644 --- a/scene/resources/dynamic_font_stb.cpp +++ b/scene/resources/dynamic_font_stb.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "dynamic_font_stb.h" #ifndef FREETYPE_ENABLED diff --git a/scene/resources/dynamic_font_stb.h b/scene/resources/dynamic_font_stb.h index 3d4ad4389c..4c1097d28b 100644 --- a/scene/resources/dynamic_font_stb.h +++ b/scene/resources/dynamic_font_stb.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef DYNAMICFONT_STB_H #define DYNAMICFONT_STB_H diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp index 6216893667..3fab4d3cfc 100644 --- a/scene/resources/environment.cpp +++ b/scene/resources/environment.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "environment.h" #include "project_settings.h" #include "servers/visual_server.h" @@ -269,19 +270,19 @@ void Environment::_validate_property(PropertyInfo &property) const { if (property.name == "background_sky" || property.name == "background_sky_custom_fov" || property.name == "ambient_light/sky_contribution") { if (bg_mode != BG_SKY && bg_mode != BG_COLOR_SKY) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } if (property.name == "background_color") { if (bg_mode != BG_COLOR && bg_mode != BG_COLOR_SKY) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } if (property.name == "background_canvas_max_layer") { if (bg_mode != BG_CANVAS) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } } @@ -304,7 +305,7 @@ void Environment::_validate_property(PropertyInfo &property) const { String enabled = prefix + "enabled"; if (property.name.begins_with(prefix) && property.name != enabled && !bool(get(enabled))) { - property.usage = PROPERTY_USAGE_NOEDITOR; + property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; return; } @@ -1218,7 +1219,7 @@ Environment::Environment() { ssao_radius2 = 0; ssao_intensity2 = 1; ssao_bias = 0.01; - ssao_direct_light_affect = false; + ssao_direct_light_affect = 0.0; ssao_blur = SSAO_BLUR_3x3; set_ssao_edge_sharpness(4); set_ssao_quality(SSAO_QUALITY_LOW); diff --git a/scene/resources/environment.h b/scene/resources/environment.h index 9e2461a2ce..27fd57aa09 100644 --- a/scene/resources/environment.h +++ b/scene/resources/environment.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ENVIRONMENT_H #define ENVIRONMENT_H diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp index 7b4bd273bd..6fc5778dd8 100644 --- a/scene/resources/font.cpp +++ b/scene/resources/font.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "font.h" #include "core/io/resource_loader.h" @@ -576,9 +577,9 @@ void BitmapFont::_bind_methods() { ClassDB::bind_method(D_METHOD("set_fallback", "fallback"), &BitmapFont::set_fallback); ClassDB::bind_method(D_METHOD("get_fallback"), &BitmapFont::get_fallback); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "textures", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_textures", "_get_textures"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "chars", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_chars", "_get_chars"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "kernings", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_kernings", "_get_kernings"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "textures", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_textures", "_get_textures"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "chars", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_chars", "_get_chars"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "kernings", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_kernings", "_get_kernings"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "height", PROPERTY_HINT_RANGE, "-1024,1024,1"), "set_height", "get_height"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "ascent", PROPERTY_HINT_RANGE, "-1024,1024,1"), "set_ascent", "get_ascent"); @@ -595,3 +596,42 @@ BitmapFont::~BitmapFont() { clear(); } + +//////////// + +RES ResourceFormatLoaderBMFont::load(const String &p_path, const String &p_original_path, Error *r_error) { + + if (r_error) + *r_error = ERR_FILE_CANT_OPEN; + + Ref<BitmapFont> font; + font.instance(); + + Error err = font->create_from_fnt(p_path); + + if (err) { + if (r_error) + *r_error = err; + return RES(); + } + + return font; +} + +void ResourceFormatLoaderBMFont::get_recognized_extensions(List<String> *p_extensions) const { + + p_extensions->push_back("fnt"); +} + +bool ResourceFormatLoaderBMFont::handles_type(const String &p_type) const { + + return (p_type == "BitmapFont"); +} + +String ResourceFormatLoaderBMFont::get_resource_type(const String &p_path) const { + + String el = p_path.get_extension().to_lower(); + if (el == "fnt") + return "BitmapFont"; + return ""; +} diff --git a/scene/resources/font.h b/scene/resources/font.h index 5eaf82d6bc..ae08890be3 100644 --- a/scene/resources/font.h +++ b/scene/resources/font.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef FONT_H #define FONT_H @@ -158,4 +159,12 @@ public: ~BitmapFont(); }; +class ResourceFormatLoaderBMFont : public ResourceFormatLoader { +public: + virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL); + virtual void get_recognized_extensions(List<String> *p_extensions) const; + virtual bool handles_type(const String &p_type) const; + virtual String get_resource_type(const String &p_path) const; +}; + #endif diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 4e3991b573..8a1978cf85 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "material.h" #include "scene/scene_string_names.h" @@ -102,25 +103,19 @@ Material::~Material() { bool ShaderMaterial::_set(const StringName &p_name, const Variant &p_value) { - if (p_name == SceneStringNames::get_singleton()->shader) { - set_shader(p_value); - return true; - } else { - - if (shader.is_valid()) { + if (shader.is_valid()) { - StringName pr = shader->remap_param(p_name); - if (!pr) { - String n = p_name; - if (n.find("param/") == 0) { //backwards compatibility - pr = n.substr(6, n.length()); - } - } - if (pr) { - VisualServer::get_singleton()->material_set_param(_get_material(), pr, p_value); - return true; + StringName pr = shader->remap_param(p_name); + if (!pr) { + String n = p_name; + if (n.find("param/") == 0) { //backwards compatibility + pr = n.substr(6, n.length()); } } + if (pr) { + VisualServer::get_singleton()->material_set_param(_get_material(), pr, p_value); + return true; + } } return false; @@ -128,20 +123,12 @@ bool ShaderMaterial::_set(const StringName &p_name, const Variant &p_value) { bool ShaderMaterial::_get(const StringName &p_name, Variant &r_ret) const { - if (p_name == SceneStringNames::get_singleton()->shader) { - - r_ret = get_shader(); - return true; + if (shader.is_valid()) { - } else { - - if (shader.is_valid()) { - - StringName pr = shader->remap_param(p_name); - if (pr) { - r_ret = VisualServer::get_singleton()->material_get_param(_get_material(), pr); - return true; - } + StringName pr = shader->remap_param(p_name); + if (pr) { + r_ret = VisualServer::get_singleton()->material_get_param(_get_material(), pr); + return true; } } @@ -150,8 +137,6 @@ bool ShaderMaterial::_get(const StringName &p_name, Variant &r_ret) const { void ShaderMaterial::_get_property_list(List<PropertyInfo> *p_list) const { - p_list->push_back(PropertyInfo(Variant::OBJECT, "shader", PROPERTY_HINT_RESOURCE_TYPE, "Shader,ShaderGraph")); - if (!shader.is_null()) { shader->get_param_list(p_list); @@ -192,6 +177,8 @@ void ShaderMaterial::_bind_methods() { ClassDB::bind_method(D_METHOD("get_shader"), &ShaderMaterial::get_shader); ClassDB::bind_method(D_METHOD("set_shader_param", "param", "value"), &ShaderMaterial::set_shader_param); ClassDB::bind_method(D_METHOD("get_shader_param", "param"), &ShaderMaterial::get_shader_param); + + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shader", PROPERTY_HINT_RESOURCE_TYPE, "Shader"), "set_shader", "get_shader"); } void ShaderMaterial::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const { @@ -2140,7 +2127,7 @@ SpatialMaterial::SpatialMaterial() : for (int i = 0; i < FLAG_MAX; i++) { flags[i] = 0; } - diffuse_mode = DIFFUSE_LAMBERT; + diffuse_mode = DIFFUSE_BURLEY; specular_mode = SPECULAR_SCHLICK_GGX; for (int i = 0; i < FEATURE_MAX; i++) { diff --git a/scene/resources/material.h b/scene/resources/material.h index 9ce1765e62..10bbcfd642 100644 --- a/scene/resources/material.h +++ b/scene/resources/material.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MATERIAL_H #define MATERIAL_H diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index dc726adf86..d59390e1b8 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mesh.h" #include "pair.h" @@ -558,12 +559,6 @@ bool ArrayMesh::_set(const StringName &p_name, const Variant &p_value) { return true; } - if (sname == "custom_aabb/custom_aabb") { - - set_custom_aabb(p_value); - return true; - } - if (!sname.begins_with("surfaces")) return false; @@ -672,11 +667,6 @@ bool ArrayMesh::_get(const StringName &p_name, Variant &r_ret) const { else if (what == "name") r_ret = surface_get_name(idx); return true; - } else if (sname == "custom_aabb/custom_aabb") { - - r_ret = custom_aabb; - return true; - } else if (!sname.begins_with("surfaces")) return false; @@ -727,13 +717,13 @@ void ArrayMesh::_get_property_list(List<PropertyInfo> *p_list) const { return; if (blend_shapes.size()) { - p_list->push_back(PropertyInfo(Variant::POOL_STRING_ARRAY, "blend_shape/names", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::POOL_STRING_ARRAY, "blend_shape/names", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); p_list->push_back(PropertyInfo(Variant::INT, "blend_shape/mode", PROPERTY_HINT_ENUM, "Normalized,Relative")); } for (int i = 0; i < surfaces.size(); i++) { - p_list->push_back(PropertyInfo(Variant::DICTIONARY, "surfaces/" + itos(i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::DICTIONARY, "surfaces/" + itos(i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); p_list->push_back(PropertyInfo(Variant::STRING, "surface_" + itos(i + 1) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR)); if (surfaces[i].is_2d) { p_list->push_back(PropertyInfo(Variant::OBJECT, "surface_" + itos(i + 1) + "/material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,CanvasItemMaterial", PROPERTY_USAGE_EDITOR)); @@ -741,8 +731,6 @@ void ArrayMesh::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::OBJECT, "surface_" + itos(i + 1) + "/material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,SpatialMaterial", PROPERTY_USAGE_EDITOR)); } } - - p_list->push_back(PropertyInfo(Variant::AABB, "custom_aabb/custom_aabb")); } void ArrayMesh::_recompute_aabb() { @@ -1285,6 +1273,9 @@ void ArrayMesh::_bind_methods() { ClassDB::bind_method(D_METHOD("set_custom_aabb", "aabb"), &ArrayMesh::set_custom_aabb); ClassDB::bind_method(D_METHOD("get_custom_aabb"), &ArrayMesh::get_custom_aabb); + ADD_PROPERTY(PropertyInfo(Variant::INT, "blend_shape_mode", PROPERTY_HINT_ENUM, "Normalized,Relative", PROPERTY_USAGE_NOEDITOR), "set_blend_shape_mode", "get_blend_shape_mode"); + ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, ""), "set_custom_aabb", "get_custom_aabb"); + BIND_CONSTANT(NO_INDEX_ARRAY); BIND_CONSTANT(ARRAY_WEIGHTS_SIZE); diff --git a/scene/resources/mesh.h b/scene/resources/mesh.h index 98d9edd48b..e8b7ecaf9a 100644 --- a/scene/resources/mesh.h +++ b/scene/resources/mesh.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MESH_H #define MESH_H diff --git a/scene/resources/mesh_data_tool.cpp b/scene/resources/mesh_data_tool.cpp index 2854d45b52..8639b325c3 100644 --- a/scene/resources/mesh_data_tool.cpp +++ b/scene/resources/mesh_data_tool.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mesh_data_tool.h" void MeshDataTool::clear() { diff --git a/scene/resources/mesh_data_tool.h b/scene/resources/mesh_data_tool.h index fde6e5a46e..f614b80c3b 100644 --- a/scene/resources/mesh_data_tool.h +++ b/scene/resources/mesh_data_tool.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MESH_DATA_TOOL_H #define MESH_DATA_TOOL_H diff --git a/scene/resources/mesh_library.cpp b/scene/resources/mesh_library.cpp index adf646f2d9..e1d3540fd1 100644 --- a/scene/resources/mesh_library.cpp +++ b/scene/resources/mesh_library.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "mesh_library.h" bool MeshLibrary::_set(const StringName &p_name, const Variant &p_value) { diff --git a/scene/resources/mesh_library.h b/scene/resources/mesh_library.h index a0bcfec2b6..69719960e2 100644 --- a/scene/resources/mesh_library.h +++ b/scene/resources/mesh_library.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GRID_THEME_H #define GRID_THEME_H diff --git a/scene/resources/multimesh.cpp b/scene/resources/multimesh.cpp index a89b1c7342..4d0a14e3aa 100644 --- a/scene/resources/multimesh.cpp +++ b/scene/resources/multimesh.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "multimesh.h" #include "servers/visual_server.h" @@ -210,8 +211,8 @@ void MultiMesh::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "transform_format", PROPERTY_HINT_ENUM, "2D,3D"), "set_transform_format", "get_transform_format"); ADD_PROPERTY(PropertyInfo(Variant::INT, "instance_count", PROPERTY_HINT_RANGE, "0,16384,1"), "set_instance_count", "get_instance_count"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh"), "set_mesh", "get_mesh"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "transform_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_transform_array", "_get_transform_array"); - ADD_PROPERTY(PropertyInfo(Variant::POOL_COLOR_ARRAY, "color_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_color_array", "_get_color_array"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "transform_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_transform_array", "_get_transform_array"); + ADD_PROPERTY(PropertyInfo(Variant::POOL_COLOR_ARRAY, "color_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_color_array", "_get_color_array"); BIND_ENUM_CONSTANT(TRANSFORM_2D); BIND_ENUM_CONSTANT(TRANSFORM_3D); diff --git a/scene/resources/multimesh.h b/scene/resources/multimesh.h index f84d0c77c6..0875d6d06d 100644 --- a/scene/resources/multimesh.h +++ b/scene/resources/multimesh.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef MULTIMESH_H #define MULTIMESH_H diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index 9dc29151d5..3df9285bb6 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "packed_scene.h" #include "core/core_string_names.h" @@ -234,6 +235,7 @@ Node *SceneState::instance(GenEditState p_edit_state) const { if (p_edit_state == GEN_EDIT_STATE_MAIN) { //for the main scene, use the resource as is res->configure_for_local_scene(base, resources_local_to_scene); + resources_local_to_scene[res] = res; } else { //for instances, a copy must be made @@ -243,9 +245,6 @@ Node *SceneState::instance(GenEditState p_edit_state) const { res = local_dupe; value = local_dupe; } - - //this here may reference nodes not iniialized so this line is commented and used after loading all nodes - //res->setup_local_to_scene(); } //must make a copy, because this res is local to scene } @@ -1120,7 +1119,7 @@ void SceneState::set_bundled_scene(const Dictionary &p_dictionary) { uint32_t name_index = r[idx++]; nd.name = name_index & ((1 << NAME_INDEX_BITS) - 1); nd.index = (name_index >> NAME_INDEX_BITS); - nd.index--; //0 is invaild, stored as 1 + nd.index--; //0 is invalid, stored as 1 nd.instance = r[idx++]; nd.properties.resize(r[idx++]); for (int j = 0; j < nd.properties.size(); j++) { @@ -1213,7 +1212,7 @@ Dictionary SceneState::get_bundled_scene() const { rnodes.push_back(nd.owner); rnodes.push_back(nd.type); uint32_t name_index = nd.name; - if (nd.index < (1 << (32 - NAME_INDEX_BITS)) - 1) { //save if less than 16k childs + if (nd.index < (1 << (32 - NAME_INDEX_BITS)) - 1) { //save if less than 16k children name_index |= uint32_t(nd.index + 1) << NAME_INDEX_BITS; //for backwards compatibility, index 0 is no index } rnodes.push_back(name_index); diff --git a/scene/resources/packed_scene.h b/scene/resources/packed_scene.h index 01035863d9..278986eb62 100644 --- a/scene/resources/packed_scene.h +++ b/scene/resources/packed_scene.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PACKED_SCENE_H #define PACKED_SCENE_H diff --git a/scene/resources/plane_shape.cpp b/scene/resources/plane_shape.cpp index 881ecc616e..4d38ebe090 100644 --- a/scene/resources/plane_shape.cpp +++ b/scene/resources/plane_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "plane_shape.h" #include "servers/physics_server.h" diff --git a/scene/resources/plane_shape.h b/scene/resources/plane_shape.h index 3225a614e5..c24c9474fb 100644 --- a/scene/resources/plane_shape.h +++ b/scene/resources/plane_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PLANE_SHAPE_H #define PLANE_SHAPE_H diff --git a/scene/resources/polygon_path_finder.cpp b/scene/resources/polygon_path_finder.cpp index f26ec5e0a8..6fea2e1a8e 100644 --- a/scene/resources/polygon_path_finder.cpp +++ b/scene/resources/polygon_path_finder.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "polygon_path_finder.h" #include "geometry.h" @@ -588,7 +589,7 @@ void PolygonPathFinder::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data"), &PolygonPathFinder::_set_data); ClassDB::bind_method(D_METHOD("_get_data"), &PolygonPathFinder::_get_data); - ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); } PolygonPathFinder::PolygonPathFinder() { diff --git a/scene/resources/polygon_path_finder.h b/scene/resources/polygon_path_finder.h index 960e6739d6..19761c274c 100644 --- a/scene/resources/polygon_path_finder.h +++ b/scene/resources/polygon_path_finder.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef POLYGON_PATH_FINDER_H #define POLYGON_PATH_FINDER_H diff --git a/scene/resources/primitive_meshes.h b/scene/resources/primitive_meshes.h index 2b7294141a..1eaa007bd7 100644 --- a/scene/resources/primitive_meshes.h +++ b/scene/resources/primitive_meshes.h @@ -39,7 +39,7 @@ @author Bastiaan Olij <mux213@gmail.com> Base class for all the classes in this file, handles a number of code functions that are shared among all meshes. - This class is set appart that it assumes a single surface is always generated for our mesh. + This class is set apart that it assumes a single surface is always generated for our mesh. */ class PrimitiveMesh : public Mesh { diff --git a/scene/resources/ray_shape.cpp b/scene/resources/ray_shape.cpp index dfd7aee23a..78a19050f1 100644 --- a/scene/resources/ray_shape.cpp +++ b/scene/resources/ray_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "ray_shape.h" #include "servers/physics_server.h" diff --git a/scene/resources/ray_shape.h b/scene/resources/ray_shape.h index 45fd8ea603..4bd96116fe 100644 --- a/scene/resources/ray_shape.h +++ b/scene/resources/ray_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RAY_SHAPE_H #define RAY_SHAPE_H #include "scene/resources/shape.h" diff --git a/scene/resources/rectangle_shape_2d.cpp b/scene/resources/rectangle_shape_2d.cpp index 5c4c838e29..aeb22f6d0a 100644 --- a/scene/resources/rectangle_shape_2d.cpp +++ b/scene/resources/rectangle_shape_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rectangle_shape_2d.h" #include "servers/physics_2d_server.h" diff --git a/scene/resources/rectangle_shape_2d.h b/scene/resources/rectangle_shape_2d.h index 1e2a40d695..2d66d328fd 100644 --- a/scene/resources/rectangle_shape_2d.h +++ b/scene/resources/rectangle_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RECTANGLE_SHAPE_2D_H #define RECTANGLE_SHAPE_2D_H diff --git a/scene/resources/room.cpp b/scene/resources/room.cpp index f46b074225..9493f8fbe6 100644 --- a/scene/resources/room.cpp +++ b/scene/resources/room.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "room.h" #include "servers/visual_server.h" diff --git a/scene/resources/room.h b/scene/resources/room.h index 367757fdb9..359d918665 100644 --- a/scene/resources/room.h +++ b/scene/resources/room.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ROOM_BOUNDS_H #define ROOM_BOUNDS_H diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp index 9910fe8dfc..91c801c016 100644 --- a/scene/resources/scene_format_text.cpp +++ b/scene/resources/scene_format_text.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scene_format_text.h" #include "core/io/resource_format_binary.h" #include "os/dir_access.h" @@ -1311,6 +1312,8 @@ Error ResourceFormatLoaderText::rename_dependencies(const String &p_path, const return ria->rename_dependencies(f, p_path, p_map); } +ResourceFormatLoaderText *ResourceFormatLoaderText::singleton = NULL; + Error ResourceFormatLoaderText::convert_file_to_binary(const String &p_src_path, const String &p_dst_path) { Error err; @@ -1410,7 +1413,7 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant &p_variant, I = I->next(); } - resource_set.insert(res); //saved after, so the childs it needs are available when loaded + resource_set.insert(res); //saved after, so the children it needs are available when loaded saved_resources.push_back(res); } break; diff --git a/scene/resources/scene_format_text.h b/scene/resources/scene_format_text.h index 6782aff6fd..c28ded3d77 100644 --- a/scene/resources/scene_format_text.h +++ b/scene/resources/scene_format_text.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENE_FORMAT_TEXT_H #define SCENE_FORMAT_TEXT_H @@ -127,7 +128,9 @@ public: }; class ResourceFormatLoaderText : public ResourceFormatLoader { + public: + static ResourceFormatLoaderText *singleton; virtual Ref<ResourceInteractiveLoader> load_interactive(const String &p_path, const String &p_original_path = "", Error *r_error = NULL); virtual void get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const; virtual void get_recognized_extensions(List<String> *p_extensions) const; @@ -137,6 +140,8 @@ public: virtual Error rename_dependencies(const String &p_path, const Map<String, String> &p_map); static Error convert_file_to_binary(const String &p_src_path, const String &p_dst_path); + + ResourceFormatLoaderText() { singleton = this; } }; class ResourceFormatSaverTextInstance { diff --git a/scene/resources/segment_shape_2d.cpp b/scene/resources/segment_shape_2d.cpp index 4682ef5cb3..81110015b5 100644 --- a/scene/resources/segment_shape_2d.cpp +++ b/scene/resources/segment_shape_2d.cpp @@ -27,11 +27,19 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "segment_shape_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" +bool SegmentShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + Vector2 l[2] = { a, b }; + Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, l); + return p_point.distance_to(closest) < p_tolerance; +} + void SegmentShape2D::_update_shape() { Rect2 r; diff --git a/scene/resources/segment_shape_2d.h b/scene/resources/segment_shape_2d.h index 1285ae4f82..4ed30c0443 100644 --- a/scene/resources/segment_shape_2d.h +++ b/scene/resources/segment_shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SEGMENT_SHAPE_2D_H #define SEGMENT_SHAPE_2D_H @@ -44,6 +45,8 @@ protected: static void _bind_methods(); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_a(const Vector2 &p_a); void set_b(const Vector2 &p_b); diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp index c33267d023..36740a307b 100644 --- a/scene/resources/shader.cpp +++ b/scene/resources/shader.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader.h" #include "os/file_access.h" #include "scene/scene_string_names.h" diff --git a/scene/resources/shader.h b/scene/resources/shader.h index e9f5873588..248a6f0125 100644 --- a/scene/resources/shader.h +++ b/scene/resources/shader.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADER_H #define SHADER_H diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp index 431150d1dd..070cc84863 100644 --- a/scene/resources/shader_graph.cpp +++ b/scene/resources/shader_graph.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader_graph.h" #include "scene/scene_string_names.h" @@ -269,7 +270,7 @@ void ShaderGraph::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data"),&ShaderGraph::_set_data); ClassDB::bind_method(D_METHOD("_get_data"),&ShaderGraph::_get_data); - ADD_PROPERTY( PropertyInfo(Variant::DICTIONARY,"_data",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR), "_set_data","_get_data"); + ADD_PROPERTY( PropertyInfo(Variant::DICTIONARY,"_data",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data","_get_data"); //void get_connections(ShaderType p_which,List<Connection> *p_connections) const; diff --git a/scene/resources/shader_graph.h b/scene/resources/shader_graph.h index f9856158b9..e3a68f8572 100644 --- a/scene/resources/shader_graph.h +++ b/scene/resources/shader_graph.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADER_GRAPH_H #define SHADER_GRAPH_H diff --git a/scene/resources/shape.cpp b/scene/resources/shape.cpp index edec89641f..418d8ce819 100644 --- a/scene/resources/shape.cpp +++ b/scene/resources/shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shape.h" #include "os/os.h" diff --git a/scene/resources/shape.h b/scene/resources/shape.h index bdbc9ba1e4..ad87a69679 100644 --- a/scene/resources/shape.h +++ b/scene/resources/shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHAPE_H #define SHAPE_H diff --git a/scene/resources/shape_2d.cpp b/scene/resources/shape_2d.cpp index 15c8b6b748..0ca518e5bb 100644 --- a/scene/resources/shape_2d.cpp +++ b/scene/resources/shape_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shape_2d.h" #include "servers/physics_2d_server.h" RID Shape2D::get_rid() const { diff --git a/scene/resources/shape_2d.h b/scene/resources/shape_2d.h index 5c2c24ed74..ed655b8a93 100644 --- a/scene/resources/shape_2d.h +++ b/scene/resources/shape_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHAPE_2D_H #define SHAPE_2D_H @@ -44,6 +45,8 @@ protected: Shape2D(const RID &p_rid); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { return true; } + void set_custom_solver_bias(real_t p_bias); real_t get_custom_solver_bias() const; diff --git a/scene/resources/shape_line_2d.cpp b/scene/resources/shape_line_2d.cpp index c6cc3659f6..1a81eea6e5 100644 --- a/scene/resources/shape_line_2d.cpp +++ b/scene/resources/shape_line_2d.cpp @@ -27,9 +27,25 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shape_line_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" + +bool LineShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + Vector2 point = get_d() * get_normal(); + Vector2 l[2][2] = { { point - get_normal().tangent() * 100, point + get_normal().tangent() * 100 }, { point, point + get_normal() * 30 } }; + + for (int i = 0; i < 2; i++) { + Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, l[i]); + if (p_point.distance_to(closest) < p_tolerance) + return true; + } + + return false; +} + void LineShape2D::_update_shape() { Array arr; diff --git a/scene/resources/shape_line_2d.h b/scene/resources/shape_line_2d.h index 747500b0ac..7d31941558 100644 --- a/scene/resources/shape_line_2d.h +++ b/scene/resources/shape_line_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHAPE_LINE_2D_H #define SHAPE_LINE_2D_H @@ -44,6 +45,8 @@ protected: static void _bind_methods(); public: + virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const; + void set_normal(const Vector2 &p_normal); void set_d(real_t p_d); diff --git a/scene/resources/sky_box.cpp b/scene/resources/sky_box.cpp index 42ed6f72fa..f2d5cb3516 100644 --- a/scene/resources/sky_box.cpp +++ b/scene/resources/sky_box.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sky_box.h" #include "io/image_loader.h" diff --git a/scene/resources/sky_box.h b/scene/resources/sky_box.h index b62f9064c5..e561653a9e 100644 --- a/scene/resources/sky_box.h +++ b/scene/resources/sky_box.h @@ -27,8 +27,9 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef Sky_H -#define Sky_H + +#ifndef SKY_BOX_H +#define SKY_BOX_H #include "os/thread.h" #include "scene/resources/texture.h" @@ -195,4 +196,4 @@ public: VARIANT_ENUM_CAST(ProceduralSky::TextureSize) -#endif // Sky_H +#endif // SKY_BOX_H diff --git a/scene/resources/space_2d.cpp b/scene/resources/space_2d.cpp index e2661e83f5..062f4099db 100644 --- a/scene/resources/space_2d.cpp +++ b/scene/resources/space_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "space_2d.h" RID Space2D::get_rid() const { diff --git a/scene/resources/space_2d.h b/scene/resources/space_2d.h index 3ed1e4199a..148285ac6d 100644 --- a/scene/resources/space_2d.h +++ b/scene/resources/space_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPACE_2D_H #define SPACE_2D_H diff --git a/scene/resources/sphere_shape.cpp b/scene/resources/sphere_shape.cpp index c61749a598..d8ca1cf3f1 100644 --- a/scene/resources/sphere_shape.cpp +++ b/scene/resources/sphere_shape.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "sphere_shape.h" #include "servers/physics_server.h" diff --git a/scene/resources/sphere_shape.h b/scene/resources/sphere_shape.h index c1e0069941..5dd7daabc5 100644 --- a/scene/resources/sphere_shape.h +++ b/scene/resources/sphere_shape.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPHERE_SHAPE_H #define SPHERE_SHAPE_H diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index 7c8007ff9c..6811517ead 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "style_box.h" #include <limits.h> @@ -911,6 +912,7 @@ void StyleBoxLine::_bind_methods() { ClassDB::bind_method(D_METHOD("is_vertical"), &StyleBoxLine::is_vertical); ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "grow", PROPERTY_HINT_RANGE, "-300,300,1"), "set_grow", "get_grow"); ADD_PROPERTY(PropertyInfo(Variant::INT, "thickness", PROPERTY_HINT_RANGE, "0,10"), "set_thickness", "get_thickness"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "vertical"), "set_vertical", "is_vertical"); } diff --git a/scene/resources/style_box.h b/scene/resources/style_box.h index bdaa04e492..fb79aa360e 100644 --- a/scene/resources/style_box.h +++ b/scene/resources/style_box.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STYLE_BOX_H #define STYLE_BOX_H diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp index a2535d0ddb..07c1036a10 100644 --- a/scene/resources/surface_tool.cpp +++ b/scene/resources/surface_tool.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "surface_tool.h" #include "method_bind_ext.gen.inc" diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h index d18c1fc263..7a9aa349bb 100644 --- a/scene/resources/surface_tool.h +++ b/scene/resources/surface_tool.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SURFACE_TOOL_H #define SURFACE_TOOL_H diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index ea51a5ba8d..067d123b83 100644 --- a/scene/resources/texture.cpp +++ b/scene/resources/texture.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "texture.h" #include "core/method_bind_ext.gen.inc" #include "core/os/os.h" @@ -75,10 +76,12 @@ void Texture::_bind_methods() { ClassDB::bind_method(D_METHOD("draw_rect_region", "canvas_item", "rect", "src_rect", "modulate", "transpose", "normal_map", "clip_uv"), &Texture::draw_rect_region, DEFVAL(Color(1, 1, 1)), DEFVAL(false), DEFVAL(Variant()), DEFVAL(true)); ClassDB::bind_method(D_METHOD("get_data"), &Texture::get_data); + ADD_PROPERTY(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter,Ansiotropic Linear,Convert to Linear,Mirrored Repeat,Video Surface"), "set_flags", "get_flags"); + + BIND_ENUM_CONSTANT(FLAGS_DEFAULT); BIND_ENUM_CONSTANT(FLAG_MIPMAPS); BIND_ENUM_CONSTANT(FLAG_REPEAT); BIND_ENUM_CONSTANT(FLAG_FILTER); - BIND_ENUM_CONSTANT(FLAGS_DEFAULT); BIND_ENUM_CONSTANT(FLAG_ANISOTROPIC_FILTER); BIND_ENUM_CONSTANT(FLAG_CONVERT_TO_LINEAR); BIND_ENUM_CONSTANT(FLAG_MIRRORED_REPEAT); @@ -120,10 +123,6 @@ bool ImageTexture::_set(const StringName &p_name, const Variant &p_value) { w = s.width; h = s.height; VisualServer::get_singleton()->texture_set_size_override(texture, w, h); - } else if (p_name == "storage") { - storage = Storage(p_value.operator int()); - } else if (p_name == "lossy_quality") { - lossy_storage_quality = p_value; } else if (p_name == "_data") { _set_data(p_value); } else @@ -142,10 +141,6 @@ bool ImageTexture::_get(const StringName &p_name, Variant &r_ret) const { r_ret = flags; else if (p_name == "size") r_ret = Size2(w, h); - else if (p_name == "storage") - r_ret = storage; - else if (p_name == "lossy_quality") - r_ret = lossy_storage_quality; else return false; @@ -164,8 +159,6 @@ void ImageTexture::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter,Anisotropic,sRGB,Mirrored Repeat")); p_list->push_back(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "Image")); p_list->push_back(PropertyInfo(Variant::VECTOR2, "size", PROPERTY_HINT_NONE, "")); - p_list->push_back(PropertyInfo(Variant::INT, "storage", PROPERTY_HINT_ENUM, "Uncompressed,Compress Lossy,Compress Lossless")); - p_list->push_back(PropertyInfo(Variant::REAL, "lossy_quality", PROPERTY_HINT_RANGE, "0.0,1.0,0.01")); } void ImageTexture::_reload_hook(const RID &p_hook) { @@ -362,6 +355,9 @@ void ImageTexture::_bind_methods() { ClassDB::bind_method(D_METHOD("set_size_override", "size"), &ImageTexture::set_size_override); ClassDB::bind_method(D_METHOD("_reload_hook", "rid"), &ImageTexture::_reload_hook); + ADD_PROPERTY(PropertyInfo(Variant::INT, "storage", PROPERTY_HINT_ENUM, "Uncompressed,Compress Lossy,Compress Lossless"), "set_storage", "get_storage"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "lossy_quality", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_lossy_storage_quality", "get_lossy_storage_quality"); + BIND_ENUM_CONSTANT(STORAGE_RAW); BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSY); BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSLESS); @@ -1132,7 +1128,7 @@ void LargeTexture::_bind_methods() { ClassDB::bind_method(D_METHOD("_set_data", "data"), &LargeTexture::_set_data); ClassDB::bind_method(D_METHOD("_get_data"), &LargeTexture::_get_data); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); } void LargeTexture::draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate, bool p_transpose, const Ref<Texture> &p_normal_map) const { @@ -1283,8 +1279,6 @@ bool CubeMap::_set(const StringName &p_name, const Variant &p_value) { set_side(SIDE_FRONT, p_value); } else if (p_name == "side/back") { set_side(SIDE_BACK, p_value); - } else if (p_name == "flags") { - set_flags(p_value); } else if (p_name == "storage") { storage = Storage(p_value.operator int()); } else if (p_name == "lossy_quality") { @@ -1309,8 +1303,6 @@ bool CubeMap::_get(const StringName &p_name, Variant &r_ret) const { r_ret = get_side(SIDE_FRONT); } else if (p_name == "side/back") { r_ret = get_side(SIDE_BACK); - } else if (p_name == "flags") { - r_ret = flags; } else if (p_name == "storage") { r_ret = storage; } else if (p_name == "lossy_quality") { @@ -1330,7 +1322,6 @@ void CubeMap::_get_property_list(List<PropertyInfo> *p_list) const { img_hint = PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS; } - p_list->push_back(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter")); p_list->push_back(PropertyInfo(Variant::OBJECT, "side/left", PROPERTY_HINT_RESOURCE_TYPE, "Image")); p_list->push_back(PropertyInfo(Variant::OBJECT, "side/right", PROPERTY_HINT_RESOURCE_TYPE, "Image")); p_list->push_back(PropertyInfo(Variant::OBJECT, "side/bottom", PROPERTY_HINT_RESOURCE_TYPE, "Image")); @@ -1352,6 +1343,7 @@ void CubeMap::_bind_methods() { ClassDB::bind_method(D_METHOD("set_lossy_storage_quality", "quality"), &CubeMap::set_lossy_storage_quality); ClassDB::bind_method(D_METHOD("get_lossy_storage_quality"), &CubeMap::get_lossy_storage_quality); + ADD_PROPERTY(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter"), "set_flags", "get_flags"); ADD_PROPERTY(PropertyInfo(Variant::INT, "storage_mode", PROPERTY_HINT_ENUM, "Raw,Lossy Compressed,Lossless Compressed"), "set_storage", "get_storage"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "lossy_storage_quality"), "set_lossy_storage_quality", "get_lossy_storage_quality"); diff --git a/scene/resources/texture.h b/scene/resources/texture.h index 1b0754ad3b..93d7ec4ef9 100644 --- a/scene/resources/texture.h +++ b/scene/resources/texture.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TEXTURE_H #define TEXTURE_H diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index 7337c5ec4d..f903669fc7 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "theme.h" #include "os/file_access.h" #include "print_string.h" diff --git a/scene/resources/theme.h b/scene/resources/theme.h index 0d15a9a11e..c23f237c75 100644 --- a/scene/resources/theme.h +++ b/scene/resources/theme.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef THEME_H #define THEME_H diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp index 89de2de279..3138d73caf 100644 --- a/scene/resources/tile_set.cpp +++ b/scene/resources/tile_set.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "tile_set.h" #include "array.h" @@ -211,7 +212,7 @@ bool TileSet::_get(const StringName &p_name, Variant &r_ret) const { Vector3 v; for (Map<Vector2, int>::Element *E = tile_map[id].autotile_data.priority_map.front(); E; E = E->next()) { if (E->value() > 1) { - //Dont save default value + //Don't save default value v.x = E->key().x; v.y = E->key().y; v.z = E->value(); @@ -259,14 +260,14 @@ void TileSet::_get_property_list(List<PropertyInfo> *p_list) const { p_list->push_back(PropertyInfo(Variant::RECT2, pre + "region")); p_list->push_back(PropertyInfo(Variant::BOOL, pre + "is_autotile", PROPERTY_HINT_NONE, "")); if (tile_get_is_autotile(id)) { - p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/bitmask_mode", PROPERTY_HINT_ENUM, "2X2,3X3", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/icon_coordinate", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/tile_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/spacing", PROPERTY_HINT_RANGE, "0,256,1", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/bitmask_flags", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/occluder_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/navpoly_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/priority_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/bitmask_mode", PROPERTY_HINT_ENUM, "2X2,3X3", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/icon_coordinate", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/tile_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/spacing", PROPERTY_HINT_RANGE, "0,256,1", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/bitmask_flags", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/occluder_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/navpoly_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/priority_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "occluder_offset")); p_list->push_back(PropertyInfo(Variant::OBJECT, pre + "occluder", PROPERTY_HINT_RESOURCE_TYPE, "OccluderPolygon2D")); @@ -308,6 +309,7 @@ void TileSet::tile_set_texture(int p_id, const Ref<Texture> &p_texture) { ERR_FAIL_COND(!tile_map.has(p_id)); tile_map[p_id].texture = p_texture; emit_changed(); + _change_notify("texture"); } Ref<Texture> TileSet::tile_get_texture(int p_id) const { @@ -385,8 +387,8 @@ void TileSet::tile_set_is_autotile(int p_id, bool p_is_autotile) { ERR_FAIL_COND(!tile_map.has(p_id)); tile_map[p_id].is_autotile = p_is_autotile; - _change_notify(""); emit_changed(); + _change_notify("is_autotile"); } bool TileSet::tile_get_is_autotile(int p_id) const { diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h index e7e5c06d34..1306e2878c 100644 --- a/scene/resources/tile_set.h +++ b/scene/resources/tile_set.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef TILE_SET_H #define TILE_SET_H diff --git a/scene/resources/video_stream.cpp b/scene/resources/video_stream.cpp index ddedc1a37e..3cd8cbae77 100644 --- a/scene/resources/video_stream.cpp +++ b/scene/resources/video_stream.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "video_stream.h" void VideoStreamPlayback::_bind_methods(){ diff --git a/scene/resources/video_stream.h b/scene/resources/video_stream.h index bd5bf54d0a..0d25d9d687 100644 --- a/scene/resources/video_stream.h +++ b/scene/resources/video_stream.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VIDEO_STREAM_H #define VIDEO_STREAM_H diff --git a/scene/resources/world.cpp b/scene/resources/world.cpp index 57f567bc3c..82183d24e7 100644 --- a/scene/resources/world.cpp +++ b/scene/resources/world.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "world.h" #include "camera_matrix.h" @@ -317,6 +318,9 @@ void World::_bind_methods() { ClassDB::bind_method(D_METHOD("get_direct_space_state"), &World::get_direct_space_state); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "environment", PROPERTY_HINT_RESOURCE_TYPE, "Environment"), "set_environment", "get_environment"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "fallback_environment", PROPERTY_HINT_RESOURCE_TYPE, "Environment"), "set_fallback_environment", "get_fallback_environment"); + ADD_PROPERTY(PropertyInfo(Variant::_RID, "space", PROPERTY_HINT_NONE, "", 0), "", "get_space"); + ADD_PROPERTY(PropertyInfo(Variant::_RID, "scenario", PROPERTY_HINT_NONE, "", 0), "", "get_scenario"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "direct_space_state", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsDirectSpaceState", 0), "", "get_direct_space_state"); } World::World() { diff --git a/scene/resources/world.h b/scene/resources/world.h index 19b8bd03a6..54bdf25784 100644 --- a/scene/resources/world.h +++ b/scene/resources/world.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef WORLD_H #define WORLD_H diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp index 1f75c43d75..bed6ffd1bd 100644 --- a/scene/resources/world_2d.cpp +++ b/scene/resources/world_2d.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "world_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" @@ -372,6 +373,10 @@ void World2D::_bind_methods() { ClassDB::bind_method(D_METHOD("get_space"), &World2D::get_space); ClassDB::bind_method(D_METHOD("get_direct_space_state"), &World2D::get_direct_space_state); + + ADD_PROPERTY(PropertyInfo(Variant::_RID, "canvas", PROPERTY_HINT_NONE, "", 0), "", "get_canvas"); + ADD_PROPERTY(PropertyInfo(Variant::_RID, "space", PROPERTY_HINT_NONE, "", 0), "", "get_space"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "direct_space_state", PROPERTY_HINT_RESOURCE_TYPE, "Physics2DDirectSpaceState", 0), "", "get_direct_space_state"); } Physics2DDirectSpaceState *World2D::get_direct_space_state() { diff --git a/scene/resources/world_2d.h b/scene/resources/world_2d.h index 84fa00e6cd..59f34e32f2 100644 --- a/scene/resources/world_2d.h +++ b/scene/resources/world_2d.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef WORLD_2D_H #define WORLD_2D_H diff --git a/scene/scene_string_names.cpp b/scene/scene_string_names.cpp index e72bc63c53..fdce0eb2b6 100644 --- a/scene/scene_string_names.cpp +++ b/scene/scene_string_names.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "scene_string_names.h" SceneStringNames *SceneStringNames::singleton = NULL; @@ -48,6 +49,7 @@ SceneStringNames::SceneStringNames() { shader_unshaded = StaticCString::create("shader/unshaded"); shading_mode = StaticCString::create("shader/shading_mode"); tree_entered = StaticCString::create("tree_entered"); + tree_exiting = StaticCString::create("tree_exiting"); tree_exited = StaticCString::create("tree_exited"); item_rect_changed = StaticCString::create("item_rect_changed"); size_flags_changed = StaticCString::create("size_flags_changed"); diff --git a/scene/scene_string_names.h b/scene/scene_string_names.h index 8e7a0c0075..63a9a5db4d 100644 --- a/scene/scene_string_names.h +++ b/scene/scene_string_names.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SCENE_STRING_NAMES_H #define SCENE_STRING_NAMES_H @@ -68,6 +69,7 @@ public: StringName shader_unshaded; StringName shading_mode; StringName tree_entered; + StringName tree_exiting; StringName tree_exited; StringName size_flags_changed; StringName minimum_size_changed; diff --git a/servers/arvr/arvr_interface.cpp b/servers/arvr/arvr_interface.cpp index b599e1c5cc..29478ee994 100644 --- a/servers/arvr/arvr_interface.cpp +++ b/servers/arvr/arvr_interface.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "arvr_interface.h" void ARVRInterface::_bind_methods() { diff --git a/servers/arvr/arvr_interface.h b/servers/arvr/arvr_interface.h index a70c7cec0e..0b922c5892 100644 --- a/servers/arvr/arvr_interface.h +++ b/servers/arvr/arvr_interface.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ARVR_INTERFACE_H #define ARVR_INTERFACE_H diff --git a/servers/arvr/arvr_positional_tracker.cpp b/servers/arvr/arvr_positional_tracker.cpp index 08b5bab641..c12d0bbc15 100644 --- a/servers/arvr/arvr_positional_tracker.cpp +++ b/servers/arvr/arvr_positional_tracker.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* arvr_postional_tracker.cpp */ +/* arvr_positional_tracker.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "arvr_positional_tracker.h" #include "core/os/input.h" diff --git a/servers/arvr/arvr_positional_tracker.h b/servers/arvr/arvr_positional_tracker.h index 884aae3076..525e47a681 100644 --- a/servers/arvr/arvr_positional_tracker.h +++ b/servers/arvr/arvr_positional_tracker.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef ARVR_POSITIONAL_TRACKER_H #define ARVR_POSITIONAL_TRACKER_H diff --git a/servers/arvr_server.cpp b/servers/arvr_server.cpp index 441a7581d1..d373a7d6f5 100644 --- a/servers/arvr_server.cpp +++ b/servers/arvr_server.cpp @@ -67,11 +67,11 @@ void ARVRServer::_bind_methods() { BIND_ENUM_CONSTANT(RESET_BUT_KEEP_TILT); BIND_ENUM_CONSTANT(DONT_RESET_ROTATION); - ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING, "name"))); - ADD_SIGNAL(MethodInfo("interface_removed", PropertyInfo(Variant::STRING, "name"))); + ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING, "interface_name"))); + ADD_SIGNAL(MethodInfo("interface_removed", PropertyInfo(Variant::STRING, "interface_name"))); - ADD_SIGNAL(MethodInfo("tracker_added", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id"))); - ADD_SIGNAL(MethodInfo("tracker_removed", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id"))); + ADD_SIGNAL(MethodInfo("tracker_added", PropertyInfo(Variant::STRING, "tracker_name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id"))); + ADD_SIGNAL(MethodInfo("tracker_removed", PropertyInfo(Variant::STRING, "tracker_name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id"))); }; real_t ARVRServer::get_world_scale() const { @@ -212,7 +212,7 @@ Array ARVRServer::get_interfaces() const { }; /* - A little extra info on the tracker ids, these are unique per tracker type so we get soem consistency in recognising our trackers, specifically controllers. + A little extra info on the tracker ids, these are unique per tracker type so we get some consistency in recognising our trackers, specifically controllers. The first controller that is turned of will get ID 1, the second will get ID 2, etc. The magic happens when one of the controllers is turned off, say controller 1 turns off, controller 2 will remain controller 2, controller 3 will remain controller 3. diff --git a/servers/arvr_server.h b/servers/arvr_server.h index cb0e3949d4..34f143c0e0 100644 --- a/servers/arvr_server.h +++ b/servers/arvr_server.h @@ -95,7 +95,7 @@ public: /* World scale allows you to specify a scale factor that is applied to all positioning vectors in our VR world in essence scaling up, or scaling down the world. For stereoscopic rendering specifically this is very important to give an accurate sense of scale. - Add controllers into the mix and an accurate mapping of real world movement to percieved virtual movement becomes very important. + Add controllers into the mix and an accurate mapping of real world movement to perceived virtual movement becomes very important. Most VR platforms, and our assumption, is that 1 unit in our virtual world equates to 1 meter in the real mode. This scale basically effects the unit size relationship to real world size. @@ -112,7 +112,7 @@ public: in relation to this point. Note that the ARVROrigin spatial node in your scene automatically updates this property and it should be used instead of - direct access to this property and it therefor is not available in GDScript + direct access to this property and it therefore is not available in GDScript Note: this should not be used in AR and should be ignored by an AR based interface as it would throw what you're looking at in the real world and in the virtual world out of sync diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp index 244eaf1340..1ca2334392 100644 --- a/servers/audio/audio_driver_dummy.cpp +++ b/servers/audio/audio_driver_dummy.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_driver_dummy.h" #include "os/os.h" diff --git a/servers/audio/audio_driver_dummy.h b/servers/audio/audio_driver_dummy.h index 329941bc09..ba4f69edf4 100644 --- a/servers/audio/audio_driver_dummy.h +++ b/servers/audio/audio_driver_dummy.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_DRIVER_DUMMY_H #define AUDIO_DRIVER_DUMMY_H diff --git a/servers/audio/audio_effect.cpp b/servers/audio/audio_effect.cpp index 21ffbcf0e1..b061dad259 100644 --- a/servers/audio/audio_effect.cpp +++ b/servers/audio/audio_effect.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect.h" AudioEffect::AudioEffect() { diff --git a/servers/audio/audio_effect.h b/servers/audio/audio_effect.h index 3f80fb00e2..cf732d4bdd 100644 --- a/servers/audio/audio_effect.h +++ b/servers/audio/audio_effect.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECT_H #define AUDIOEFFECT_H diff --git a/servers/audio/audio_filter_sw.cpp b/servers/audio/audio_filter_sw.cpp index e3f6b7f359..70cb7beacb 100644 --- a/servers/audio/audio_filter_sw.cpp +++ b/servers/audio/audio_filter_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_filter_sw.h" void AudioFilterSW::set_mode(Mode p_mode) { diff --git a/servers/audio/audio_filter_sw.h b/servers/audio/audio_filter_sw.h index 4d00462876..4174f9bd51 100644 --- a/servers/audio/audio_filter_sw.h +++ b/servers/audio/audio_filter_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_FILTER_SW_H #define AUDIO_FILTER_SW_H diff --git a/servers/audio/audio_rb_resampler.cpp b/servers/audio/audio_rb_resampler.cpp index 6c671d5b88..9faa4056c3 100644 --- a/servers/audio/audio_rb_resampler.cpp +++ b/servers/audio/audio_rb_resampler.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_rb_resampler.h" #include "core/math/math_funcs.h" #include "os/os.h" @@ -40,7 +41,7 @@ int AudioRBResampler::get_channel_count() const { return channels; } -// Linear interpolation based sample rate convertion (low quality) +// Linear interpolation based sample rate conversion (low quality) // Note that AudioStreamPlaybackResampled::mix has better algorithm, // but it wasn't obvious to integrate that with VideoPlayer template <int C> diff --git a/servers/audio/audio_rb_resampler.h b/servers/audio/audio_rb_resampler.h index 0359093e30..6ef79c93fa 100644 --- a/servers/audio/audio_rb_resampler.h +++ b/servers/audio/audio_rb_resampler.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_RB_RESAMPLER_H #define AUDIO_RB_RESAMPLER_H diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index 739ebb7cd9..0ad30987e7 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_stream.h" ////////////////////////////// @@ -90,6 +91,13 @@ void AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale, } //////////////////////////////// +void AudioStream::_bind_methods() { + + ClassDB::bind_method(D_METHOD("get_length"), &AudioStream::get_length); +} + +//////////////////////////////// + void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) { audio_stream = p_audio_stream; @@ -135,6 +143,14 @@ String AudioStreamRandomPitch::get_stream_name() const { return "RandomPitch"; } +float AudioStreamRandomPitch::get_length() const { + if (audio_stream.is_valid()) { + return audio_stream->get_length(); + } + + return 0; +} + void AudioStreamRandomPitch::_bind_methods() { ClassDB::bind_method(D_METHOD("set_audio_stream", "stream"), &AudioStreamRandomPitch::set_audio_stream); @@ -208,14 +224,6 @@ void AudioStreamPlaybackRandomPitch::mix(AudioFrame *p_buffer, float p_rate_scal } } -float AudioStreamPlaybackRandomPitch::get_length() const { - if (playing.is_valid()) { - return playing->get_length(); - } - - return 0; -} - AudioStreamPlaybackRandomPitch::~AudioStreamPlaybackRandomPitch() { random_pitch->playbacks.erase(this); } diff --git a/servers/audio/audio_stream.h b/servers/audio/audio_stream.h index f3db58ada3..fda4fc2ccc 100644 --- a/servers/audio/audio_stream.h +++ b/servers/audio/audio_stream.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_STREAM_H #define AUDIO_STREAM_H @@ -49,8 +50,6 @@ public: virtual void seek(float p_time) = 0; virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) = 0; - - virtual float get_length() const = 0; //if supported, otherwise return 0 }; class AudioStreamPlaybackResampled : public AudioStreamPlayback { @@ -84,9 +83,14 @@ class AudioStream : public Resource { GDCLASS(AudioStream, Resource) OBJ_SAVE_TYPE(AudioStream) //children are all saved as AudioStream, so they can be exchanged +protected: + static void _bind_methods(); + public: virtual Ref<AudioStreamPlayback> instance_playback() = 0; virtual String get_stream_name() const = 0; + + virtual float get_length() const = 0; //if supported, otherwise return 0 }; class AudioStreamPlaybackRandomPitch; @@ -113,6 +117,8 @@ public: virtual Ref<AudioStreamPlayback> instance_playback(); virtual String get_stream_name() const; + virtual float get_length() const; //if supported, otherwise return 0 + AudioStreamRandomPitch(); }; @@ -138,8 +144,6 @@ public: virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames); - virtual float get_length() const; //if supported, otherwise return 0 - ~AudioStreamPlaybackRandomPitch(); }; diff --git a/servers/audio/effects/audio_effect_amplify.cpp b/servers/audio/effects/audio_effect_amplify.cpp index 542019d32c..9c8dfa8cb9 100644 --- a/servers/audio/effects/audio_effect_amplify.cpp +++ b/servers/audio/effects/audio_effect_amplify.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_amplify.h" void AudioEffectAmplifyInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) { diff --git a/servers/audio/effects/audio_effect_amplify.h b/servers/audio/effects/audio_effect_amplify.h index 88c7d8f73f..1096dc04df 100644 --- a/servers/audio/effects/audio_effect_amplify.h +++ b/servers/audio/effects/audio_effect_amplify.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTAMPLIFY_H #define AUDIOEFFECTAMPLIFY_H diff --git a/servers/audio/effects/audio_effect_chorus.cpp b/servers/audio/effects/audio_effect_chorus.cpp index 7945fc6c08..f2f554a09b 100644 --- a/servers/audio/effects/audio_effect_chorus.cpp +++ b/servers/audio/effects/audio_effect_chorus.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_chorus.h" #include "math_funcs.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_chorus.h b/servers/audio/effects/audio_effect_chorus.h index f1e0e16f3d..a4646df7d7 100644 --- a/servers/audio/effects/audio_effect_chorus.h +++ b/servers/audio/effects/audio_effect_chorus.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTCHORUS_H #define AUDIOEFFECTCHORUS_H diff --git a/servers/audio/effects/audio_effect_compressor.cpp b/servers/audio/effects/audio_effect_compressor.cpp index 27c59ce356..0252b2f341 100644 --- a/servers/audio/effects/audio_effect_compressor.cpp +++ b/servers/audio/effects/audio_effect_compressor.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_compressor.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_compressor.h b/servers/audio/effects/audio_effect_compressor.h index ca87659a34..ef11249415 100644 --- a/servers/audio/effects/audio_effect_compressor.h +++ b/servers/audio/effects/audio_effect_compressor.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTCOMPRESSOR_H #define AUDIOEFFECTCOMPRESSOR_H diff --git a/servers/audio/effects/audio_effect_delay.cpp b/servers/audio/effects/audio_effect_delay.cpp index 98283d6453..e3af898afa 100644 --- a/servers/audio/effects/audio_effect_delay.cpp +++ b/servers/audio/effects/audio_effect_delay.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_delay.h" #include "math_funcs.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_delay.h b/servers/audio/effects/audio_effect_delay.h index cd45d0e9e7..f173bd6dfc 100644 --- a/servers/audio/effects/audio_effect_delay.h +++ b/servers/audio/effects/audio_effect_delay.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTDELAY_H #define AUDIOEFFECTDELAY_H diff --git a/servers/audio/effects/audio_effect_distortion.cpp b/servers/audio/effects/audio_effect_distortion.cpp index 2105fd42d7..c9ac0db644 100644 --- a/servers/audio/effects/audio_effect_distortion.cpp +++ b/servers/audio/effects/audio_effect_distortion.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_distortion.h" #include "math_funcs.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_distortion.h b/servers/audio/effects/audio_effect_distortion.h index d4f7076864..8d9ff1c03f 100644 --- a/servers/audio/effects/audio_effect_distortion.h +++ b/servers/audio/effects/audio_effect_distortion.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTDISTORTION_H #define AUDIOEFFECTDISTORTION_H diff --git a/servers/audio/effects/audio_effect_eq.cpp b/servers/audio/effects/audio_effect_eq.cpp index 49a2b17c54..a30fca4e8d 100644 --- a/servers/audio/effects/audio_effect_eq.cpp +++ b/servers/audio/effects/audio_effect_eq.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_eq.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_eq.h b/servers/audio/effects/audio_effect_eq.h index 70c2cf57b9..c45fb753ea 100644 --- a/servers/audio/effects/audio_effect_eq.h +++ b/servers/audio/effects/audio_effect_eq.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTEQ_H #define AUDIOEFFECTEQ_H diff --git a/servers/audio/effects/audio_effect_filter.cpp b/servers/audio/effects/audio_effect_filter.cpp index e4a6aa23b2..75a43d2d41 100644 --- a/servers/audio/effects/audio_effect_filter.cpp +++ b/servers/audio/effects/audio_effect_filter.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_filter.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_filter.h b/servers/audio/effects/audio_effect_filter.h index 39506d50ec..11978882bc 100644 --- a/servers/audio/effects/audio_effect_filter.h +++ b/servers/audio/effects/audio_effect_filter.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTFILTER_H #define AUDIOEFFECTFILTER_H diff --git a/servers/audio/effects/audio_effect_limiter.cpp b/servers/audio/effects/audio_effect_limiter.cpp index f746f0b94a..77454dc57b 100644 --- a/servers/audio/effects/audio_effect_limiter.cpp +++ b/servers/audio/effects/audio_effect_limiter.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_limiter.h" void AudioEffectLimiterInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) { diff --git a/servers/audio/effects/audio_effect_limiter.h b/servers/audio/effects/audio_effect_limiter.h index 841a6c7e4e..8077d2da23 100644 --- a/servers/audio/effects/audio_effect_limiter.h +++ b/servers/audio/effects/audio_effect_limiter.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_EFFECT_LIMITER_H #define AUDIO_EFFECT_LIMITER_H diff --git a/servers/audio/effects/audio_effect_panner.cpp b/servers/audio/effects/audio_effect_panner.cpp index a55f476f40..6b6ca405e0 100644 --- a/servers/audio/effects/audio_effect_panner.cpp +++ b/servers/audio/effects/audio_effect_panner.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_panner.h" void AudioEffectPannerInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) { diff --git a/servers/audio/effects/audio_effect_panner.h b/servers/audio/effects/audio_effect_panner.h index db78959b0a..cdab11c445 100644 --- a/servers/audio/effects/audio_effect_panner.h +++ b/servers/audio/effects/audio_effect_panner.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTPANNER_H #define AUDIOEFFECTPANNER_H diff --git a/servers/audio/effects/audio_effect_phaser.cpp b/servers/audio/effects/audio_effect_phaser.cpp index 4a824acf58..c0a9bd773d 100644 --- a/servers/audio/effects/audio_effect_phaser.cpp +++ b/servers/audio/effects/audio_effect_phaser.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_phaser.h" #include "math_funcs.h" #include "servers/audio_server.h" diff --git a/servers/audio/effects/audio_effect_phaser.h b/servers/audio/effects/audio_effect_phaser.h index 6755a0718c..96ba2b0abf 100644 --- a/servers/audio/effects/audio_effect_phaser.h +++ b/servers/audio/effects/audio_effect_phaser.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_EFFECT_PHASER_H #define AUDIO_EFFECT_PHASER_H diff --git a/servers/audio/effects/audio_effect_pitch_shift.cpp b/servers/audio/effects/audio_effect_pitch_shift.cpp index 6db31f259e..ddd0a0db6b 100644 --- a/servers/audio/effects/audio_effect_pitch_shift.cpp +++ b/servers/audio/effects/audio_effect_pitch_shift.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_pitch_shift.h" #include "math_funcs.h" diff --git a/servers/audio/effects/audio_effect_pitch_shift.h b/servers/audio/effects/audio_effect_pitch_shift.h index 3b9c35f6c4..f1c78d752f 100644 --- a/servers/audio/effects/audio_effect_pitch_shift.h +++ b/servers/audio/effects/audio_effect_pitch_shift.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_EFFECT_PITCH_SHIFT_H #define AUDIO_EFFECT_PITCH_SHIFT_H diff --git a/servers/audio/effects/audio_effect_reverb.cpp b/servers/audio/effects/audio_effect_reverb.cpp index f8750144b1..162c0a1445 100644 --- a/servers/audio/effects/audio_effect_reverb.cpp +++ b/servers/audio/effects/audio_effect_reverb.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_reverb.h" #include "servers/audio_server.h" void AudioEffectReverbInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) { @@ -95,7 +96,7 @@ void AudioEffectReverb::set_predelay_msec(float p_msec) { void AudioEffectReverb::set_predelay_feedback(float p_feedback) { - predelay_fb = p_feedback; + predelay_fb = CLAMP(p_feedback, 0, 0.98); } void AudioEffectReverb::set_room_size(float p_size) { @@ -184,7 +185,7 @@ void AudioEffectReverb::_bind_methods() { ADD_GROUP("Predelay", "predelay_"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "predelay_msec", PROPERTY_HINT_RANGE, "20,500,1"), "set_predelay_msec", "get_predelay_msec"); - ADD_PROPERTY(PropertyInfo(Variant::REAL, "predelay_feedback", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_predelay_msec", "get_predelay_msec"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "predelay_feedback", PROPERTY_HINT_RANGE, "0,0.98,0.01"), "set_predelay_feedback", "get_predelay_feedback"); ADD_GROUP("", ""); ADD_PROPERTY(PropertyInfo(Variant::REAL, "room_size", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_room_size", "get_room_size"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "damping", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_damping", "get_damping"); diff --git a/servers/audio/effects/audio_effect_reverb.h b/servers/audio/effects/audio_effect_reverb.h index 47c9c9f112..5646fd2238 100644 --- a/servers/audio/effects/audio_effect_reverb.h +++ b/servers/audio/effects/audio_effect_reverb.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTREVERB_H #define AUDIOEFFECTREVERB_H diff --git a/servers/audio/effects/audio_effect_stereo_enhance.cpp b/servers/audio/effects/audio_effect_stereo_enhance.cpp index ea2ecba4f4..cf5228f8b6 100644 --- a/servers/audio/effects/audio_effect_stereo_enhance.cpp +++ b/servers/audio/effects/audio_effect_stereo_enhance.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_effect_stereo_enhance.h" #include "servers/audio_server.h" void AudioEffectStereoEnhanceInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) { diff --git a/servers/audio/effects/audio_effect_stereo_enhance.h b/servers/audio/effects/audio_effect_stereo_enhance.h index aa7cd3c6af..13dd4ac042 100644 --- a/servers/audio/effects/audio_effect_stereo_enhance.h +++ b/servers/audio/effects/audio_effect_stereo_enhance.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIOEFFECTSTEREOENHANCE_H #define AUDIOEFFECTSTEREOENHANCE_H diff --git a/servers/audio/reverb_sw.cpp b/servers/audio/reverb_sw.cpp index 765bbf6996..52e7699deb 100644 --- a/servers/audio/reverb_sw.cpp +++ b/servers/audio/reverb_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "reverb_sw.h" #include "print_string.h" #include "stdlib.h" diff --git a/servers/audio/reverb_sw.h b/servers/audio/reverb_sw.h index 29ce47aaa5..15f9a43183 100644 --- a/servers/audio/reverb_sw.h +++ b/servers/audio/reverb_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REVERB_SW_H #define REVERB_SW_H diff --git a/servers/audio/voice_rb_sw.h b/servers/audio/voice_rb_sw.h index 5e48f948cf..42045428a8 100644 --- a/servers/audio/voice_rb_sw.h +++ b/servers/audio/voice_rb_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VOICE_RB_SW_H #define VOICE_RB_SW_H diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index 0317fe45ae..5c453a3113 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "audio_server.h" #include "io/resource_loader.h" #include "os/file_access.h" @@ -122,7 +123,6 @@ int AudioDriverManager::get_driver_count() { } void AudioDriverManager::initialize(int p_driver) { - AudioDriver *driver; int failed_driver = -1; // Check if there is a selected driver @@ -1267,16 +1267,16 @@ bool AudioBusLayout::_get(const StringName &p_name, Variant &r_ret) const { void AudioBusLayout::_get_property_list(List<PropertyInfo> *p_list) const { for (int i = 0; i < buses.size(); i++) { - p_list->push_back(PropertyInfo(Variant::STRING, "bus/" + itos(i) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/solo", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/mute", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/bypass_fx", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/volume_db", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/send", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::STRING, "bus/" + itos(i) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/solo", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/mute", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/bypass_fx", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/volume_db", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/send", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); for (int j = 0; j < buses[i].effects.size(); j++) { - p_list->push_back(PropertyInfo(Variant::OBJECT, "bus/" + itos(i) + "/effect/" + itos(j) + "/effect", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); - p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/effect/" + itos(j) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); + p_list->push_back(PropertyInfo(Variant::OBJECT, "bus/" + itos(i) + "/effect/" + itos(j) + "/effect", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/effect/" + itos(j) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } } } diff --git a/servers/audio_server.h b/servers/audio_server.h index 263bcd9818..188d38db94 100644 --- a/servers/audio_server.h +++ b/servers/audio_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AUDIO_SERVER_H #define AUDIO_SERVER_H diff --git a/servers/physics/area_pair_sw.cpp b/servers/physics/area_pair_sw.cpp index 7b4a520eba..d2fef0ab77 100644 --- a/servers/physics/area_pair_sw.cpp +++ b/servers/physics/area_pair_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "area_pair_sw.h" #include "collision_solver_sw.h" diff --git a/servers/physics/area_pair_sw.h b/servers/physics/area_pair_sw.h index 3095fea583..b66599dd11 100644 --- a/servers/physics/area_pair_sw.h +++ b/servers/physics/area_pair_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AREA_PAIR_SW_H #define AREA_PAIR_SW_H diff --git a/servers/physics/area_sw.cpp b/servers/physics/area_sw.cpp index 373e5788d7..8f9d4075b8 100644 --- a/servers/physics/area_sw.cpp +++ b/servers/physics/area_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "area_sw.h" #include "body_sw.h" #include "space_sw.h" diff --git a/servers/physics/area_sw.h b/servers/physics/area_sw.h index 0295f6ab3a..ae19b0e04e 100644 --- a/servers/physics/area_sw.h +++ b/servers/physics/area_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AREA_SW_H #define AREA_SW_H diff --git a/servers/physics/body_pair_sw.cpp b/servers/physics/body_pair_sw.cpp index 2d8ab44ddb..882d201f61 100644 --- a/servers/physics/body_pair_sw.cpp +++ b/servers/physics/body_pair_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "body_pair_sw.h" #include "collision_solver_sw.h" diff --git a/servers/physics/body_pair_sw.h b/servers/physics/body_pair_sw.h index b65711340b..fd85d77718 100644 --- a/servers/physics/body_pair_sw.h +++ b/servers/physics/body_pair_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BODY_PAIR_SW_H #define BODY_PAIR_SW_H diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp index 95101d6f8e..cc9681193c 100644 --- a/servers/physics/body_sw.cpp +++ b/servers/physics/body_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "body_sw.h" #include "area_sw.h" #include "space_sw.h" diff --git a/servers/physics/body_sw.h b/servers/physics/body_sw.h index 85c40bc527..e8ea5531e5 100644 --- a/servers/physics/body_sw.h +++ b/servers/physics/body_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BODY_SW_H #define BODY_SW_H diff --git a/servers/physics/broad_phase_basic.cpp b/servers/physics/broad_phase_basic.cpp index d06279c45a..52483a8b14 100644 --- a/servers/physics/broad_phase_basic.cpp +++ b/servers/physics/broad_phase_basic.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "broad_phase_basic.h" #include "list.h" #include "print_string.h" diff --git a/servers/physics/broad_phase_basic.h b/servers/physics/broad_phase_basic.h index b291e988a3..47fcdb3060 100644 --- a/servers/physics/broad_phase_basic.h +++ b/servers/physics/broad_phase_basic.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BROAD_PHASE_BASIC_H #define BROAD_PHASE_BASIC_H diff --git a/servers/physics/broad_phase_octree.cpp b/servers/physics/broad_phase_octree.cpp index b71489c575..7f43fbdb6a 100644 --- a/servers/physics/broad_phase_octree.cpp +++ b/servers/physics/broad_phase_octree.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "broad_phase_octree.h" #include "collision_object_sw.h" diff --git a/servers/physics/broad_phase_octree.h b/servers/physics/broad_phase_octree.h index 5c37f51cbe..e7028eba98 100644 --- a/servers/physics/broad_phase_octree.h +++ b/servers/physics/broad_phase_octree.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BROAD_PHASE_OCTREE_H #define BROAD_PHASE_OCTREE_H diff --git a/servers/physics/broad_phase_sw.cpp b/servers/physics/broad_phase_sw.cpp index 619aab7e46..2a490c3e80 100644 --- a/servers/physics/broad_phase_sw.cpp +++ b/servers/physics/broad_phase_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "broad_phase_sw.h" BroadPhaseSW::CreateFunction BroadPhaseSW::create_func = NULL; diff --git a/servers/physics/broad_phase_sw.h b/servers/physics/broad_phase_sw.h index ef55f881d5..7559942cd4 100644 --- a/servers/physics/broad_phase_sw.h +++ b/servers/physics/broad_phase_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BROAD_PHASE_SW_H #define BROAD_PHASE_SW_H diff --git a/servers/physics/collision_object_sw.cpp b/servers/physics/collision_object_sw.cpp index 7b5d960357..f7a58a9cf2 100644 --- a/servers/physics/collision_object_sw.cpp +++ b/servers/physics/collision_object_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_object_sw.h" #include "servers/physics/physics_server_sw.h" #include "space_sw.h" diff --git a/servers/physics/collision_object_sw.h b/servers/physics/collision_object_sw.h index 6683cabd5b..f5d32e56a0 100644 --- a/servers/physics/collision_object_sw.h +++ b/servers/physics/collision_object_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_OBJECT_SW_H #define COLLISION_OBJECT_SW_H diff --git a/servers/physics/collision_solver_sat.cpp b/servers/physics/collision_solver_sat.cpp index 30a0f5ce94..eefb0f0396 100644 --- a/servers/physics/collision_solver_sat.cpp +++ b/servers/physics/collision_solver_sat.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_solver_sat.h" #include "geometry.h" diff --git a/servers/physics/collision_solver_sat.h b/servers/physics/collision_solver_sat.h index 3ebfa88256..1d83d9889d 100644 --- a/servers/physics/collision_solver_sat.h +++ b/servers/physics/collision_solver_sat.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SOLVER_SAT_H #define COLLISION_SOLVER_SAT_H diff --git a/servers/physics/collision_solver_sw.cpp b/servers/physics/collision_solver_sw.cpp index ce56b004f6..e26a7a4d89 100644 --- a/servers/physics/collision_solver_sw.cpp +++ b/servers/physics/collision_solver_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_solver_sw.h" #include "collision_solver_sat.h" diff --git a/servers/physics/collision_solver_sw.h b/servers/physics/collision_solver_sw.h index 0c3418a4ec..cbcb6b850a 100644 --- a/servers/physics/collision_solver_sw.h +++ b/servers/physics/collision_solver_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SOLVER_SW_H #define COLLISION_SOLVER_SW_H diff --git a/servers/physics/constraint_sw.h b/servers/physics/constraint_sw.h index a11ac04ffd..a641f06f0c 100644 --- a/servers/physics/constraint_sw.h +++ b/servers/physics/constraint_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONSTRAINT_SW_H #define CONSTRAINT_SW_H diff --git a/servers/physics/gjk_epa.cpp b/servers/physics/gjk_epa.cpp index 7a2eb9b0ad..a42b7ed82b 100644 --- a/servers/physics/gjk_epa.cpp +++ b/servers/physics/gjk_epa.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "gjk_epa.h" /* Disabling formatting for thirdparty code snippet */ diff --git a/servers/physics/gjk_epa.h b/servers/physics/gjk_epa.h index bc00de0f6c..f6d052608e 100644 --- a/servers/physics/gjk_epa.h +++ b/servers/physics/gjk_epa.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef GJK_EPA_H #define GJK_EPA_H diff --git a/servers/physics/joints_sw.h b/servers/physics/joints_sw.h index 1a49e84392..af27b1c25b 100644 --- a/servers/physics/joints_sw.h +++ b/servers/physics/joints_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JOINTS_SW_H #define JOINTS_SW_H diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp index fc6ba534e6..5681ca838a 100644 --- a/servers/physics/physics_server_sw.cpp +++ b/servers/physics/physics_server_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_server_sw.h" #include "broad_phase_basic.h" diff --git a/servers/physics/physics_server_sw.h b/servers/physics/physics_server_sw.h index a64ebf76b6..132ac78968 100644 --- a/servers/physics/physics_server_sw.h +++ b/servers/physics/physics_server_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_SERVER_SW #define PHYSICS_SERVER_SW diff --git a/servers/physics/shape_sw.cpp b/servers/physics/shape_sw.cpp index 5ac1ba46d7..5a58742958 100644 --- a/servers/physics/shape_sw.cpp +++ b/servers/physics/shape_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shape_sw.h" #include "geometry.h" diff --git a/servers/physics/shape_sw.h b/servers/physics/shape_sw.h index 1bcbb91f90..4a9a6289ff 100644 --- a/servers/physics/shape_sw.h +++ b/servers/physics/shape_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHAPE_SW_H #define SHAPE_SW_H diff --git a/servers/physics/space_sw.cpp b/servers/physics/space_sw.cpp index d66886ad91..fe6c42a531 100644 --- a/servers/physics/space_sw.cpp +++ b/servers/physics/space_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "space_sw.h" #include "collision_solver_sw.h" diff --git a/servers/physics/space_sw.h b/servers/physics/space_sw.h index c080d82785..0d519ea50b 100644 --- a/servers/physics/space_sw.h +++ b/servers/physics/space_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPACE_SW_H #define SPACE_SW_H diff --git a/servers/physics/step_sw.cpp b/servers/physics/step_sw.cpp index 662d54b6de..ad08cb6353 100644 --- a/servers/physics/step_sw.cpp +++ b/servers/physics/step_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "step_sw.h" #include "joints_sw.h" diff --git a/servers/physics/step_sw.h b/servers/physics/step_sw.h index 3286d8085e..25e9fedf79 100644 --- a/servers/physics/step_sw.h +++ b/servers/physics/step_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STEP_SW_H #define STEP_SW_H diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/area_2d_sw.cpp index db43ca840f..037c92bac6 100644 --- a/servers/physics_2d/area_2d_sw.cpp +++ b/servers/physics_2d/area_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "area_2d_sw.h" #include "body_2d_sw.h" #include "space_2d_sw.h" diff --git a/servers/physics_2d/area_2d_sw.h b/servers/physics_2d/area_2d_sw.h index a2925a4d2d..d2058ad5af 100644 --- a/servers/physics_2d/area_2d_sw.h +++ b/servers/physics_2d/area_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AREA_2D_SW_H #define AREA_2D_SW_H diff --git a/servers/physics_2d/area_pair_2d_sw.cpp b/servers/physics_2d/area_pair_2d_sw.cpp index c2c1f71149..9d515d2183 100644 --- a/servers/physics_2d/area_pair_2d_sw.cpp +++ b/servers/physics_2d/area_pair_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "area_pair_2d_sw.h" #include "collision_solver_2d_sw.h" diff --git a/servers/physics_2d/area_pair_2d_sw.h b/servers/physics_2d/area_pair_2d_sw.h index 496023904c..243b99a79c 100644 --- a/servers/physics_2d/area_pair_2d_sw.h +++ b/servers/physics_2d/area_pair_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef AREA_PAIR_2D_SW_H #define AREA_PAIR_2D_SW_H diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp index 38344ec20b..aa063d6c1e 100644 --- a/servers/physics_2d/body_2d_sw.cpp +++ b/servers/physics_2d/body_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "body_2d_sw.h" #include "area_2d_sw.h" #include "physics_2d_server_sw.h" diff --git a/servers/physics_2d/body_2d_sw.h b/servers/physics_2d/body_2d_sw.h index 497b20b7ad..782adf3416 100644 --- a/servers/physics_2d/body_2d_sw.h +++ b/servers/physics_2d/body_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BODY_2D_SW_H #define BODY_2D_SW_H diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/body_pair_2d_sw.cpp index ca98e78b55..f51882b5ee 100644 --- a/servers/physics_2d/body_pair_2d_sw.cpp +++ b/servers/physics_2d/body_pair_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "body_pair_2d_sw.h" #include "collision_solver_2d_sw.h" #include "space_2d_sw.h" diff --git a/servers/physics_2d/body_pair_2d_sw.h b/servers/physics_2d/body_pair_2d_sw.h index b85136b5b4..e54a32fb46 100644 --- a/servers/physics_2d/body_pair_2d_sw.h +++ b/servers/physics_2d/body_pair_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BODY_PAIR_2D_SW_H #define BODY_PAIR_2D_SW_H diff --git a/servers/physics_2d/broad_phase_2d_basic.cpp b/servers/physics_2d/broad_phase_2d_basic.cpp index fbb32fbbf8..067d86f474 100644 --- a/servers/physics_2d/broad_phase_2d_basic.cpp +++ b/servers/physics_2d/broad_phase_2d_basic.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "broad_phase_2d_basic.h" BroadPhase2DBasic::ID BroadPhase2DBasic::create(CollisionObject2DSW *p_object_, int p_subindex) { diff --git a/servers/physics_2d/broad_phase_2d_basic.h b/servers/physics_2d/broad_phase_2d_basic.h index 2e08f8990f..f0f0b3df88 100644 --- a/servers/physics_2d/broad_phase_2d_basic.h +++ b/servers/physics_2d/broad_phase_2d_basic.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BROAD_PHASE_2D_BASIC_H #define BROAD_PHASE_2D_BASIC_H diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.cpp b/servers/physics_2d/broad_phase_2d_hash_grid.cpp index 0351f10764..1a5b2d5e3a 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.cpp +++ b/servers/physics_2d/broad_phase_2d_hash_grid.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "broad_phase_2d_hash_grid.h" #include "project_settings.h" diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.h b/servers/physics_2d/broad_phase_2d_hash_grid.h index b7de3ef621..5188abc837 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.h +++ b/servers/physics_2d/broad_phase_2d_hash_grid.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BROAD_PHASE_2D_HASH_GRID_H #define BROAD_PHASE_2D_HASH_GRID_H diff --git a/servers/physics_2d/broad_phase_2d_sw.cpp b/servers/physics_2d/broad_phase_2d_sw.cpp index b8fc84b8ce..6e3dce000f 100644 --- a/servers/physics_2d/broad_phase_2d_sw.cpp +++ b/servers/physics_2d/broad_phase_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "broad_phase_2d_sw.h" BroadPhase2DSW::CreateFunction BroadPhase2DSW::create_func = NULL; diff --git a/servers/physics_2d/broad_phase_2d_sw.h b/servers/physics_2d/broad_phase_2d_sw.h index 0e39c2766f..80ae970624 100644 --- a/servers/physics_2d/broad_phase_2d_sw.h +++ b/servers/physics_2d/broad_phase_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef BROAD_PHASE_2D_SW_H #define BROAD_PHASE_2D_SW_H diff --git a/servers/physics_2d/collision_object_2d_sw.cpp b/servers/physics_2d/collision_object_2d_sw.cpp index 4d33a72a69..80cdd58aeb 100644 --- a/servers/physics_2d/collision_object_2d_sw.cpp +++ b/servers/physics_2d/collision_object_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_object_2d_sw.h" #include "space_2d_sw.h" diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h index 0ffdca21d3..5f25c27158 100644 --- a/servers/physics_2d/collision_object_2d_sw.h +++ b/servers/physics_2d/collision_object_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_OBJECT_2D_SW_H #define COLLISION_OBJECT_2D_SW_H diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/collision_solver_2d_sat.cpp index fc7d9f7760..0d1ffca50d 100644 --- a/servers/physics_2d/collision_solver_2d_sat.cpp +++ b/servers/physics_2d/collision_solver_2d_sat.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_solver_2d_sat.h" #include "geometry.h" diff --git a/servers/physics_2d/collision_solver_2d_sat.h b/servers/physics_2d/collision_solver_2d_sat.h index 939e3942f7..ba35c63fbc 100644 --- a/servers/physics_2d/collision_solver_2d_sat.h +++ b/servers/physics_2d/collision_solver_2d_sat.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SOLVER_2D_SAT_H #define COLLISION_SOLVER_2D_SAT_H diff --git a/servers/physics_2d/collision_solver_2d_sw.cpp b/servers/physics_2d/collision_solver_2d_sw.cpp index 1853c02288..a6ef110149 100644 --- a/servers/physics_2d/collision_solver_2d_sw.cpp +++ b/servers/physics_2d/collision_solver_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "collision_solver_2d_sw.h" #include "collision_solver_2d_sat.h" diff --git a/servers/physics_2d/collision_solver_2d_sw.h b/servers/physics_2d/collision_solver_2d_sw.h index 866443cd7f..e39c41fb75 100644 --- a/servers/physics_2d/collision_solver_2d_sw.h +++ b/servers/physics_2d/collision_solver_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef COLLISION_SOLVER_2D_SW_H #define COLLISION_SOLVER_2D_SW_H diff --git a/servers/physics_2d/constraint_2d_sw.h b/servers/physics_2d/constraint_2d_sw.h index 1ddf0386be..a08037bb37 100644 --- a/servers/physics_2d/constraint_2d_sw.h +++ b/servers/physics_2d/constraint_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef CONSTRAINT_2D_SW_H #define CONSTRAINT_2D_SW_H diff --git a/servers/physics_2d/joints_2d_sw.cpp b/servers/physics_2d/joints_2d_sw.cpp index 9865d375f0..7fba8acebd 100644 --- a/servers/physics_2d/joints_2d_sw.cpp +++ b/servers/physics_2d/joints_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "joints_2d_sw.h" #include "space_2d_sw.h" diff --git a/servers/physics_2d/joints_2d_sw.h b/servers/physics_2d/joints_2d_sw.h index af66f408a7..e2002eef0d 100644 --- a/servers/physics_2d/joints_2d_sw.h +++ b/servers/physics_2d/joints_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef JOINTS_2D_SW_H #define JOINTS_2D_SW_H diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp index 42b1cb8dda..7d7bbbebac 100644 --- a/servers/physics_2d/physics_2d_server_sw.cpp +++ b/servers/physics_2d/physics_2d_server_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_2d_server_sw.h" #include "broad_phase_2d_basic.h" #include "broad_phase_2d_hash_grid.h" diff --git a/servers/physics_2d/physics_2d_server_sw.h b/servers/physics_2d/physics_2d_server_sw.h index a4a4b2e582..97edb85582 100644 --- a/servers/physics_2d/physics_2d_server_sw.h +++ b/servers/physics_2d/physics_2d_server_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_2D_SERVER_SW #define PHYSICS_2D_SERVER_SW diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.cpp b/servers/physics_2d/physics_2d_server_wrap_mt.cpp index 97e35e6d21..804b93ecd8 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.cpp +++ b/servers/physics_2d/physics_2d_server_wrap_mt.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_2d_server_wrap_mt.h" #include "os/os.h" diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.h b/servers/physics_2d/physics_2d_server_wrap_mt.h index 3b63871058..276c37c577 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.h +++ b/servers/physics_2d/physics_2d_server_wrap_mt.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS2DSERVERWRAPMT_H #define PHYSICS2DSERVERWRAPMT_H diff --git a/servers/physics_2d/shape_2d_sw.cpp b/servers/physics_2d/shape_2d_sw.cpp index 7f9ca11846..4605516fe0 100644 --- a/servers/physics_2d/shape_2d_sw.cpp +++ b/servers/physics_2d/shape_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shape_2d_sw.h" #include "geometry.h" diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h index 82179e0124..c4c267b368 100644 --- a/servers/physics_2d/shape_2d_sw.h +++ b/servers/physics_2d/shape_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHAPE_2D_2DSW_H #define SHAPE_2D_2DSW_H diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index 687bb9e435..d3b81c627a 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "space_2d_sw.h" #include "collision_solver_2d_sw.h" diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h index 9e1babf5f3..a18bb2be2d 100644 --- a/servers/physics_2d/space_2d_sw.h +++ b/servers/physics_2d/space_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SPACE_2D_SW_H #define SPACE_2D_SW_H diff --git a/servers/physics_2d/step_2d_sw.cpp b/servers/physics_2d/step_2d_sw.cpp index 0ab57647b4..6108b885f0 100644 --- a/servers/physics_2d/step_2d_sw.cpp +++ b/servers/physics_2d/step_2d_sw.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "step_2d_sw.h" #include "os/os.h" diff --git a/servers/physics_2d/step_2d_sw.h b/servers/physics_2d/step_2d_sw.h index bac654fc00..4aa669d3a7 100644 --- a/servers/physics_2d/step_2d_sw.h +++ b/servers/physics_2d/step_2d_sw.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef STEP_2D_SW_H #define STEP_2D_SW_H diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp index 0762dc5a8d..180abc406c 100644 --- a/servers/physics_2d_server.cpp +++ b/servers/physics_2d_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_2d_server.h" #include "core/project_settings.h" #include "print_string.h" @@ -107,6 +108,17 @@ void Physics2DDirectBodyState::_bind_methods() { ClassDB::bind_method(D_METHOD("get_step"), &Physics2DDirectBodyState::get_step); ClassDB::bind_method(D_METHOD("integrate_forces"), &Physics2DDirectBodyState::integrate_forces); ClassDB::bind_method(D_METHOD("get_space_state"), &Physics2DDirectBodyState::get_space_state); + + ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "", "get_step"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "inverse_mass"), "", "get_inverse_mass"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "inverse_inertia"), "", "get_inverse_inertia"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_angular_damp"), "", "get_total_angular_damp"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_linear_damp"), "", "get_total_linear_damp"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "total_gravity"), "", "get_total_gravity"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_velocity"), "set_angular_velocity", "get_angular_velocity"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "linear_velocity"), "set_linear_velocity", "get_linear_velocity"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sleeping"), "set_sleep_state", "is_sleeping"); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform"); } Physics2DDirectBodyState::Physics2DDirectBodyState() {} @@ -203,6 +215,14 @@ void Physics2DShapeQueryParameters::_bind_methods() { ClassDB::bind_method(D_METHOD("set_exclude", "exclude"), &Physics2DShapeQueryParameters::set_exclude); ClassDB::bind_method(D_METHOD("get_exclude"), &Physics2DShapeQueryParameters::get_exclude); + + ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_layer", "get_collision_layer"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "exclude", PROPERTY_HINT_NONE, itos(Variant::_RID) + ":"), "set_exclude", "get_exclude"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion"), "set_motion", "get_motion"); + //ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", ""); // FIXME: Lacks a getter + ADD_PROPERTY(PropertyInfo(Variant::_RID, "shape_rid"), "set_shape_rid", "get_shape_rid"); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform"); } Physics2DShapeQueryParameters::Physics2DShapeQueryParameters() { @@ -435,6 +455,16 @@ void Physics2DTestMotionResult::_bind_methods() { ClassDB::bind_method(D_METHOD("get_collider_rid"), &Physics2DTestMotionResult::get_collider_rid); ClassDB::bind_method(D_METHOD("get_collider"), &Physics2DTestMotionResult::get_collider); ClassDB::bind_method(D_METHOD("get_collider_shape"), &Physics2DTestMotionResult::get_collider_shape); + + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion"), "", "get_motion"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion_remainder"), "", "get_motion_remainder"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "collision_point"), "", "get_collision_point"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "collision_normal"), "", "get_collision_normal"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "collider_velocity"), "", "get_collider_velocity"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "collider_id", PROPERTY_HINT_OBJECT_ID), "", "get_collider_id"); + ADD_PROPERTY(PropertyInfo(Variant::_RID, "collider_rid"), "", "get_collider_rid"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "collider"), "", "get_collider"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "collider_shape"), "", "get_collider_shape"); } Physics2DTestMotionResult::Physics2DTestMotionResult() { diff --git a/servers/physics_2d_server.h b/servers/physics_2d_server.h index 017866ffe1..be447ed137 100644 --- a/servers/physics_2d_server.h +++ b/servers/physics_2d_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_2D_SERVER_H #define PHYSICS_2D_SERVER_H diff --git a/servers/physics_server.cpp b/servers/physics_server.cpp index db315e4324..9d4807fcf0 100644 --- a/servers/physics_server.cpp +++ b/servers/physics_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "physics_server.h" #include "core/project_settings.h" #include "print_string.h" @@ -112,6 +113,19 @@ void PhysicsDirectBodyState::_bind_methods() { ClassDB::bind_method(D_METHOD("get_step"), &PhysicsDirectBodyState::get_step); ClassDB::bind_method(D_METHOD("integrate_forces"), &PhysicsDirectBodyState::integrate_forces); ClassDB::bind_method(D_METHOD("get_space_state"), &PhysicsDirectBodyState::get_space_state); + + ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "", "get_step"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "inverse_mass"), "", "get_inverse_mass"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_angular_damp"), "", "get_total_angular_damp"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_linear_damp"), "", "get_total_linear_damp"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "inverse_inertia"), "", "get_inverse_inertia"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "total_gravity"), "", "get_total_gravity"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "center_of_mass"), "", "get_center_of_mass"); + ADD_PROPERTY(PropertyInfo(Variant::BASIS, "principal_inertia_axes"), "", "get_principal_inertia_axes"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity"), "set_angular_velocity", "get_angular_velocity"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "linear_velocity"), "set_linear_velocity", "get_linear_velocity"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sleeping"), "set_sleep_state", "is_sleeping"); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform"); } PhysicsDirectBodyState::PhysicsDirectBodyState() {} @@ -197,6 +211,13 @@ void PhysicsShapeQueryParameters::_bind_methods() { ClassDB::bind_method(D_METHOD("set_exclude", "exclude"), &PhysicsShapeQueryParameters::set_exclude); ClassDB::bind_method(D_METHOD("get_exclude"), &PhysicsShapeQueryParameters::get_exclude); + + ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask"); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "exclude", PROPERTY_HINT_NONE, itos(Variant::_RID) + ":"), "set_exclude", "get_exclude"); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin"); + //ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", ""); // FIXME: Lacks a getter + ADD_PROPERTY(PropertyInfo(Variant::_RID, "shape_rid"), "set_shape_rid", "get_shape_rid"); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM, "transform"), "set_transform", "get_transform"); } PhysicsShapeQueryParameters::PhysicsShapeQueryParameters() { diff --git a/servers/physics_server.h b/servers/physics_server.h index 15e7c78be2..8b8b8f856d 100644 --- a/servers/physics_server.h +++ b/servers/physics_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef PHYSICS_SERVER_H #define PHYSICS_SERVER_H diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp index a318b76919..aaac32a4f2 100644 --- a/servers/register_server_types.cpp +++ b/servers/register_server_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "register_server_types.h" #include "engine.h" #include "project_settings.h" diff --git a/servers/register_server_types.h b/servers/register_server_types.h index 5fe97885d0..0af41ae424 100644 --- a/servers/register_server_types.h +++ b/servers/register_server_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef REGISTER_SERVER_TYPES_H #define REGISTER_SERVER_TYPES_H diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp index ea2b3cafb8..be46690e55 100644 --- a/servers/visual/rasterizer.cpp +++ b/servers/visual/rasterizer.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "rasterizer.h" #include "os/os.h" diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index ba7c6f6a02..f2bb853a3b 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef RASTERIZER_H #define RASTERIZER_H diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 1828cf8a4b..29c27eee85 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader_language.h" #include "os/os.h" #include "print_string.h" @@ -3209,8 +3210,6 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui var.precision = precision; var.line = tk_line; - p_block->variables[name] = var; - VariableDeclarationNode::Declaration decl; decl.name = name; @@ -3219,7 +3218,7 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui tk = _get_token(); if (tk.type == TK_OP_ASSIGN) { - //variable creted with assignment! must parse an expression + //variable created with assignment! must parse an expression Node *n = _parse_and_reduce_expression(p_block, p_builtin_types); if (!n) return ERR_PARSE_ERROR; @@ -3233,6 +3232,8 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui tk = _get_token(); } + p_block->variables[name] = var; + vardecl->declarations.push_back(decl); if (tk.type == TK_COMMA) { diff --git a/servers/visual/shader_language.h b/servers/visual/shader_language.h index dfadfaa30a..e8cdf1f897 100644 --- a/servers/visual/shader_language.h +++ b/servers/visual/shader_language.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADER_LANGUAGE_H #define SHADER_LANGUAGE_H diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp index 429282c10c..9042649337 100644 --- a/servers/visual/shader_types.cpp +++ b/servers/visual/shader_types.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "shader_types.h" const Map<StringName, ShaderLanguage::FunctionInfo> &ShaderTypes::get_functions(VS::ShaderMode p_mode) { diff --git a/servers/visual/shader_types.h b/servers/visual/shader_types.h index 9f0fb8b572..1f43ff9c92 100644 --- a/servers/visual/shader_types.h +++ b/servers/visual/shader_types.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef SHADERTYPES_H #define SHADERTYPES_H diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp index 60530e48e2..d82d93a59d 100644 --- a/servers/visual/visual_server_canvas.cpp +++ b/servers/visual/visual_server_canvas.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_canvas.h" #include "visual_server_global.h" #include "visual_server_viewport.h" @@ -102,9 +103,9 @@ void VisualServerCanvas::_render_canvas_item(Item *p_canvas_item, const Transfor } if (ci->z_relative) - p_z = CLAMP(p_z + ci->z, VS::CANVAS_ITEM_Z_MIN, VS::CANVAS_ITEM_Z_MAX); + p_z = CLAMP(p_z + ci->z_index, VS::CANVAS_ITEM_Z_MIN, VS::CANVAS_ITEM_Z_MAX); else - p_z = ci->z; + p_z = ci->z_index; for (int i = 0; i < child_item_count; i++) { @@ -805,14 +806,14 @@ void VisualServerCanvas::canvas_item_set_sort_children_by_y(RID p_item, bool p_e canvas_item->sort_y = p_enable; } -void VisualServerCanvas::canvas_item_set_z(RID p_item, int p_z) { +void VisualServerCanvas::canvas_item_set_z_index(RID p_item, int p_z) { ERR_FAIL_COND(p_z < VS::CANVAS_ITEM_Z_MIN || p_z > VS::CANVAS_ITEM_Z_MAX); Item *canvas_item = canvas_item_owner.getornull(p_item); ERR_FAIL_COND(!canvas_item); - canvas_item->z = p_z; + canvas_item->z_index = p_z; } void VisualServerCanvas::canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) { diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h index b86dd0316c..f4331ad291 100644 --- a/servers/visual/visual_server_canvas.h +++ b/servers/visual/visual_server_canvas.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSERVERCANVAS_H #define VISUALSERVERCANVAS_H @@ -39,7 +40,7 @@ public: RID parent; // canvas it belongs to List<Item *>::Element *E; - int z; + int z_index; bool z_relative; bool sort_y; Color modulate; @@ -53,7 +54,7 @@ public: Item() { children_order_dirty = true; E = NULL; - z = 0; + z_index = 0; modulate = Color(1, 1, 1, 1); self_modulate = Color(1, 1, 1, 1); sort_y = false; @@ -187,7 +188,7 @@ public: void canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform); void canvas_item_add_clip_ignore(RID p_item, bool p_ignore); void canvas_item_set_sort_children_by_y(RID p_item, bool p_enable); - void canvas_item_set_z(RID p_item, int p_z); + void canvas_item_set_z_index(RID p_item, int p_z); void canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable); void canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2 &p_rect); diff --git a/servers/visual/visual_server_global.cpp b/servers/visual/visual_server_global.cpp index a4b2b5bae9..61a8951f75 100644 --- a/servers/visual/visual_server_global.cpp +++ b/servers/visual/visual_server_global.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_global.h" RasterizerStorage *VisualServerGlobals::storage = NULL; diff --git a/servers/visual/visual_server_global.h b/servers/visual/visual_server_global.h index 7260cc6cd1..b4888dfd50 100644 --- a/servers/visual/visual_server_global.h +++ b/servers/visual/visual_server_global.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSERVERGLOBAL_H #define VISUALSERVERGLOBAL_H diff --git a/servers/visual/visual_server_light_baker.cpp b/servers/visual/visual_server_light_baker.cpp index 73353c8141..ed87e84a03 100644 --- a/servers/visual/visual_server_light_baker.cpp +++ b/servers/visual/visual_server_light_baker.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_light_baker.h" VisualServerLightBaker::VisualServerLightBaker() { diff --git a/servers/visual/visual_server_light_baker.h b/servers/visual/visual_server_light_baker.h index d22e50fc14..77472d0994 100644 --- a/servers/visual/visual_server_light_baker.h +++ b/servers/visual/visual_server_light_baker.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSERVERLIGHTBAKER_H #define VISUALSERVERLIGHTBAKER_H diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index ee5b26a8a4..64a3502e40 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_raster.h" #include "default_mouse_cursor.xpm" diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 95d7269d7a..106b84a6ff 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SERVER_RASTER_H #define VISUAL_SERVER_RASTER_H @@ -586,7 +587,7 @@ public: BIND2(canvas_item_add_set_transform, RID, const Transform2D &) BIND2(canvas_item_add_clip_ignore, RID, bool) BIND2(canvas_item_set_sort_children_by_y, RID, bool) - BIND2(canvas_item_set_z, RID, int) + BIND2(canvas_item_set_z_index, RID, int) BIND2(canvas_item_set_z_as_relative_to_parent, RID, bool) BIND3(canvas_item_set_copy_to_backbuffer, RID, bool, const Rect2 &) diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index 9866496083..0920fa748b 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_scene.h" #include "os/os.h" #include "visual_server_global.h" @@ -658,7 +659,6 @@ void VisualServerScene::instance_set_use_lightmap(RID p_instance, RID p_lightmap Instance *instance = instance_owner.get(p_instance); ERR_FAIL_COND(!instance); - ERR_FAIL_COND(!is_geometry_instance(instance->base_type)); if (instance->lightmap_capture) { InstanceLightmapCaptureData *lightmap_capture = static_cast<InstanceLightmapCaptureData *>(((Instance *)instance->lightmap_capture)->base_data); @@ -2091,7 +2091,7 @@ bool VisualServerScene::_render_reflection_probe_step(Instance *p_instance, int _render_scene(xform, cm, false, RID(), VSG::storage->reflection_probe_get_cull_mask(p_instance->base), p_instance->scenario->self, shadow_atlas, reflection_probe->instance, p_step); } else { - //do roughness postprocess step until it belives it's done + //do roughness postprocess step until it believes it's done return VSG::scene_render->reflection_probe_instance_postprocess_step(reflection_probe->instance); } @@ -3297,6 +3297,7 @@ bool VisualServerScene::free(RID p_rid) { Instance *instance = instance_owner.get(p_rid); + instance_set_use_lightmap(p_rid, RID(), RID()); instance_set_scenario(p_rid, RID()); instance_set_base(p_rid, RID()); instance_geometry_set_material_override(p_rid, RID()); diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h index fc57225f88..206503e643 100644 --- a/servers/visual/visual_server_scene.h +++ b/servers/visual/visual_server_scene.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSERVERSCENE_H #define VISUALSERVERSCENE_H diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp index c1ee9e7847..3eb8953c1f 100644 --- a/servers/visual/visual_server_viewport.cpp +++ b/servers/visual/visual_server_viewport.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_viewport.h" #include "project_settings.h" @@ -504,7 +505,7 @@ void VisualServerViewport::viewport_set_transparent_background(RID p_viewport, b ERR_FAIL_COND(!viewport); VSG::storage->render_target_set_flag(viewport->render_target, RasterizerStorage::RENDER_TARGET_TRANSPARENT, p_enabled); - viewport->transparent_bg = true; + viewport->transparent_bg = p_enabled; } void VisualServerViewport::viewport_set_global_canvas_transform(RID p_viewport, const Transform2D &p_transform) { diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h index 24904d37e9..1d28cf22a3 100644 --- a/servers/visual/visual_server_viewport.h +++ b/servers/visual/visual_server_viewport.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUALSERVERVIEWPORT_H #define VISUALSERVERVIEWPORT_H diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp index a8422b805e..094e2794ed 100644 --- a/servers/visual/visual_server_wrap_mt.cpp +++ b/servers/visual/visual_server_wrap_mt.cpp @@ -6,6 +6,7 @@ /* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -26,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server_wrap_mt.h" #include "os/os.h" #include "project_settings.h" diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 4062f91438..c86a8164ce 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -6,6 +6,7 @@ /* https://godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -26,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SERVER_WRAP_MT_H #define VISUAL_SERVER_WRAP_MT_H @@ -392,7 +394,7 @@ public: FUNC2(viewport_set_hdr, RID, bool) FUNC2(viewport_set_usage, RID, ViewportUsage) - //this passes directly to avoid stalling, but it's pretty dangerous, so dont call after freeing a viewport + //this passes directly to avoid stalling, but it's pretty dangerous, so don't call after freeing a viewport virtual int viewport_get_render_info(RID p_viewport, ViewportRenderInfo p_info) { return visual_server->viewport_get_render_info(p_viewport, p_info); } @@ -503,7 +505,7 @@ public: FUNC2(canvas_item_add_set_transform, RID, const Transform2D &) FUNC2(canvas_item_add_clip_ignore, RID, bool) FUNC2(canvas_item_set_sort_children_by_y, RID, bool) - FUNC2(canvas_item_set_z, RID, int) + FUNC2(canvas_item_set_z_index, RID, int) FUNC2(canvas_item_set_z_as_relative_to_parent, RID, bool) FUNC3(canvas_item_set_copy_to_backbuffer, RID, bool, const Rect2 &) diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index b4949b6093..663fce85e9 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #include "visual_server.h" #include "method_bind_ext.gen.inc" @@ -440,9 +441,9 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_ for (int i = 0; i < p_vertex_array_len; i++) { int8_t vector[4] = { - CLAMP(src[i].x * 127, -128, 127), - CLAMP(src[i].y * 127, -128, 127), - CLAMP(src[i].z * 127, -128, 127), + (int8_t)CLAMP(src[i].x * 127, -128, 127), + (int8_t)CLAMP(src[i].y * 127, -128, 127), + (int8_t)CLAMP(src[i].z * 127, -128, 127), 0, }; @@ -475,10 +476,10 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_ for (int i = 0; i < p_vertex_array_len; i++) { uint8_t xyzw[4] = { - CLAMP(src[i * 4 + 0] * 127, -128, 127), - CLAMP(src[i * 4 + 1] * 127, -128, 127), - CLAMP(src[i * 4 + 2] * 127, -128, 127), - CLAMP(src[i * 4 + 3] * 127, -128, 127) + (uint8_t)CLAMP(src[i * 4 + 0] * 127, -128, 127), + (uint8_t)CLAMP(src[i * 4 + 1] * 127, -128, 127), + (uint8_t)CLAMP(src[i * 4 + 2] * 127, -128, 127), + (uint8_t)CLAMP(src[i * 4 + 3] * 127, -128, 127) }; copymem(&vw[p_offsets[ai] + i * p_stride], xyzw, 4); @@ -677,7 +678,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_ ERR_FAIL_COND_V(indices.size() == 0, ERR_INVALID_PARAMETER); ERR_FAIL_COND_V(indices.size() != p_index_array_len, ERR_INVALID_PARAMETER); - /* determine wether using 16 or 32 bits indices */ + /* determine whether using 16 or 32 bits indices */ PoolVector<int>::Read read = indices.read(); const int *src = read.ptr(); @@ -711,7 +712,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_ if (first) { for (int i = 0; i < total_bones; i++) { - r_bone_aabb[i].size == Vector3(-1, -1, -1); //negative means unused + r_bone_aabb[i].size = Vector3(-1, -1, -1); //negative means unused } } @@ -942,7 +943,7 @@ void VisualServer::mesh_add_surface_from_arrays(RID p_mesh, PrimitiveType p_prim ERR_PRINT("index_array_len==NO_INDEX_ARRAY"); break; } - /* determine wether using 16 or 32 bits indices */ + /* determine whether using 16 or 32 bits indices */ if (array_len >= (1 << 16)) { elem_size = 4; @@ -1110,7 +1111,7 @@ Array VisualServer::_get_array_from_surface(uint32_t p_format, PoolVector<uint8_ ERR_PRINT("index_array_len==NO_INDEX_ARRAY"); break; } - /* determine wether using 16 or 32 bits indices */ + /* determine whether using 16 or 32 bits indices */ if (p_vertex_len >= (1 << 16)) { elem_size = 4; @@ -1396,7 +1397,7 @@ Array VisualServer::_get_array_from_surface(uint32_t p_format, PoolVector<uint8_ } break; case VS::ARRAY_INDEX: { - /* determine wether using 16 or 32 bits indices */ + /* determine whether using 16 or 32 bits indices */ PoolVector<uint8_t>::Read ir = p_index_data.read(); @@ -1611,7 +1612,7 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("canvas_item_add_set_transform", "item", "transform"), &VisualServer::canvas_item_add_set_transform); ClassDB::bind_method(D_METHOD("canvas_item_add_clip_ignore", "item", "ignore"), &VisualServer::canvas_item_add_clip_ignore); ClassDB::bind_method(D_METHOD("canvas_item_set_sort_children_by_y", "item", "enabled"), &VisualServer::canvas_item_set_sort_children_by_y); - ClassDB::bind_method(D_METHOD("canvas_item_set_z", "item", "z"), &VisualServer::canvas_item_set_z); + ClassDB::bind_method(D_METHOD("canvas_item_set_z_index", "item", "z_index"), &VisualServer::canvas_item_set_z_index); ClassDB::bind_method(D_METHOD("canvas_item_set_z_as_relative_to_parent", "item", "enabled"), &VisualServer::canvas_item_set_z_as_relative_to_parent); ClassDB::bind_method(D_METHOD("canvas_item_set_copy_to_backbuffer", "item", "enabled", "rect"), &VisualServer::canvas_item_set_copy_to_backbuffer); ClassDB::bind_method(D_METHOD("canvas_item_clear", "item"), &VisualServer::canvas_item_clear); @@ -1655,7 +1656,7 @@ void VisualServer::_bind_methods() { ClassDB::bind_method(D_METHOD("black_bars_set_margins", "left", "top", "right", "bottom"), &VisualServer::black_bars_set_margins); ClassDB::bind_method(D_METHOD("black_bars_set_images", "left", "top", "right", "bottom"), &VisualServer::black_bars_set_images); - ClassDB::bind_method(D_METHOD("free", "rid"), &VisualServer::free); + ClassDB::bind_method(D_METHOD("free_rid", "rid"), &VisualServer::free); // shouldn't conflict with Object::free() ClassDB::bind_method(D_METHOD("request_frame_drawn_callback", "where", "method", "userdata"), &VisualServer::request_frame_drawn_callback); ClassDB::bind_method(D_METHOD("draw", "swap_buffers"), &VisualServer::draw, DEFVAL(true)); diff --git a/servers/visual_server.h b/servers/visual_server.h index e1def0b713..16ba135c30 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -27,6 +27,7 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ + #ifndef VISUAL_SERVER_H #define VISUAL_SERVER_H @@ -847,7 +848,7 @@ public: virtual void canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform) = 0; virtual void canvas_item_add_clip_ignore(RID p_item, bool p_ignore) = 0; virtual void canvas_item_set_sort_children_by_y(RID p_item, bool p_enable) = 0; - virtual void canvas_item_set_z(RID p_item, int p_z) = 0; + virtual void canvas_item_set_z_index(RID p_item, int p_z) = 0; virtual void canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) = 0; virtual void canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2 &p_rect) = 0; diff --git a/thirdparty/README.md b/thirdparty/README.md index 62690e21c7..92f24446d4 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -3,16 +3,32 @@ ## b2d_convexdecomp -- Upstream: https://github.com/erincatto/Box2D (Contributions/Utilities/ConvexDecomposition) -- Version: TBD +- 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. -## certs -- Upstream: ? +## bullet -TODO. +- Upstream: https://github.com/bulletphysics/bullet3 +- Version: git (d05ad4b, 2017) +- License: zlib + +Files extracted from upstream source: + +- src/* apart from CMakeLists.txt and premake4.lua files +- LICENSE.txt + + +## certs + +- Upstream: Mozilla, via https://packages.ubuntu.com/xenial-updates/ca-certificates +- Version: 2016-ish +- License: MPL 2.0 ## enet @@ -40,8 +56,8 @@ tarball before the next update. ## etc2comp - Upstream: https://github.com/google/etc2comp -- Version: 9cd0f9c (git) -- License: Apache +- Version: git (9cd0f9c, 2017) +- License: Apache 2.0 Files extracted from upstream source: @@ -57,7 +73,7 @@ Files extracted from upstream source: - Version: 1.06 - License: OFL-1.1 -Use UI font if exists, because it has tight vertical metrics and good for UI. +Use UI font variant if available, because it has tight vertical metrics and good for UI. ### Hack Regular @@ -67,7 +83,9 @@ Use UI font if exists, because it has tight vertical metrics and good for UI. ### DroidSans*.ttf -- Upstream: ? +- Upstream: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/ +- Version: ? (pre-2014 commit when DroidSansJapanese.ttf was obsoleted) +- License: Apache 2.0 ## freetype @@ -108,7 +126,7 @@ Files extracted from upstream source: ## libogg - Upstream: https://www.xiph.org/ogg -- Version: 1.3.2 +- Version: 1.3.3 - License: BSD-3-Clause Files extracted from upstream source: @@ -135,7 +153,7 @@ Files extracted from upstream source: ## libsimplewebm - Upstream: https://github.com/zaps166/libsimplewebm -- Version: 05cfdc2 (git) +- Version: git (05cfdc2, 2016) - License: MIT, BSD-3-Clause Files extracted from upstream source: @@ -171,7 +189,7 @@ Files extracted from upstream source: ## libvpx -- Upstream: http://www.webmproject.org/code/ +- Upstream: https://chromium.googlesource.com/webm/libvpx/ - Version: 1.6.0 - License: BSD-3-Clause @@ -229,8 +247,8 @@ Collection of single-file libraries used in Godot components. * Version: latest, as of April 2017 * License: Public Domain - `fastlz.{c,h}` - * Upstream: https://code.google.com/archive/p/fastlz - * Version: svn (r12) + * Upstream: https://github.com/ariya/FastLZ + * Version: git (f121734, 2007) * License: MIT - `hq2x.{cpp,h}` * Upstream: https://github.com/brunexgeek/hqx @@ -251,7 +269,7 @@ Collection of single-file libraries used in Godot components. - `smaz.{c,h}` * Upstream: https://github.com/antirez/smaz * Version: git (150e125, 2009) - * License: BSD 3-clause + * License: BSD-3-Clause * Modifications: use `const char*` instead of `char*` for input string - `triangulator.{cpp,h}` * Upstream: https://github.com/ivanfratric/polypartition (`src/polypartition.cpp`) @@ -269,19 +287,6 @@ Collection of single-file libraries used in Godot components. * Version: ? * License: BSD -### poshlib - -- Upstream: http://poshlib.hookatooka.com/poshlib/trac.cgi (username guest, password guest123) -- Version: 1.3.002 -- License: MIT - -Files extracted from the upstream source: - -- posh.c -- posh.h - -(no license file was included with the upstream distribution) - ### scene - `mikktspace.{c,h}` @@ -297,20 +302,6 @@ Files extracted from the upstream source: * Version: 1.11 * License: Public Domain (Unlicense) or MIT -## thekla_atlas - -- Upstream: https://github.com/Thekla/thekla_atlas -- Version: 80a1430 (git) -- License: zlib - -Files extracted from the upstream source: - -- Relevant sources from src/ -- License.txt - -Important: Some files have Godot-made changes, those -changes are marked with `// -- GODOT --` comments. - ## nanosvg @@ -327,7 +318,7 @@ Files extracted from the upstream source: ## openssl - Upstream: https://www.openssl.org -- Version: 1.0.2l +- Version: 1.0.2n - License: OpenSSL license / BSD-like Files extracted from the upstream source: @@ -344,11 +335,14 @@ Files extracted from the upstream source: -o -name "*.gcc" -o -name "*.in" -o -name "*.lnx" -o -name "*.m4" \ -o -name "*.pl" -o -name "*.pod" -o -name "*.s" -o -name "*.sh" \ -o -name "*.sol" -o -name "*test*" \) -delete - cd openssl; for file in *.h; do find ../{crypto,ssl} -name "$file" -delete; done + cd openssl; for file in *.h; do find ../{crypto,ssl} -name "$file" -delete; done; cd .. ``` For the rest check the `git status` and decide. - e_os.h -- Apply the Godot-specific patches in the `patches/` folder. +- MacOS/buildinf.h +- LICENSE +- Apply the Godot-specific patches in the `patches/` folder + (make sure not to commit .orig/.rej files generated by `patch`). ## opus @@ -383,7 +377,7 @@ Files extracted from upstream source: ## pvrtccompressor - Upstream: https://bitbucket.org/jthlim/pvrtccompressor -- Version: hg commit cf71777 - 2015-01-08 +- Version: hg (cf71777, 2015) - License: BSD-3-Clause Files extracted from upstream source: @@ -395,9 +389,14 @@ Files extracted from upstream source: ## recastnavigation - Upstream: https://github.com/recastnavigation/recastnavigation -- version: git commit ef3ea40f - 2016-02-06 +- version: git (ef3ea40f, 2017) - License: zlib +Files extracted from upstream source: + +- `Recast/` folder +- License.txt + ## rtaudio @@ -425,10 +424,25 @@ They are marked with `// -- GODOT start --` and `// -- GODOT end --` comments and a patch is provided in the squish/ folder. +## thekla_atlas + +- Upstream: https://github.com/Thekla/thekla_atlas +- Version: git (80a1430, 2017) +- License: MIT + +Files extracted from the upstream source: + +- Relevant sources from src/ +- License.txt + +Important: Some files have Godot-made changes, those +changes are marked with `// -- GODOT --` comments. + + ## tinyexr - Upstream: https://github.com/syoyo/tinyexr -- Version: 0.9.5+ (git 9f784ca - 24 October 2017) +- Version: git (e385dad, 2018) - License: BSD-3-Clause Files extracted from upstream source: @@ -438,7 +452,7 @@ Files extracted from upstream source: ## zlib -- Upstream: http://www.zlib.net/ +- Upstream: http://www.zlib.net - Version: 1.2.11 - License: zlib @@ -450,10 +464,10 @@ Files extracted from upstream source: ## zstd - Upstream: https://github.com/facebook/zstd -- Version: 1.3.2 +- Version: 1.3.3 - License: BSD-3-Clause Files extracted from upstream source: - lib/{common/,compress/,decompress/,zstd.h} -- README.md, LICENSE +- LICENSE diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h index 1bc56cf80a..1bc56cf80a 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp index 0f04efe331..0f04efe331 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h index c004b9130f..c004b9130f 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp index bc150955b8..bc150955b8 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h index 7ac085d90c..7ac085d90c 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h index 39bf27de3e..39bf27de3e 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp index e4bda61624..e4bda61624 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h index f67eb676f1..f67eb676f1 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h index 7f9bf990bf..7f9bf990bf 100644 --- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h +++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Config.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Config.h index 65d4a21613..65d4a21613 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Config.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Config.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h index fb25165673..fb25165673 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp index 55706fa631..55706fa631 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h index 86c4151f8c..86c4151f8c 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp index c3134b2c65..c3134b2c65 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h index 528be3346d..528be3346d 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h index fba8bd07a4..fba8bd07a4 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h index d58f71802f..d58f71802f 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h index 8788ccbb47..8788ccbb47 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h index 2618da24bc..2618da24bc 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h index 8009e7d6e0..8009e7d6e0 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h index 77cdc7b7a9..77cdc7b7a9 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h index dfd45cc566..dfd45cc566 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h index f295f01a6c..f295f01a6c 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h index a3fa82287b..a3fa82287b 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h index 5c5f4e297f..5c5f4e297f 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h index 89993f3565..89993f3565 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h index 332dbc278c..332dbc278c 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h index 6c3ad7c9dd..6c3ad7c9dd 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h index 718222ebca..718222ebca 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h index 3661e43cf1..3661e43cf1 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h index 35b5197006..35b5197006 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h index 50632c871f..50632c871f 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h index 8d40d19a03..8d40d19a03 100644 --- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h +++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.cpp b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.cpp index b98e2b4d33..b98e2b4d33 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.cpp +++ b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.cpp diff --git a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.h b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.h index be418bd55f..be418bd55f 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.h +++ b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3AlignedObjectArray.h b/thirdparty/bullet/Bullet3Common/b3AlignedObjectArray.h index 947362d08e..947362d08e 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3AlignedObjectArray.h +++ b/thirdparty/bullet/Bullet3Common/b3AlignedObjectArray.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3CommandLineArgs.h b/thirdparty/bullet/Bullet3Common/b3CommandLineArgs.h index 38df8e2600..38df8e2600 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3CommandLineArgs.h +++ b/thirdparty/bullet/Bullet3Common/b3CommandLineArgs.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3FileUtils.h b/thirdparty/bullet/Bullet3Common/b3FileUtils.h index 1a331029ea..1a331029ea 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3FileUtils.h +++ b/thirdparty/bullet/Bullet3Common/b3FileUtils.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3HashMap.h b/thirdparty/bullet/Bullet3Common/b3HashMap.h index 24a59d9baa..24a59d9baa 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3HashMap.h +++ b/thirdparty/bullet/Bullet3Common/b3HashMap.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Logging.cpp b/thirdparty/bullet/Bullet3Common/b3Logging.cpp index a8e9507155..a8e9507155 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Logging.cpp +++ b/thirdparty/bullet/Bullet3Common/b3Logging.cpp diff --git a/thirdparty/bullet/src/Bullet3Common/b3Logging.h b/thirdparty/bullet/Bullet3Common/b3Logging.h index b302effe43..b302effe43 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Logging.h +++ b/thirdparty/bullet/Bullet3Common/b3Logging.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Matrix3x3.h b/thirdparty/bullet/Bullet3Common/b3Matrix3x3.h index 89b57cf59a..89b57cf59a 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Matrix3x3.h +++ b/thirdparty/bullet/Bullet3Common/b3Matrix3x3.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3MinMax.h b/thirdparty/bullet/Bullet3Common/b3MinMax.h index 73af23a4f9..73af23a4f9 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3MinMax.h +++ b/thirdparty/bullet/Bullet3Common/b3MinMax.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3PoolAllocator.h b/thirdparty/bullet/Bullet3Common/b3PoolAllocator.h index 2fcdcf5b24..2fcdcf5b24 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3PoolAllocator.h +++ b/thirdparty/bullet/Bullet3Common/b3PoolAllocator.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3QuadWord.h b/thirdparty/bullet/Bullet3Common/b3QuadWord.h index 65c9581977..65c9581977 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3QuadWord.h +++ b/thirdparty/bullet/Bullet3Common/b3QuadWord.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Quaternion.h b/thirdparty/bullet/Bullet3Common/b3Quaternion.h index ad20543348..ad20543348 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Quaternion.h +++ b/thirdparty/bullet/Bullet3Common/b3Quaternion.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Random.h b/thirdparty/bullet/Bullet3Common/b3Random.h index dc040f1562..dc040f1562 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Random.h +++ b/thirdparty/bullet/Bullet3Common/b3Random.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3ResizablePool.h b/thirdparty/bullet/Bullet3Common/b3ResizablePool.h index 06ad8a778d..06ad8a778d 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3ResizablePool.h +++ b/thirdparty/bullet/Bullet3Common/b3ResizablePool.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Scalar.h b/thirdparty/bullet/Bullet3Common/b3Scalar.h index dbc7fea397..dbc7fea397 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Scalar.h +++ b/thirdparty/bullet/Bullet3Common/b3Scalar.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3StackAlloc.h b/thirdparty/bullet/Bullet3Common/b3StackAlloc.h index de7de056b5..de7de056b5 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3StackAlloc.h +++ b/thirdparty/bullet/Bullet3Common/b3StackAlloc.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Transform.h b/thirdparty/bullet/Bullet3Common/b3Transform.h index fa480759be..fa480759be 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Transform.h +++ b/thirdparty/bullet/Bullet3Common/b3Transform.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3TransformUtil.h b/thirdparty/bullet/Bullet3Common/b3TransformUtil.h index 6ce580c132..6ce580c132 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3TransformUtil.h +++ b/thirdparty/bullet/Bullet3Common/b3TransformUtil.h diff --git a/thirdparty/bullet/src/Bullet3Common/b3Vector3.cpp b/thirdparty/bullet/Bullet3Common/b3Vector3.cpp index 5f5ac4ac04..5f5ac4ac04 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Vector3.cpp +++ b/thirdparty/bullet/Bullet3Common/b3Vector3.cpp diff --git a/thirdparty/bullet/src/Bullet3Common/b3Vector3.h b/thirdparty/bullet/Bullet3Common/b3Vector3.h index 16ec02b0ed..16ec02b0ed 100644 --- a/thirdparty/bullet/src/Bullet3Common/b3Vector3.h +++ b/thirdparty/bullet/Bullet3Common/b3Vector3.h diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Float4.h b/thirdparty/bullet/Bullet3Common/shared/b3Float4.h index 5e4b95bcee..5e4b95bcee 100644 --- a/thirdparty/bullet/src/Bullet3Common/shared/b3Float4.h +++ b/thirdparty/bullet/Bullet3Common/shared/b3Float4.h diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Int2.h b/thirdparty/bullet/Bullet3Common/shared/b3Int2.h index f1d01f81a5..f1d01f81a5 100644 --- a/thirdparty/bullet/src/Bullet3Common/shared/b3Int2.h +++ b/thirdparty/bullet/Bullet3Common/shared/b3Int2.h diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Int4.h b/thirdparty/bullet/Bullet3Common/shared/b3Int4.h index aa02d6beef..aa02d6beef 100644 --- a/thirdparty/bullet/src/Bullet3Common/shared/b3Int4.h +++ b/thirdparty/bullet/Bullet3Common/shared/b3Int4.h diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Mat3x3.h b/thirdparty/bullet/Bullet3Common/shared/b3Mat3x3.h index 7b1fef32f8..7b1fef32f8 100644 --- a/thirdparty/bullet/src/Bullet3Common/shared/b3Mat3x3.h +++ b/thirdparty/bullet/Bullet3Common/shared/b3Mat3x3.h diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3PlatformDefinitions.h b/thirdparty/bullet/Bullet3Common/shared/b3PlatformDefinitions.h index 1c133fb088..1c133fb088 100644 --- a/thirdparty/bullet/src/Bullet3Common/shared/b3PlatformDefinitions.h +++ b/thirdparty/bullet/Bullet3Common/shared/b3PlatformDefinitions.h diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Quat.h b/thirdparty/bullet/Bullet3Common/shared/b3Quat.h index f262d5e08f..f262d5e08f 100644 --- a/thirdparty/bullet/src/Bullet3Common/shared/b3Quat.h +++ b/thirdparty/bullet/Bullet3Common/shared/b3Quat.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h index 7a12257b33..7a12257b33 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp index 5e11e74935..5e11e74935 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h index e884a82912..e884a82912 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp index 168a773d56..168a773d56 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h index 084d36055c..084d36055c 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h index a55168eb38..a55168eb38 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp index de729d4556..de729d4556 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h index d2ca307fab..d2ca307fab 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp index 02c11db320..02c11db320 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h index 681b487334..681b487334 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h index 0049317d98..0049317d98 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h index bce83d4608..bce83d4608 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp index 699c481d64..699c481d64 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h index cf9cec0d5e..cf9cec0d5e 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h +++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp index fbc84cc28d..fbc84cc28d 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp +++ b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp diff --git a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.h index 2f3c2ae77e..2f3c2ae77e 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h +++ b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ContactConstraint4.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3ContactConstraint4.h index 68cf65e312..68cf65e312 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ContactConstraint4.h +++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3ContactConstraint4.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ConvertConstraint4.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3ConvertConstraint4.h index 805a2bd3ea..805a2bd3ea 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ConvertConstraint4.h +++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3ConvertConstraint4.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3Inertia.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3Inertia.h index 96fe9f8b39..96fe9f8b39 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3Inertia.h +++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3Inertia.h diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3IntegrateTransforms.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3IntegrateTransforms.h index e96f90d3f3..e96f90d3f3 100644 --- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3IntegrateTransforms.h +++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3IntegrateTransforms.h diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3AabbUtil.h b/thirdparty/bullet/Bullet3Geometry/b3AabbUtil.h index 4c72d5bbfc..4c72d5bbfc 100644 --- a/thirdparty/bullet/src/Bullet3Geometry/b3AabbUtil.h +++ b/thirdparty/bullet/Bullet3Geometry/b3AabbUtil.h diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.cpp b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.cpp index 18835c38d5..18835c38d5 100644 --- a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.cpp +++ b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.cpp diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.h b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.h index 6dcc931a78..6dcc931a78 100644 --- a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.h +++ b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.h diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.cpp b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.cpp index dd80fed6bd..dd80fed6bd 100644 --- a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.cpp +++ b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.cpp diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.h b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.h index 8b5fd7ad62..8b5fd7ad62 100644 --- a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.h +++ b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.h diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h b/thirdparty/bullet/Bullet3Geometry/b3GrahamScan2dConvexHull.h index 1b933c5264..1b933c5264 100644 --- a/thirdparty/bullet/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h +++ b/thirdparty/bullet/Bullet3Geometry/b3GrahamScan2dConvexHull.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h index 0ed8aa8232..0ed8aa8232 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp index 74d0c8056c..74d0c8056c 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h index ec18c9f716..ec18c9f716 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp index 641df9eb12..641df9eb12 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h index effe617b7b..effe617b7b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp index d2618024ac..d2618024ac 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h index e518500637..e518500637 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp index c45fbbdcaa..c45fbbdcaa 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h index 8d36ac78f2..8d36ac78f2 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h index ea6550fede..ea6550fede 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl index ded4796d33..ded4796d33 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h index dad42477c3..dad42477c3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl index c375b9bf37..c375b9bf37 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h index 5eb8f45b16..5eb8f45b16 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl index 93f77a6433..93f77a6433 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h index 04d40fcf26..04d40fcf26 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLInclude.h index e79182d7cb..e79182d7cb 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h +++ b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLInclude.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp index dd194fc7ba..dd194fc7ba 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.h index db6466e76b..db6466e76b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h +++ b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h index 872f039506..872f039506 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp index cb30ee939b..cb30ee939b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h index d6c9b0a07e..d6c9b0a07e 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp index fb435aa7fd..fb435aa7fd 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h index e24c1579c6..e24c1579c6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h index 337100fb1a..337100fb1a 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp index d636f983c6..d636f983c6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h index 976238a04c..976238a04c 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp index e9e51d5a36..e9e51d5a36 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h index 0272ef83bf..0272ef83bf 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp index 52027e1118..52027e1118 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h index 63c523c758..63c523c758 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp index 4d97f7f62b..4d97f7f62b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h index 9513f68f77..9513f68f77 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h index d073ee57c3..d073ee57c3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp index 9066451884..9066451884 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h index 3059fa4f21..3059fa4f21 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp index a0f59babbe..a0f59babbe 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h index d26b2893bc..d26b2893bc 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h index f6f65f7719..f6f65f7719 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp index cf3d5ef49d..cf3d5ef49d 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h index a6e27667d8..a6e27667d8 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl index faa413441c..faa413441c 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h index 4b3b49eae8..4b3b49eae8 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl index e754f4e1da..e754f4e1da 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h index 7ed4b382c3..7ed4b382c3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl index 9c9e920f13..9c9e920f13 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h index b0103fe674..b0103fe674 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl index a6565fd6fa..a6565fd6fa 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl index f433971741..f433971741 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h index f0ecfc7851..f0ecfc7851 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl index 31ca43b8cd..31ca43b8cd 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h index 611569cacf..611569cacf 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h index 6f8b0a90db..6f8b0a90db 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp index a4980f71e1..a4980f71e1 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h index 7e2940965c..7e2940965c 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h index 52f219ae3f..52f219ae3f 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp index f05c2648f1..f05c2648f1 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h index 1609676b9d..1609676b9d 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp index 94590d11ca..94590d11ca 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h index 1b267b31ef..1b267b31ef 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h index d70c30f53f..d70c30f53f 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp index 42cd197740..42cd197740 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h index a9a2e61b9e..a9a2e61b9e 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp index 80560d793d..80560d793d 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h index 2c8003c1bb..2c8003c1bb 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp index f11ae4bcdb..f11ae4bcdb 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h index 975bd80e53..975bd80e53 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl index f3b4a1e8a7..f3b4a1e8a7 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h index 9c9e847138..9c9e847138 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl index 2eee5752ec..2eee5752ec 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h index e5670e3cd3..e5670e3cd3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl index 71c31075dd..71c31075dd 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h index 4f8b96e489..4f8b96e489 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl index c9da79854a..c9da79854a 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl index 963cc1e48e..963cc1e48e 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h index 27baab8331..27baab8331 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h index 5b13254796..5b13254796 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl index 7402e2f3b3..7402e2f3b3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h index 8876c16aa6..8876c16aa6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h +++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp index 161e304f09..161e304f09 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.h index 3a5cf44b79..3a5cf44b79 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h +++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl index e72d96876b..e72d96876b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h index 6257909a4d..6257909a4d 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h index c7478f54a1..c7478f54a1 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp index af687b54e9..af687b54e9 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h index 14b3ba7fec..14b3ba7fec 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp index 179dfc4f26..179dfc4f26 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h index b418f29ec4..b418f29ec4 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp index 698fa15f96..698fa15f96 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h index 05ff3fd09e..05ff3fd09e 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h index 8a7f1ea859..8a7f1ea859 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp index 0d3d50c548..0d3d50c548 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h index ec0e3f73d6..ec0e3f73d6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp index f0b0abd5e0..f0b0abd5e0 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h index 98e2a5b8c4..98e2a5b8c4 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp index 783e443060..783e443060 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h index b4eac6841a..b4eac6841a 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h index 5ac92f97d6..5ac92f97d6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h index f2a61801ac..f2a61801ac 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h index 60d235baab..60d235baab 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.cpp index 20bf6d47c5..20bf6d47c5 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.cpp +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.cpp diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.h index b37f2f1bec..b37f2f1bec 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl index 3b891b863d..3b891b863d 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h index 150eedc94b..150eedc94b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl index ba1b66d2c3..ba1b66d2c3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h index 1e5957adae..1e5957adae 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl index e22bc9bc33..e22bc9bc33 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h index a5a432947c..a5a432947c 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl index 7f5dabe274..7f5dabe274 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.h index d48ecf6ea6..d48ecf6ea6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.cl index 5c4d62e4ec..5c4d62e4ec 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.h index 15a049992b..15a049992b 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl index 1d70fbbae3..1d70fbbae3 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.h index eb58674f22..eb58674f22 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl index 8e2de7b5a6..8e2de7b5a6 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.h index eb1834ee00..eb1834ee00 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl index 3dc48d4350..3dc48d4350 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h index 1b5819f6cf..1b5819f6cf 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl index a21a08c3b4..a21a08c3b4 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.h index c0173ad9f4..c0173ad9f4 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.h diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl index ba8ba735d0..ba8ba735d0 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h index d70e74017a..d70e74017a 100644 --- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h +++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h index a6b57b1a12..a6b57b1a12 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp index c3ceb8388c..c3ceb8388c 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h index fb1b9b0dde..fb1b9b0dde 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp index c0e1bb708c..c0e1bb708c 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h index 03ecb6b4fa..03ecb6b4fa 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Common.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h index 2792d84033..2792d84033 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Common.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp index 0fe5056922..0fe5056922 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h index 6e60087cce..6e60087cce 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Defines.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h index 8f28d3c441..8f28d3c441 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Defines.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp index 432f7fc2b4..432f7fc2b4 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.cpp +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h index 861056806d..861056806d 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp index c6a2a832ad..c6a2a832ad 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h index 1c1ce43764..1c1ce43764 100644 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h +++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp index 77763305b1..77763305b1 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h index a3648df1af..a3648df1af 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h index 2c4d41bc04..2c4d41bc04 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h index fb68e0024e..fb68e0024e 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp index 0fd4ef46be..0fd4ef46be 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h index adaf083a21..adaf083a21 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp index c95d1be0f2..c95d1be0f2 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h index 405656236b..405656236b 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp index d791d07418..d791d07418 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.h index b5a0014580..b5a0014580 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp index 4d12b1c9c7..4d12b1c9c7 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h index 8feb95d51f..8feb95d51f 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp index 20768225b3..20768225b3 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h index 7b0f9489af..7b0f9489af 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp index 55ebf06f1e..55ebf06f1e 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h index f7be7d45b3..f7be7d45b3 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h index 3e069fa5e2..3e069fa5e2 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp index 875d89c53e..875d89c53e 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h index 3dd5ac9bb6..3dd5ac9bb6 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp index f1d5f5476e..f1d5f5476e 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h index d7a18e400a..d7a18e400a 100644 --- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp index c81af95672..c81af95672 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h index 22953af43f..22953af43f 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp index 57f1464935..57f1464935 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h index 0e19f1ea35..0e19f1ea35 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp index 2c36277821..2c36277821 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h index 6ea6e89bda..6ea6e89bda 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp index ac68968f59..ac68968f59 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h index 59808df5a9..59808df5a9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp index 7043bde34f..7043bde34f 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h index 3924377705..3924377705 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h index 35f77d4e65..35f77d4e65 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h index 62ee66c4e9..62ee66c4e9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp index 5739a1ef01..5739a1ef01 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h index b97ee3c1ba..b97ee3c1ba 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp index 075860c503..075860c503 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h index f1d7eafdc9..f1d7eafdc9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp index b595c56bc5..b595c56bc5 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h index fec831bffc..fec831bffc 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h index 952440b7de..952440b7de 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp index c3e912fdca..c3e912fdca 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h index eede2b28ca..eede2b28ca 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp index f2b0837808..f2b0837808 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h index 81c6142726..81c6142726 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp index 7f4dea1c6d..7f4dea1c6d 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h index d2086fbc02..d2086fbc02 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp index d4a1aa78e4..d4a1aa78e4 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h index f29f7a709a..f29f7a709a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp index 1cb3d2e7a1..1cb3d2e7a1 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h index 24d1336778..24d1336778 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp index 39ff7934d9..39ff7934d9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h index 93d842ef50..93d842ef50 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp index b54bd48932..b54bd48932 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h index cd75ba12d7..cd75ba12d7 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp index cce2d95bcf..cce2d95bcf 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h index d28c430c4c..d28c430c4c 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp index f6e4e57b0a..f6e4e57b0a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h index 17c7596cff..17c7596cff 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp index 5fa1c8be5e..5fa1c8be5e 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h index cb0f152183..cb0f152183 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp index 86141fa689..86141fa689 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.h index 8ec8613857..8ec8613857 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp index 8c8a7c3c1e..8c8a7c3c1e 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h index 2aaf6201f3..2aaf6201f3 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp index 6cba442ca5..6cba442ca5 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h index 7d9aafeee6..7d9aafeee6 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp index 23c73c8825..23c73c8825 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h index 12cdafd1b6..12cdafd1b6 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp index 1344782257..1344782257 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h index e24c6afeca..e24c6afeca 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp index e8b567e0ef..e8b567e0ef 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h index eefaedc9e7..eefaedc9e7 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp index 27eaec3059..27eaec3059 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h index 3517a568a9..3517a568a9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp index 86d4e74400..86d4e74400 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h index 6b6e39a72b..6b6e39a72b 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp index 5222933595..5222933595 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.h index ef2a29202f..ef2a29202f 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.h +++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp index ecce028c2e..ecce028c2e 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.h index 22bee4f2c8..22bee4f2c8 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp index 72eeb38911..72eeb38911 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.h index 715e3f2ab9..715e3f2ab9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp index 61f465cb72..61f465cb72 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h index 1fa4995d16..1fa4995d16 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp index 0345501ce2..0345501ce2 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h index 7d64b46abf..7d64b46abf 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionMargin.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h index 474bf1fb49..474bf1fb49 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionMargin.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp index 823e2788f2..823e2788f2 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.h index 6c4916fbd4..6c4916fbd4 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp index e8c8c336cd..e8c8c336cd 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.h index 4eef8dba30..4eef8dba30 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp index 58ff84a5b0..58ff84a5b0 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.h index 2917cc5b60..2917cc5b60 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.cpp index 2d83c8bfba..2d83c8bfba 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.h index 3b44e3f272..3b44e3f272 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp index 10ea3e981a..10ea3e981a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h index bbd1caf42f..bbd1caf42f 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp index a7a9598406..a7a9598406 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h index 0c12aeef15..0c12aeef15 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp index 083d60b1b1..083d60b1b1 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h index 1213b82fbe..1213b82fbe 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp index ad1d1bf78f..ad1d1bf78f 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h index 54b5afac3e..54b5afac3e 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp index 4f45319a83..4f45319a83 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h index d3cd066ac8..d3cd066ac8 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp index 8d7fb054d6..8d7fb054d6 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.h index 875f2ac195..875f2ac195 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp index 0f9ced554b..0f9ced554b 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h index f338865ca1..f338865ca1 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp index 604b3fc770..604b3fc770 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.h index a214a827c9..a214a827c9 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp index a9e6df5c58..a9e6df5c58 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.h index 069a79402b..069a79402b 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp index 441a89c6bb..441a89c6bb 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h index 4a7a4a4bda..4a7a4a4bda 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMaterial.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMaterial.h index 866f9b4da4..866f9b4da4 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMaterial.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMaterial.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp index 899ef50056..899ef50056 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h index a3f9a47239..a3f9a47239 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp index 4195fa3138..4195fa3138 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h index 5d3b402684..5d3b402684 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp index 58799ac96a..58799ac96a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h index 5ebaede4a8..5ebaede4a8 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp index 6f36775f7c..6f36775f7c 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h index 715961f552..715961f552 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp index 4854f370f7..4854f370f7 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h index 7bf8e01c1f..7bf8e01c1f 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp index 6a337c786c..6a337c786c 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h index 39049eaf08..39049eaf08 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp index 3beaf86580..3beaf86580 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.h index e959f198b6..e959f198b6 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp index b9a736c0fd..b9a736c0fd 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.h index 50561f7f54..50561f7f54 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp index d17141e3f2..d17141e3f2 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h index 5e9eccc77d..5e9eccc77d 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp index 78ddeb3704..78ddeb3704 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h index 9fbe139768..9fbe139768 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp index 52f346bf72..52f346bf72 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h index b69209835e..b69209835e 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp index 3027e65b25..3027e65b25 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h index b71fc8b374..b71fc8b374 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp index f558bf6d24..f558bf6d24 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h index 461c57f877..461c57f877 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp index a665024cb6..a665024cb6 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h index 9e1544e87a..9e1544e87a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp index dc562941ad..dc562941ad 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h index ba4f7b4607..ba4f7b4607 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h index 6427589590..6427589590 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp index e4de732093..e4de732093 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h index ac4afa7f6b..ac4afa7f6b 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp index 0e17951405..0e17951405 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h index 453e58005a..453e58005a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleShape.h index a8a80f82fe..a8a80f82fe 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleShape.h diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp index b148bbd99a..b148bbd99a 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h index a10f58d242..a10f58d242 100644 --- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.h +++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btBoxCollision.h b/thirdparty/bullet/BulletCollision/Gimpact/btBoxCollision.h index 0a0357e5a8..0a0357e5a8 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btBoxCollision.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btBoxCollision.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btClipPolygon.h b/thirdparty/bullet/BulletCollision/Gimpact/btClipPolygon.h index de0a5231ba..de0a5231ba 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btClipPolygon.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btClipPolygon.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btCompoundFromGimpact.h b/thirdparty/bullet/BulletCollision/Gimpact/btCompoundFromGimpact.h index 19f7ecddd0..19f7ecddd0 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btCompoundFromGimpact.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btCompoundFromGimpact.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.cpp index eed31d839f..eed31d839f 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.h b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.h index d1027dbe67..d1027dbe67 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessingStructs.h b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessingStructs.h index efbc4a567a..efbc4a567a 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessingStructs.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessingStructs.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp index 863233163a..863233163a 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.h index e20e03cc1d..e20e03cc1d 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvhStructs.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvhStructs.h index 9342a572d0..9342a572d0 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvhStructs.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvhStructs.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp index 2e87475e39..2e87475e39 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h index 3e5675f729..3e5675f729 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactMassUtil.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h index 2543aefcfc..2543aefcfc 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactMassUtil.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp index 4528758c37..4528758c37 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h index 42e5520fc0..42e5520fc0 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h index 7dd5a1b9d0..7dd5a1b9d0 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.cpp index 30c85e3fff..30c85e3fff 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.h index 9d7e40562c..9d7e40562c 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp index 5d07d1adb9..5d07d1adb9 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.h b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h index b46d851634..b46d851634 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGeometryOperations.h b/thirdparty/bullet/BulletCollision/Gimpact/btGeometryOperations.h index 60f06510ad..60f06510ad 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGeometryOperations.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btGeometryOperations.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btQuantization.h b/thirdparty/bullet/BulletCollision/Gimpact/btQuantization.h index bd2633cfc5..bd2633cfc5 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btQuantization.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btQuantization.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp index ca76cc54a1..ca76cc54a1 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.h b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h index 973c2ed127..973c2ed127 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_array.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_array.h index cda51a5fce..cda51a5fce 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_array.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_array.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h index 0c48cb60fc..0c48cb60fc 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_bitset.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_bitset.h index 7dee48a4c7..7dee48a4c7 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_bitset.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_bitset.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_collision.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_collision.h index a051b4fdbf..a051b4fdbf 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_collision.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_collision.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.cpp index 0c3d7ba8db..0c3d7ba8db 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.h index 61d190a7df..61d190a7df 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_clip_polygon.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_clip_polygon.h index e342459ce5..e342459ce5 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_clip_polygon.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_clip_polygon.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.cpp index 20e41de089..20e41de089 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.h index b41c714b5f..b41c714b5f 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geom_types.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_geom_types.h index 6b8f9ea6c2..6b8f9ea6c2 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geom_types.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_geom_types.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geometry.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_geometry.h index c67a6991c0..c67a6991c0 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geometry.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_geometry.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_hash_table.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_hash_table.h index e4237c2c57..e4237c2c57 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_hash_table.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_hash_table.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_linear_math.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_linear_math.h index 64f11b4954..64f11b4954 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_linear_math.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_linear_math.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_math.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_math.h index 939079e104..939079e104 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_math.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_math.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.cpp index 1636eb7867..1636eb7867 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.h index e203888a1e..e203888a1e 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_radixsort.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_radixsort.h index c246ef1254..c246ef1254 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_radixsort.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_radixsort.h diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp index f9727e1d53..f9727e1d53 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.cpp +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.h index 267f806e7e..267f806e7e 100644 --- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.h +++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h index 9eb880b8df..9eb880b8df 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp index 940282f576..940282f576 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h index bdc0572f75..bdc0572f75 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp index d2a1310b23..d2a1310b23 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h index bfd79d03be..bfd79d03be 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h index 29620abffb..29620abffb 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h index 0ea7b483cf..0ea7b483cf 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h index 0b49b0ecc6..0b49b0ecc6 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp index bef697a0a1..bef697a0a1 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h index 6a42ee63b0..6a42ee63b0 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp index eefb974bbd..eefb974bbd 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h index ac501d5ecf..ac501d5ecf 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h index ce1f24bc50..ce1f24bc50 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp index 572ec36f56..572ec36f56 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h index 1ed6340af3..1ed6340af3 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp index 257b026d9b..257b026d9b 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h index feeae68621..feeae68621 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h index 571ad2c5f7..571ad2c5f7 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp index fa45f49037..fa45f49037 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h index fd533b4fc3..fd533b4fc3 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMprPenetration.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMprPenetration.h index a22a0bae66..a22a0bae66 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMprPenetration.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMprPenetration.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp index 23aaece22b..23aaece22b 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h index f872c8e1c9..f872c8e1c9 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h index 18da171011..18da171011 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp index ea380bc5f1..ea380bc5f1 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h index 30e3db687b..30e3db687b 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp index 786efd1820..786efd1820 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h index f2ed0cd39c..f2ed0cd39c 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h index da8a13914c..da8a13914c 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp index ec638f60ba..ec638f60ba 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h index 6c8127983e..6c8127983e 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp index 756373c9b5..756373c9b5 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h index 80fd490f4e..80fd490f4e 100644 --- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h +++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/Character/btCharacterControllerInterface.h b/thirdparty/bullet/BulletDynamics/Character/btCharacterControllerInterface.h index abe24b5ca6..abe24b5ca6 100644 --- a/thirdparty/bullet/src/BulletDynamics/Character/btCharacterControllerInterface.h +++ b/thirdparty/bullet/BulletDynamics/Character/btCharacterControllerInterface.h diff --git a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.cpp b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp index cb1aa71a14..cb1aa71a14 100644 --- a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.cpp +++ b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.h b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.h index 00c59c0248..00c59c0248 100644 --- a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.h +++ b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp index 0572256f74..0572256f74 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h index 7a33d01d1e..7a33d01d1e 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h index 890afe6da4..890afe6da4 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp index 1098d0c96b..1098d0c96b 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h index adb2268353..adb2268353 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h index 28d0c1dd48..28d0c1dd48 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp index 75d81cc08c..75d81cc08c 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.h index bff2008b28..bff2008b28 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.cpp index bcd457b673..bcd457b673 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.h index e4613455a2..e4613455a2 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp index fa17254ec3..fa17254ec3 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h index bea8629c32..bea8629c32 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp index f0976ee493..f0976ee493 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h index 66d1769583..66d1769583 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp index 6f765884ec..6f765884ec 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h index dac59c6889..dac59c6889 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp index 4be2aabe4d..4be2aabe4d 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h index 06a8e3ecd1..06a8e3ecd1 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp index 7e5e6f9e54..7e5e6f9e54 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h index 3c3df24dba..3c3df24dba 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h index 125580d199..125580d199 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp index f3979be358..f3979be358 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h index a300929cd5..a300929cd5 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp index 3c0430b903..3c0430b903 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h index 8fa03d719d..8fa03d719d 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp index b0d57a3e87..b0d57a3e87 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h index 16c7eb74c1..16c7eb74c1 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp index d63cef0316..d63cef0316 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h index 1957f08a96..1957f08a96 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp index 0c7dbd668b..0c7dbd668b 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h index e8bfabf864..e8bfabf864 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverBody.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h index 27ccefe416..27ccefe416 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverBody.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h index 5515e6b311..5515e6b311 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp index 9f04f28053..9f04f28053 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h index 8a2a2d1ae7..8a2a2d1ae7 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp index b009f41aec..b009f41aec 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h index 9e70841043..9e70841043 100644 --- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h +++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btActionInterface.h b/thirdparty/bullet/BulletDynamics/Dynamics/btActionInterface.h index e1fea3a49c..e1fea3a49c 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btActionInterface.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btActionInterface.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp index a196d4522e..a196d4522e 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h index b0d19f48a3..b0d19f48a3 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp index 1d10bad922..1d10bad922 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h index 2f144cdda4..2f144cdda4 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h index 42d8fc0de3..42d8fc0de3 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDynamicsWorld.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.cpp index ca0714fcfa..ca0714fcfa 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.cpp +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.h b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.h index 372245031b..372245031b 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp index 6f63b87c80..6f63b87c80 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h index 44b7e7fb34..44b7e7fb34 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp index 99b34353c7..99b34353c7 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h index 9a781aaef1..9a781aaef1 100644 --- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h +++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.cpp index 62865e0c78..62865e0c78 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.h index 655165ac18..655165ac18 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp index d52852dd8e..d52852dd8e 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.h index 83521b9501..83521b9501 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp index 1e2d074096..1e2d074096 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h index 489347d874..489347d874 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp index 9eacc22647..9eacc22647 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h index c0c132bbba..c0c132bbba 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp index 1f94117aa9..1f94117aa9 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h index 036025136e..036025136e 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp index 5fdb7007d8..5fdb7007d8 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h index 0115de6241..0115de6241 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h index 5c2fa8ed5b..5c2fa8ed5b 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp index 6d173b66a1..6d173b66a1 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h index 55b8d122b9..55b8d122b9 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp index e0921178e9..e0921178e9 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.h index 4063bed79a..4063bed79a 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLink.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLink.h index 01828e5843..01828e5843 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLink.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLink.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h index 671e15d314..671e15d314 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp index 125d52ad0b..125d52ad0b 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h index bf39acc5b9..bf39acc5b9 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp index 3b64b8183f..3b64b8183f 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h index 0a6cf3df12..0a6cf3df12 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h index 6fa1550e9e..6fa1550e9e 100644 --- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h +++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp index 986f214870..986f214870 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.h index 903832770a..903832770a 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigSolver.h index 2a2f2d3d32..2a2f2d3d32 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigSolver.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp index 1f4015c7c7..1f4015c7c7 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h index 7555cd9d20..7555cd9d20 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeSolver.h index 98484c3796..98484c3796 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeSolver.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp index 8f54c52626..8f54c52626 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.h index 26b482ddc1..26b482ddc1 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h index 25bb3f6d32..25bb3f6d32 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btPATHSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btPATHSolver.h index 9ec31a6d4e..9ec31a6d4e 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btPATHSolver.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btPATHSolver.h diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h index c0b40ffd9f..c0b40ffd9f 100644 --- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h +++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp index a7b1688469..a7b1688469 100644 --- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp +++ b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h index 04656b912c..04656b912c 100644 --- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h +++ b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btVehicleRaycaster.h b/thirdparty/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h index 3cc909c653..3cc909c653 100644 --- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btVehicleRaycaster.h +++ b/thirdparty/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.cpp b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp index ef93c16fff..ef93c16fff 100644 --- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.cpp +++ b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.h b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.h index f991a57b69..f991a57b69 100644 --- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.h +++ b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.h diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDConfig.hpp b/thirdparty/bullet/BulletInverseDynamics/IDConfig.hpp index ebb10e7a16..ebb10e7a16 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/IDConfig.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/IDConfig.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigBuiltin.hpp b/thirdparty/bullet/BulletInverseDynamics/IDConfigBuiltin.hpp index 130c19c6d6..130c19c6d6 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigBuiltin.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/IDConfigBuiltin.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigEigen.hpp b/thirdparty/bullet/BulletInverseDynamics/IDConfigEigen.hpp index cbd7e8a9c4..cbd7e8a9c4 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigEigen.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/IDConfigEigen.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDErrorMessages.hpp b/thirdparty/bullet/BulletInverseDynamics/IDErrorMessages.hpp index 1dc22f860a..1dc22f860a 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/IDErrorMessages.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/IDErrorMessages.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.cpp b/thirdparty/bullet/BulletInverseDynamics/IDMath.cpp index 99fe20e492..99fe20e492 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.cpp +++ b/thirdparty/bullet/BulletInverseDynamics/IDMath.cpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.hpp b/thirdparty/bullet/BulletInverseDynamics/IDMath.hpp index b355474d44..b355474d44 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/IDMath.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.cpp b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.cpp index c67588d49f..c67588d49f 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.cpp +++ b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.cpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.hpp b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.hpp index d235aa6e76..d235aa6e76 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/IDEigenInterface.hpp b/thirdparty/bullet/BulletInverseDynamics/details/IDEigenInterface.hpp index 836395cea2..836395cea2 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/IDEigenInterface.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/IDEigenInterface.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/IDLinearMathInterface.hpp b/thirdparty/bullet/BulletInverseDynamics/details/IDLinearMathInterface.hpp index 5bb4a33bdd..5bb4a33bdd 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/IDLinearMathInterface.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/IDLinearMathInterface.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/IDMatVec.hpp b/thirdparty/bullet/BulletInverseDynamics/details/IDMatVec.hpp index 4d3f6c87e9..4d3f6c87e9 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/IDMatVec.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/IDMatVec.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp index b35c55df61..b35c55df61 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp index 3efe9d0492..3efe9d0492 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp index 47b4ab3890..47b4ab3890 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp index 0d2aa4a071..0d2aa4a071 100644 --- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp +++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.cpp b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp index 9c20403074..9c20403074 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.cpp +++ b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.h b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.h index 1c17ffcbb2..1c17ffcbb2 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.h +++ b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBody.cpp index 48efb0d8d4..48efb0d8d4 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftBody.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.h b/thirdparty/bullet/BulletSoftBody/btSoftBody.h index ada0dfd1a5..ada0dfd1a5 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBody.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp index ab84bddf2a..ab84bddf2a 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h index 11c7b88f98..11c7b88f98 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyData.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyData.h index 87d8841cfa..87d8841cfa 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyData.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyData.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.cpp index 51fcd16da4..51fcd16da4 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.h index 7271530109..7271530109 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyInternals.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyInternals.h index 1ad82616ea..1ad82616ea 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyInternals.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyInternals.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp index f5a67f6d89..f5a67f6d89 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h index 21addcfe2e..21addcfe2e 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h b/thirdparty/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h index c4733d6400..c4733d6400 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolvers.h b/thirdparty/bullet/BulletSoftBody/btSoftBodySolvers.h index 6947bc27d2..6947bc27d2 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolvers.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftBodySolvers.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp index 4e76dca9db..4e76dca9db 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h index 6d46a21db5..6d46a21db5 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp index 01c148a2ca..01c148a2ca 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h index 93fcc6065b..93fcc6065b 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp index 204b4f576d..204b4f576d 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.h b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h index d921a6488d..d921a6488d 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp index 72043e69e2..72043e69e2 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp +++ b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h index 4eab7aea2f..4eab7aea2f 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h +++ b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h diff --git a/thirdparty/bullet/src/BulletSoftBody/btSparseSDF.h b/thirdparty/bullet/BulletSoftBody/btSparseSDF.h index ba437c28ef..ba437c28ef 100644 --- a/thirdparty/bullet/src/BulletSoftBody/btSparseSDF.h +++ b/thirdparty/bullet/BulletSoftBody/btSparseSDF.h diff --git a/thirdparty/bullet/LICENSE.txt b/thirdparty/bullet/LICENSE.txt new file mode 100644 index 0000000000..319c84e349 --- /dev/null +++ b/thirdparty/bullet/LICENSE.txt @@ -0,0 +1,15 @@ + +The files in this repository are licensed under the zlib license, except for the files under 'Extras' and examples/ThirdPartyLibs. + +Bullet Continuous Collision Detection and Physics Library +http://bulletphysics.org + +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. diff --git a/thirdparty/bullet/src/LinearMath/btAabbUtil2.h b/thirdparty/bullet/LinearMath/btAabbUtil2.h index d2997b4e65..d2997b4e65 100644 --- a/thirdparty/bullet/src/LinearMath/btAabbUtil2.h +++ b/thirdparty/bullet/LinearMath/btAabbUtil2.h diff --git a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.cpp b/thirdparty/bullet/LinearMath/btAlignedAllocator.cpp index e5f6040c43..e5f6040c43 100644 --- a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.cpp +++ b/thirdparty/bullet/LinearMath/btAlignedAllocator.cpp diff --git a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.h b/thirdparty/bullet/LinearMath/btAlignedAllocator.h index 9873b338d9..9873b338d9 100644 --- a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.h +++ b/thirdparty/bullet/LinearMath/btAlignedAllocator.h diff --git a/thirdparty/bullet/src/LinearMath/btAlignedObjectArray.h b/thirdparty/bullet/LinearMath/btAlignedObjectArray.h index f0b646529a..f0b646529a 100644 --- a/thirdparty/bullet/src/LinearMath/btAlignedObjectArray.h +++ b/thirdparty/bullet/LinearMath/btAlignedObjectArray.h diff --git a/thirdparty/bullet/src/LinearMath/btConvexHull.cpp b/thirdparty/bullet/LinearMath/btConvexHull.cpp index f8b79a1aba..f8b79a1aba 100644 --- a/thirdparty/bullet/src/LinearMath/btConvexHull.cpp +++ b/thirdparty/bullet/LinearMath/btConvexHull.cpp diff --git a/thirdparty/bullet/src/LinearMath/btConvexHull.h b/thirdparty/bullet/LinearMath/btConvexHull.h index 69c52bc6f8..69c52bc6f8 100644 --- a/thirdparty/bullet/src/LinearMath/btConvexHull.h +++ b/thirdparty/bullet/LinearMath/btConvexHull.h diff --git a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.cpp b/thirdparty/bullet/LinearMath/btConvexHullComputer.cpp index 2ea22cbe3b..2ea22cbe3b 100644 --- a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.cpp +++ b/thirdparty/bullet/LinearMath/btConvexHullComputer.cpp diff --git a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.h b/thirdparty/bullet/LinearMath/btConvexHullComputer.h index 7240ac4fb5..7240ac4fb5 100644 --- a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.h +++ b/thirdparty/bullet/LinearMath/btConvexHullComputer.h diff --git a/thirdparty/bullet/src/LinearMath/btCpuFeatureUtility.h b/thirdparty/bullet/LinearMath/btCpuFeatureUtility.h index d2cab52d48..d2cab52d48 100644 --- a/thirdparty/bullet/src/LinearMath/btCpuFeatureUtility.h +++ b/thirdparty/bullet/LinearMath/btCpuFeatureUtility.h diff --git a/thirdparty/bullet/src/LinearMath/btDefaultMotionState.h b/thirdparty/bullet/LinearMath/btDefaultMotionState.h index 01c5f8d932..01c5f8d932 100644 --- a/thirdparty/bullet/src/LinearMath/btDefaultMotionState.h +++ b/thirdparty/bullet/LinearMath/btDefaultMotionState.h diff --git a/thirdparty/bullet/src/LinearMath/btGeometryUtil.cpp b/thirdparty/bullet/LinearMath/btGeometryUtil.cpp index 5ac230f712..5ac230f712 100644 --- a/thirdparty/bullet/src/LinearMath/btGeometryUtil.cpp +++ b/thirdparty/bullet/LinearMath/btGeometryUtil.cpp diff --git a/thirdparty/bullet/src/LinearMath/btGeometryUtil.h b/thirdparty/bullet/LinearMath/btGeometryUtil.h index a4b13b4560..a4b13b4560 100644 --- a/thirdparty/bullet/src/LinearMath/btGeometryUtil.h +++ b/thirdparty/bullet/LinearMath/btGeometryUtil.h diff --git a/thirdparty/bullet/src/LinearMath/btGrahamScan2dConvexHull.h b/thirdparty/bullet/LinearMath/btGrahamScan2dConvexHull.h index 13a79aa585..13a79aa585 100644 --- a/thirdparty/bullet/src/LinearMath/btGrahamScan2dConvexHull.h +++ b/thirdparty/bullet/LinearMath/btGrahamScan2dConvexHull.h diff --git a/thirdparty/bullet/src/LinearMath/btHashMap.h b/thirdparty/bullet/LinearMath/btHashMap.h index 5e9cdb6054..5e9cdb6054 100644 --- a/thirdparty/bullet/src/LinearMath/btHashMap.h +++ b/thirdparty/bullet/LinearMath/btHashMap.h diff --git a/thirdparty/bullet/src/LinearMath/btIDebugDraw.h b/thirdparty/bullet/LinearMath/btIDebugDraw.h index 936aaa896b..936aaa896b 100644 --- a/thirdparty/bullet/src/LinearMath/btIDebugDraw.h +++ b/thirdparty/bullet/LinearMath/btIDebugDraw.h diff --git a/thirdparty/bullet/src/LinearMath/btList.h b/thirdparty/bullet/LinearMath/btList.h index eec80a7064..eec80a7064 100644 --- a/thirdparty/bullet/src/LinearMath/btList.h +++ b/thirdparty/bullet/LinearMath/btList.h diff --git a/thirdparty/bullet/src/LinearMath/btMatrix3x3.h b/thirdparty/bullet/LinearMath/btMatrix3x3.h index 9f642a1779..9f642a1779 100644 --- a/thirdparty/bullet/src/LinearMath/btMatrix3x3.h +++ b/thirdparty/bullet/LinearMath/btMatrix3x3.h diff --git a/thirdparty/bullet/src/LinearMath/btMatrixX.h b/thirdparty/bullet/LinearMath/btMatrixX.h index 42caed42ef..42caed42ef 100644 --- a/thirdparty/bullet/src/LinearMath/btMatrixX.h +++ b/thirdparty/bullet/LinearMath/btMatrixX.h diff --git a/thirdparty/bullet/src/LinearMath/btMinMax.h b/thirdparty/bullet/LinearMath/btMinMax.h index 5b436e9ba4..5b436e9ba4 100644 --- a/thirdparty/bullet/src/LinearMath/btMinMax.h +++ b/thirdparty/bullet/LinearMath/btMinMax.h diff --git a/thirdparty/bullet/src/LinearMath/btMotionState.h b/thirdparty/bullet/LinearMath/btMotionState.h index 9431814090..9431814090 100644 --- a/thirdparty/bullet/src/LinearMath/btMotionState.h +++ b/thirdparty/bullet/LinearMath/btMotionState.h diff --git a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.cpp b/thirdparty/bullet/LinearMath/btPolarDecomposition.cpp index b3664faa4e..b3664faa4e 100644 --- a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.cpp +++ b/thirdparty/bullet/LinearMath/btPolarDecomposition.cpp diff --git a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.h b/thirdparty/bullet/LinearMath/btPolarDecomposition.h index 1feea0f78e..1feea0f78e 100644 --- a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.h +++ b/thirdparty/bullet/LinearMath/btPolarDecomposition.h diff --git a/thirdparty/bullet/src/LinearMath/btPoolAllocator.h b/thirdparty/bullet/LinearMath/btPoolAllocator.h index efdeda8ffc..efdeda8ffc 100644 --- a/thirdparty/bullet/src/LinearMath/btPoolAllocator.h +++ b/thirdparty/bullet/LinearMath/btPoolAllocator.h diff --git a/thirdparty/bullet/src/LinearMath/btQuadWord.h b/thirdparty/bullet/LinearMath/btQuadWord.h index fcfb3be444..fcfb3be444 100644 --- a/thirdparty/bullet/src/LinearMath/btQuadWord.h +++ b/thirdparty/bullet/LinearMath/btQuadWord.h diff --git a/thirdparty/bullet/src/LinearMath/btQuaternion.h b/thirdparty/bullet/LinearMath/btQuaternion.h index 7bd39e6a33..7bd39e6a33 100644 --- a/thirdparty/bullet/src/LinearMath/btQuaternion.h +++ b/thirdparty/bullet/LinearMath/btQuaternion.h diff --git a/thirdparty/bullet/src/LinearMath/btQuickprof.cpp b/thirdparty/bullet/LinearMath/btQuickprof.cpp index aed3104a6e..aed3104a6e 100644 --- a/thirdparty/bullet/src/LinearMath/btQuickprof.cpp +++ b/thirdparty/bullet/LinearMath/btQuickprof.cpp diff --git a/thirdparty/bullet/src/LinearMath/btQuickprof.h b/thirdparty/bullet/LinearMath/btQuickprof.h index 7b38d71b90..7b38d71b90 100644 --- a/thirdparty/bullet/src/LinearMath/btQuickprof.h +++ b/thirdparty/bullet/LinearMath/btQuickprof.h diff --git a/thirdparty/bullet/src/LinearMath/btRandom.h b/thirdparty/bullet/LinearMath/btRandom.h index 4cbfc6bfe9..4cbfc6bfe9 100644 --- a/thirdparty/bullet/src/LinearMath/btRandom.h +++ b/thirdparty/bullet/LinearMath/btRandom.h diff --git a/thirdparty/bullet/src/LinearMath/btScalar.h b/thirdparty/bullet/LinearMath/btScalar.h index bffb2ce274..bffb2ce274 100644 --- a/thirdparty/bullet/src/LinearMath/btScalar.h +++ b/thirdparty/bullet/LinearMath/btScalar.h diff --git a/thirdparty/bullet/src/LinearMath/btSerializer.cpp b/thirdparty/bullet/LinearMath/btSerializer.cpp index fcd2255ad5..fcd2255ad5 100644 --- a/thirdparty/bullet/src/LinearMath/btSerializer.cpp +++ b/thirdparty/bullet/LinearMath/btSerializer.cpp diff --git a/thirdparty/bullet/src/LinearMath/btSerializer.h b/thirdparty/bullet/LinearMath/btSerializer.h index 89b4d74683..89b4d74683 100644 --- a/thirdparty/bullet/src/LinearMath/btSerializer.h +++ b/thirdparty/bullet/LinearMath/btSerializer.h diff --git a/thirdparty/bullet/src/LinearMath/btSerializer64.cpp b/thirdparty/bullet/LinearMath/btSerializer64.cpp index 05f59202d7..05f59202d7 100644 --- a/thirdparty/bullet/src/LinearMath/btSerializer64.cpp +++ b/thirdparty/bullet/LinearMath/btSerializer64.cpp diff --git a/thirdparty/bullet/src/LinearMath/btSpatialAlgebra.h b/thirdparty/bullet/LinearMath/btSpatialAlgebra.h index 8e59658bca..8e59658bca 100644 --- a/thirdparty/bullet/src/LinearMath/btSpatialAlgebra.h +++ b/thirdparty/bullet/LinearMath/btSpatialAlgebra.h diff --git a/thirdparty/bullet/src/LinearMath/btStackAlloc.h b/thirdparty/bullet/LinearMath/btStackAlloc.h index 397b084877..397b084877 100644 --- a/thirdparty/bullet/src/LinearMath/btStackAlloc.h +++ b/thirdparty/bullet/LinearMath/btStackAlloc.h diff --git a/thirdparty/bullet/src/LinearMath/btThreads.cpp b/thirdparty/bullet/LinearMath/btThreads.cpp index 59a7ea36e9..59a7ea36e9 100644 --- a/thirdparty/bullet/src/LinearMath/btThreads.cpp +++ b/thirdparty/bullet/LinearMath/btThreads.cpp diff --git a/thirdparty/bullet/src/LinearMath/btThreads.h b/thirdparty/bullet/LinearMath/btThreads.h index 05fd15ec82..05fd15ec82 100644 --- a/thirdparty/bullet/src/LinearMath/btThreads.h +++ b/thirdparty/bullet/LinearMath/btThreads.h diff --git a/thirdparty/bullet/src/LinearMath/btTransform.h b/thirdparty/bullet/LinearMath/btTransform.h index d4f939a5d9..d4f939a5d9 100644 --- a/thirdparty/bullet/src/LinearMath/btTransform.h +++ b/thirdparty/bullet/LinearMath/btTransform.h diff --git a/thirdparty/bullet/src/LinearMath/btTransformUtil.h b/thirdparty/bullet/LinearMath/btTransformUtil.h index 182cc43fab..182cc43fab 100644 --- a/thirdparty/bullet/src/LinearMath/btTransformUtil.h +++ b/thirdparty/bullet/LinearMath/btTransformUtil.h diff --git a/thirdparty/bullet/src/LinearMath/btVector3.cpp b/thirdparty/bullet/LinearMath/btVector3.cpp index e05bdccd67..e05bdccd67 100644 --- a/thirdparty/bullet/src/LinearMath/btVector3.cpp +++ b/thirdparty/bullet/LinearMath/btVector3.cpp diff --git a/thirdparty/bullet/src/LinearMath/btVector3.h b/thirdparty/bullet/LinearMath/btVector3.h index c69effa96e..c69effa96e 100644 --- a/thirdparty/bullet/src/LinearMath/btVector3.h +++ b/thirdparty/bullet/LinearMath/btVector3.h diff --git a/thirdparty/bullet/src/btBulletCollisionCommon.h b/thirdparty/bullet/btBulletCollisionCommon.h index 948e02eb4c..948e02eb4c 100644 --- a/thirdparty/bullet/src/btBulletCollisionCommon.h +++ b/thirdparty/bullet/btBulletCollisionCommon.h diff --git a/thirdparty/bullet/src/btBulletDynamicsCommon.h b/thirdparty/bullet/btBulletDynamicsCommon.h index 50282bf210..50282bf210 100644 --- a/thirdparty/bullet/src/btBulletDynamicsCommon.h +++ b/thirdparty/bullet/btBulletDynamicsCommon.h diff --git a/thirdparty/bullet/src/clew/clew.c b/thirdparty/bullet/clew/clew.c index a07b0aad75..a07b0aad75 100644 --- a/thirdparty/bullet/src/clew/clew.c +++ b/thirdparty/bullet/clew/clew.c diff --git a/thirdparty/bullet/src/clew/clew.h b/thirdparty/bullet/clew/clew.h index ee0fef18b4..ee0fef18b4 100644 --- a/thirdparty/bullet/src/clew/clew.h +++ b/thirdparty/bullet/clew/clew.h diff --git a/thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt deleted file mode 100644 index 130095cc04..0000000000 --- a/thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt +++ /dev/null @@ -1,93 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(Bullet3Collision_SRCS - BroadPhaseCollision/b3DynamicBvh.cpp - BroadPhaseCollision/b3DynamicBvhBroadphase.cpp - BroadPhaseCollision/b3OverlappingPairCache.cpp - NarrowPhaseCollision/b3ConvexUtility.cpp - NarrowPhaseCollision/b3CpuNarrowPhase.cpp -) - -SET(Bullet3CollisionBroadPhase_HDRS - BroadPhaseCollision/b3BroadphaseCallback.h - BroadPhaseCollision/b3DynamicBvh.h - BroadPhaseCollision/b3DynamicBvhBroadphase.h - BroadPhaseCollision/b3OverlappingPair.h - BroadPhaseCollision/b3OverlappingPairCache.h -) -SET(Bullet3CollisionBroadPhaseShared_HDRS - BroadPhaseCollision/shared/b3Aabb.h -) - -SET(Bullet3CollisionNarrowPhase_HDRS - NarrowPhaseCollision/b3Config.h - NarrowPhaseCollision/b3Contact4.h - NarrowPhaseCollision/b3ConvexUtility.h - NarrowPhaseCollision/b3CpuNarrowPhase.h - NarrowPhaseCollision/b3RaycastInfo.h - NarrowPhaseCollision/b3RigidBodyCL.h -) -SET(Bullet3CollisionNarrowPhaseShared_HDRS - - NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h - NarrowPhaseCollision/shared/b3BvhTraversal.h - NarrowPhaseCollision/shared/b3ClipFaces.h - NarrowPhaseCollision/shared/b3Collidable.h - NarrowPhaseCollision/shared/b3Contact4Data.h - NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h - NarrowPhaseCollision/shared/b3ContactSphereSphere.h - NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h - NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h - NarrowPhaseCollision/shared/b3FindSeparatingAxis.h - NarrowPhaseCollision/shared/b3MprPenetration.h - NarrowPhaseCollision/shared/b3NewContactReduction.h - NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h - NarrowPhaseCollision/shared/b3ReduceContacts.h - NarrowPhaseCollision/shared/b3RigidBodyData.h - NarrowPhaseCollision/shared/b3UpdateAabbs.h -) - -SET(Bullet3Collision_HDRS - ${Bullet3CollisionBroadPhase_HDRS} - ${Bullet3CollisionBroadPhaseShared_HDRS} - ${Bullet3CollisionNarrowPhaseShared_HDRS} - ${Bullet3CollisionNarrowPhase_HDRS} -) - -ADD_LIBRARY(Bullet3Collision ${Bullet3Collision_SRCS} ${Bullet3Collision_HDRS}) -if (BUILD_SHARED_LIBS) - target_link_libraries(Bullet3Collision Bullet3Geometry) -endif () -SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Collision DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Collision - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES PUBLIC_HEADER "${Bullet3Collision_HDRS}") - # Have to list out sub-directories manually: - #todo - #SET_PROPERTY(SOURCE ${Bullet3CollisionBroadPhase_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadPhaseCollision) - - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/Bullet3Collision/premake4.lua b/thirdparty/bullet/src/Bullet3Collision/premake4.lua deleted file mode 100644 index 0b47f8ea5b..0000000000 --- a/thirdparty/bullet/src/Bullet3Collision/premake4.lua +++ /dev/null @@ -1,13 +0,0 @@ - project "Bullet3Collision" - - language "C++" - - kind "StaticLib" - - includedirs {".."} - - - files { - "**.cpp", - "**.h" - }
\ No newline at end of file diff --git a/thirdparty/bullet/src/Bullet3Common/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Common/CMakeLists.txt deleted file mode 100644 index e899e67d94..0000000000 --- a/thirdparty/bullet/src/Bullet3Common/CMakeLists.txt +++ /dev/null @@ -1,63 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(Bullet3Common_SRCS - b3AlignedAllocator.cpp - b3Vector3.cpp - b3Logging.cpp -) - -SET(Bullet3Common_HDRS - b3AlignedAllocator.h - b3AlignedObjectArray.h - b3CommandLineArgs.h - b3HashMap.h - b3Logging.h - b3Matrix3x3.h - b3MinMax.h - b3PoolAllocator.h - b3QuadWord.h - b3Quaternion.h - b3Random.h - b3Scalar.h - b3StackAlloc.h - b3Transform.h - b3TransformUtil.h - b3Vector3.h - shared/b3Float4 - shared/b3Int2.h - shared/b3Int4.h - shared/b3Mat3x3.h - shared/b3PlatformDefinitions - shared/b3Quat.h -) - -ADD_LIBRARY(Bullet3Common ${Bullet3Common_SRCS} ${Bullet3Common_HDRS}) -SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Common DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Common - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES PUBLIC_HEADER "${Bullet3Common_HDRS}") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/Bullet3Common/premake4.lua b/thirdparty/bullet/src/Bullet3Common/premake4.lua deleted file mode 100644 index 1331c6327e..0000000000 --- a/thirdparty/bullet/src/Bullet3Common/premake4.lua +++ /dev/null @@ -1,12 +0,0 @@ - project "Bullet3Common" - - language "C++" - - kind "StaticLib" - - includedirs {".."} - - files { - "*.cpp", - "*.h" - } diff --git a/thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt deleted file mode 100644 index 94c120d9b5..0000000000 --- a/thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt +++ /dev/null @@ -1,61 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(Bullet3Dynamics_SRCS - b3CpuRigidBodyPipeline.cpp - ConstraintSolver/b3FixedConstraint.cpp - ConstraintSolver/b3Generic6DofConstraint.cpp - ConstraintSolver/b3PgsJacobiSolver.cpp - ConstraintSolver/b3Point2PointConstraint.cpp - ConstraintSolver/b3TypedConstraint.cpp -) - -SET(Bullet3Dynamics_HDRS - b3CpuRigidBodyPipeline.h - ConstraintSolver/b3ContactSolverInfo.h - ConstraintSolver/b3FixedConstraint.h - ConstraintSolver/b3Generic6DofConstraint.h - ConstraintSolver/b3JacobianEntry.h - ConstraintSolver/b3PgsJacobiSolver.h - ConstraintSolver/b3Point2PointConstraint.h - ConstraintSolver/b3SolverBody.h - ConstraintSolver/b3SolverConstraint.h - ConstraintSolver/b3TypedConstraint.h - shared/b3ContactConstraint4.h - shared/b3ConvertConstraint4.h - shared/b3Inertia.h - shared/b3IntegrateTransforms.h -) - -ADD_LIBRARY(Bullet3Dynamics ${Bullet3Dynamics_SRCS} ${Bullet3Dynamics_HDRS}) -if (BUILD_SHARED_LIBS) - target_link_libraries(Bullet3Dynamics Bullet3Collision) -endif () -SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Dynamics DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Dynamics - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES PUBLIC_HEADER "${Bullet3Dynamics_HDRS}") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/Bullet3Dynamics/premake4.lua b/thirdparty/bullet/src/Bullet3Dynamics/premake4.lua deleted file mode 100644 index 669336a6a1..0000000000 --- a/thirdparty/bullet/src/Bullet3Dynamics/premake4.lua +++ /dev/null @@ -1,15 +0,0 @@ - project "Bullet3Dynamics" - - language "C++" - - kind "StaticLib" - - includedirs { - ".." - } - - - files { - "**.cpp", - "**.h" - }
\ No newline at end of file diff --git a/thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt deleted file mode 100644 index 8206872705..0000000000 --- a/thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(Bullet3Geometry_SRCS - b3ConvexHullComputer.cpp - b3GeometryUtil.cpp -) - -SET(Bullet3Geometry_HDRS - b3AabbUtil.h - b3ConvexHullComputer.h - b3GeometryUtil.h - b3GrahamScan2dConvexHull.h -) - -ADD_LIBRARY(Bullet3Geometry ${Bullet3Geometry_SRCS} ${Bullet3Geometry_HDRS}) -if (BUILD_SHARED_LIBS) - target_link_libraries(Bullet3Geometry Bullet3Common) -endif() -SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Geometry DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3Geometry - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES PUBLIC_HEADER "${Bullet3Geometry_HDRS}") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/Bullet3Geometry/premake4.lua b/thirdparty/bullet/src/Bullet3Geometry/premake4.lua deleted file mode 100644 index 1a230f8c01..0000000000 --- a/thirdparty/bullet/src/Bullet3Geometry/premake4.lua +++ /dev/null @@ -1,13 +0,0 @@ - project "Bullet3Geometry" - - language "C++" - - kind "StaticLib" - - includedirs {".."} - - - files { - "**.cpp", - "**.h" - }
\ No newline at end of file diff --git a/thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt b/thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt deleted file mode 100644 index 1da58d4a99..0000000000 --- a/thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt +++ /dev/null @@ -1,77 +0,0 @@ -INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) - -ADD_DEFINITIONS(-DB3_USE_CLEW) - -SET(Bullet3OpenCL_clew_SRCS - ../clew/clew.c - BroadphaseCollision/b3GpuGridBroadphase.cpp - BroadphaseCollision/b3GpuSapBroadphase.cpp - BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp - BroadphaseCollision/b3GpuParallelLinearBvh.cpp - Initialize/b3OpenCLUtils.cpp - NarrowphaseCollision/b3ContactCache.cpp - NarrowphaseCollision/b3ConvexHullContact.cpp - NarrowphaseCollision/b3GjkEpa.cpp - NarrowphaseCollision/b3OptimizedBvh.cpp - NarrowphaseCollision/b3QuantizedBvh.cpp - NarrowphaseCollision/b3StridingMeshInterface.cpp - NarrowphaseCollision/b3TriangleCallback.cpp - NarrowphaseCollision/b3TriangleIndexVertexArray.cpp - NarrowphaseCollision/b3VoronoiSimplexSolver.cpp - ParallelPrimitives/b3BoundSearchCL.cpp - ParallelPrimitives/b3FillCL.cpp - ParallelPrimitives/b3LauncherCL.cpp - ParallelPrimitives/b3PrefixScanCL.cpp - ParallelPrimitives/b3PrefixScanFloat4CL.cpp - ParallelPrimitives/b3RadixSort32CL.cpp - Raycast/b3GpuRaycast.cpp - RigidBody/b3GpuGenericConstraint.cpp - RigidBody/b3GpuJacobiContactSolver.cpp - RigidBody/b3GpuNarrowPhase.cpp - RigidBody/b3GpuPgsConstraintSolver.cpp - RigidBody/b3GpuPgsContactSolver.cpp - RigidBody/b3GpuRigidBodyPipeline.cpp - RigidBody/b3Solver.cpp -) - - -SET(Bullet3OpenCL_clew_HDRS -# ${Root_HDRS} -) - - -ADD_LIBRARY(Bullet3OpenCL_clew ${Bullet3OpenCL_clew_SRCS} ${Bullet3OpenCL_clew_HDRS}) -SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(Bullet3OpenCL_clew LinearMath Bullet3Dynamics ${CMAKE_DL_LIBS}) -ENDIF (BUILD_SHARED_LIBS) - - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #INSTALL of other files requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3OpenCL_clew DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet3OpenCL_clew RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) -# INSTALL(FILES ../btBullet3OpenCL_clewCommon.h -#DESTINATION ${INCLUDE_INSTALL_DIR}/Bullet3OpenCL_clew) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES FRAMEWORK true) - - SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES PUBLIC_HEADER "${Root_HDRS}") - # Have to list out sub-directories manually: - SET_PROPERTY(SOURCE ${BroadphaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadphaseCollision) - - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/Bullet3OpenCL/premake4.lua b/thirdparty/bullet/src/Bullet3OpenCL/premake4.lua deleted file mode 100644 index 55a8613634..0000000000 --- a/thirdparty/bullet/src/Bullet3OpenCL/premake4.lua +++ /dev/null @@ -1,29 +0,0 @@ -function createProject(vendor) - hasCL = findOpenCL(vendor) - - if (hasCL) then - - project ("Bullet3OpenCL_" .. vendor) - - initOpenCL(vendor) - - kind "StaticLib" - - - includedirs { - ".",".." - } - - files { - "**.cpp", - "**.h" - } - - end -end - -createProject("clew") -createProject("AMD") -createProject("Intel") -createProject("NVIDIA") -createProject("Apple") diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt deleted file mode 100644 index 125576634f..0000000000 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(Bullet2FileLoader_SRCS - b3BulletFile.cpp - b3Chunk.cpp - b3DNA.cpp - b3File.cpp - b3Serializer.cpp -) - - -SET(Bullet2FileLoader_HDRS - b3BulletFile.h - b3Chunk.h - b3Common.h - b3Defines.h - b3DNA.h - b3File.h - b3Serializer.h - autogenerated/bullet2.h -) - -ADD_LIBRARY(Bullet2FileLoader ${Bullet2FileLoader_SRCS} ${Bullet2FileLoader_HDRS}) -if (BUILD_SHARED_LIBS) - target_link_libraries(Bullet2FileLoader Bullet3Common) -endif () -SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet2FileLoader DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS Bullet2FileLoader - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES PUBLIC_HEADER "${Bullet2FileLoader_HDRS}") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua b/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua deleted file mode 100644 index ec2f0a51ae..0000000000 --- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua +++ /dev/null @@ -1,12 +0,0 @@ - project "Bullet2FileLoader" - - kind "StaticLib" - - includedirs { - "../../../src" - } - - files { - "**.cpp", - "**.h" - }
\ No newline at end of file diff --git a/thirdparty/bullet/src/BulletCollision/CMakeLists.txt b/thirdparty/bullet/src/BulletCollision/CMakeLists.txt deleted file mode 100644 index 85c5fc8b64..0000000000 --- a/thirdparty/bullet/src/BulletCollision/CMakeLists.txt +++ /dev/null @@ -1,292 +0,0 @@ -INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) - -SET(BulletCollision_SRCS - BroadphaseCollision/btAxisSweep3.cpp - BroadphaseCollision/btBroadphaseProxy.cpp - BroadphaseCollision/btCollisionAlgorithm.cpp - BroadphaseCollision/btDbvt.cpp - BroadphaseCollision/btDbvtBroadphase.cpp - BroadphaseCollision/btDispatcher.cpp - BroadphaseCollision/btOverlappingPairCache.cpp - BroadphaseCollision/btQuantizedBvh.cpp - BroadphaseCollision/btSimpleBroadphase.cpp - CollisionDispatch/btActivatingCollisionAlgorithm.cpp - CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp - CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp - CollisionDispatch/btBoxBoxDetector.cpp - CollisionDispatch/btCollisionDispatcher.cpp - CollisionDispatch/btCollisionDispatcherMt.cpp - CollisionDispatch/btCollisionObject.cpp - CollisionDispatch/btCollisionWorld.cpp - CollisionDispatch/btCollisionWorldImporter.cpp - CollisionDispatch/btCompoundCollisionAlgorithm.cpp - CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp - CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp - CollisionDispatch/btConvexConvexAlgorithm.cpp - CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp - CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp - CollisionDispatch/btDefaultCollisionConfiguration.cpp - CollisionDispatch/btEmptyCollisionAlgorithm.cpp - CollisionDispatch/btGhostObject.cpp - CollisionDispatch/btHashedSimplePairCache.cpp - CollisionDispatch/btInternalEdgeUtility.cpp - CollisionDispatch/btInternalEdgeUtility.h - CollisionDispatch/btManifoldResult.cpp - CollisionDispatch/btSimulationIslandManager.cpp - CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp - CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp - CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp - CollisionDispatch/btUnionFind.cpp - CollisionDispatch/SphereTriangleDetector.cpp - CollisionShapes/btBoxShape.cpp - CollisionShapes/btBox2dShape.cpp - CollisionShapes/btBvhTriangleMeshShape.cpp - CollisionShapes/btCapsuleShape.cpp - CollisionShapes/btCollisionShape.cpp - CollisionShapes/btCompoundShape.cpp - CollisionShapes/btConcaveShape.cpp - CollisionShapes/btConeShape.cpp - CollisionShapes/btConvexHullShape.cpp - CollisionShapes/btConvexInternalShape.cpp - CollisionShapes/btConvexPointCloudShape.cpp - CollisionShapes/btConvexPolyhedron.cpp - CollisionShapes/btConvexShape.cpp - CollisionShapes/btConvex2dShape.cpp - CollisionShapes/btConvexTriangleMeshShape.cpp - CollisionShapes/btCylinderShape.cpp - CollisionShapes/btEmptyShape.cpp - CollisionShapes/btHeightfieldTerrainShape.cpp - CollisionShapes/btMinkowskiSumShape.cpp - CollisionShapes/btMultimaterialTriangleMeshShape.cpp - CollisionShapes/btMultiSphereShape.cpp - CollisionShapes/btOptimizedBvh.cpp - CollisionShapes/btPolyhedralConvexShape.cpp - CollisionShapes/btScaledBvhTriangleMeshShape.cpp - CollisionShapes/btShapeHull.cpp - CollisionShapes/btSphereShape.cpp - CollisionShapes/btStaticPlaneShape.cpp - CollisionShapes/btStridingMeshInterface.cpp - CollisionShapes/btTetrahedronShape.cpp - CollisionShapes/btTriangleBuffer.cpp - CollisionShapes/btTriangleCallback.cpp - CollisionShapes/btTriangleIndexVertexArray.cpp - CollisionShapes/btTriangleIndexVertexMaterialArray.cpp - CollisionShapes/btTriangleMesh.cpp - CollisionShapes/btTriangleMeshShape.cpp - CollisionShapes/btUniformScalingShape.cpp - Gimpact/btContactProcessing.cpp - Gimpact/btGenericPoolAllocator.cpp - Gimpact/btGImpactBvh.cpp - Gimpact/btGImpactCollisionAlgorithm.cpp - Gimpact/btGImpactQuantizedBvh.cpp - Gimpact/btGImpactShape.cpp - Gimpact/btTriangleShapeEx.cpp - Gimpact/gim_box_set.cpp - Gimpact/gim_contact.cpp - Gimpact/gim_memory.cpp - Gimpact/gim_tri_collision.cpp - NarrowPhaseCollision/btContinuousConvexCollision.cpp - NarrowPhaseCollision/btConvexCast.cpp - NarrowPhaseCollision/btGjkConvexCast.cpp - NarrowPhaseCollision/btGjkEpa2.cpp - NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp - NarrowPhaseCollision/btGjkPairDetector.cpp - NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp - NarrowPhaseCollision/btPersistentManifold.cpp - NarrowPhaseCollision/btRaycastCallback.cpp - NarrowPhaseCollision/btSubSimplexConvexCast.cpp - NarrowPhaseCollision/btVoronoiSimplexSolver.cpp - NarrowPhaseCollision/btPolyhedralContactClipping.cpp -) - -SET(Root_HDRS - ../btBulletCollisionCommon.h -) -SET(BroadphaseCollision_HDRS - BroadphaseCollision/btAxisSweep3Internal.h - BroadphaseCollision/btAxisSweep3.h - BroadphaseCollision/btBroadphaseInterface.h - BroadphaseCollision/btBroadphaseProxy.h - BroadphaseCollision/btCollisionAlgorithm.h - BroadphaseCollision/btDbvt.h - BroadphaseCollision/btDbvtBroadphase.h - BroadphaseCollision/btDispatcher.h - BroadphaseCollision/btOverlappingPairCache.h - BroadphaseCollision/btOverlappingPairCallback.h - BroadphaseCollision/btQuantizedBvh.h - BroadphaseCollision/btSimpleBroadphase.h -) -SET(CollisionDispatch_HDRS - CollisionDispatch/btActivatingCollisionAlgorithm.h - CollisionDispatch/btBoxBoxCollisionAlgorithm.h - CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h - CollisionDispatch/btBoxBoxDetector.h - CollisionDispatch/btCollisionConfiguration.h - CollisionDispatch/btCollisionCreateFunc.h - CollisionDispatch/btCollisionDispatcher.h - CollisionDispatch/btCollisionDispatcherMt.h - CollisionDispatch/btCollisionObject.h - CollisionDispatch/btCollisionObjectWrapper.h - CollisionDispatch/btCollisionWorld.h - CollisionDispatch/btCollisionWorldImporter.h - CollisionDispatch/btCompoundCollisionAlgorithm.h - CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h - CollisionDispatch/btConvexConcaveCollisionAlgorithm.h - CollisionDispatch/btConvexConvexAlgorithm.h - CollisionDispatch/btConvex2dConvex2dAlgorithm.h - CollisionDispatch/btConvexPlaneCollisionAlgorithm.h - CollisionDispatch/btDefaultCollisionConfiguration.h - CollisionDispatch/btEmptyCollisionAlgorithm.h - CollisionDispatch/btGhostObject.h - CollisionDispatch/btHashedSimplePairCache.h - CollisionDispatch/btManifoldResult.h - CollisionDispatch/btSimulationIslandManager.h - CollisionDispatch/btSphereBoxCollisionAlgorithm.h - CollisionDispatch/btSphereSphereCollisionAlgorithm.h - CollisionDispatch/btSphereTriangleCollisionAlgorithm.h - CollisionDispatch/btUnionFind.h - CollisionDispatch/SphereTriangleDetector.h -) -SET(CollisionShapes_HDRS - CollisionShapes/btBoxShape.h - CollisionShapes/btBox2dShape.h - CollisionShapes/btBvhTriangleMeshShape.h - CollisionShapes/btCapsuleShape.h - CollisionShapes/btCollisionMargin.h - CollisionShapes/btCollisionShape.h - CollisionShapes/btCompoundShape.h - CollisionShapes/btConcaveShape.h - CollisionShapes/btConeShape.h - CollisionShapes/btConvexHullShape.h - CollisionShapes/btConvexInternalShape.h - CollisionShapes/btConvexPointCloudShape.h - CollisionShapes/btConvexPolyhedron.h - CollisionShapes/btConvexShape.h - CollisionShapes/btConvex2dShape.h - CollisionShapes/btConvexTriangleMeshShape.h - CollisionShapes/btCylinderShape.h - CollisionShapes/btEmptyShape.h - CollisionShapes/btHeightfieldTerrainShape.h - CollisionShapes/btMaterial.h - CollisionShapes/btMinkowskiSumShape.h - CollisionShapes/btMultimaterialTriangleMeshShape.h - CollisionShapes/btMultiSphereShape.h - CollisionShapes/btOptimizedBvh.h - CollisionShapes/btPolyhedralConvexShape.h - CollisionShapes/btScaledBvhTriangleMeshShape.h - CollisionShapes/btShapeHull.h - CollisionShapes/btSphereShape.h - CollisionShapes/btStaticPlaneShape.h - CollisionShapes/btStridingMeshInterface.h - CollisionShapes/btTetrahedronShape.h - CollisionShapes/btTriangleBuffer.h - CollisionShapes/btTriangleCallback.h - CollisionShapes/btTriangleIndexVertexArray.h - CollisionShapes/btTriangleIndexVertexMaterialArray.h - CollisionShapes/btTriangleInfoMap.h - CollisionShapes/btTriangleMesh.h - CollisionShapes/btTriangleMeshShape.h - CollisionShapes/btTriangleShape.h - CollisionShapes/btUniformScalingShape.h -) -SET(Gimpact_HDRS - Gimpact/btBoxCollision.h - Gimpact/btClipPolygon.h - Gimpact/btContactProcessingStructs.h - Gimpact/btContactProcessing.h - Gimpact/btGenericPoolAllocator.h - Gimpact/btGeometryOperations.h - Gimpact/btGImpactBvhStructs.h - Gimpact/btGImpactBvh.h - Gimpact/btGImpactCollisionAlgorithm.h - Gimpact/btGImpactMassUtil.h - Gimpact/btGImpactQuantizedBvhStructs.h - Gimpact/btGImpactQuantizedBvh.h - Gimpact/btGImpactShape.h - Gimpact/btQuantization.h - Gimpact/btTriangleShapeEx.h - Gimpact/gim_array.h - Gimpact/gim_basic_geometry_operations.h - Gimpact/gim_bitset.h - Gimpact/gim_box_collision.h - Gimpact/gim_box_set.h - Gimpact/gim_clip_polygon.h - Gimpact/gim_contact.h - Gimpact/gim_geom_types.h - Gimpact/gim_geometry.h - Gimpact/gim_hash_table.h - Gimpact/gim_linear_math.h - Gimpact/gim_math.h - Gimpact/gim_memory.h - Gimpact/gim_radixsort.h - Gimpact/gim_tri_collision.h -) -SET(NarrowPhaseCollision_HDRS - NarrowPhaseCollision/btContinuousConvexCollision.h - NarrowPhaseCollision/btConvexCast.h - NarrowPhaseCollision/btConvexPenetrationDepthSolver.h - NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h - NarrowPhaseCollision/btGjkConvexCast.h - NarrowPhaseCollision/btGjkEpa2.h - NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h - NarrowPhaseCollision/btGjkPairDetector.h - NarrowPhaseCollision/btManifoldPoint.h - NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h - NarrowPhaseCollision/btPersistentManifold.h - NarrowPhaseCollision/btPointCollector.h - NarrowPhaseCollision/btRaycastCallback.h - NarrowPhaseCollision/btSimplexSolverInterface.h - NarrowPhaseCollision/btSubSimplexConvexCast.h - NarrowPhaseCollision/btVoronoiSimplexSolver.h - NarrowPhaseCollision/btPolyhedralContactClipping.h -) - -SET(BulletCollision_HDRS - ${Root_HDRS} - ${BroadphaseCollision_HDRS} - ${CollisionDispatch_HDRS} - ${CollisionShapes_HDRS} - ${Gimpact_HDRS} - ${NarrowPhaseCollision_HDRS} -) - - -ADD_LIBRARY(BulletCollision ${BulletCollision_SRCS} ${BulletCollision_HDRS}) -SET_TARGET_PROPERTIES(BulletCollision PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletCollision PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletCollision LinearMath) -ENDIF (BUILD_SHARED_LIBS) - - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #INSTALL of other files requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletCollision DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletCollision RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - INSTALL(FILES ../btBulletCollisionCommon.h -DESTINATION ${INCLUDE_INSTALL_DIR}/BulletCollision) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletCollision PROPERTIES FRAMEWORK true) - - SET_TARGET_PROPERTIES(BulletCollision PROPERTIES PUBLIC_HEADER "${Root_HDRS}") - # Have to list out sub-directories manually: - SET_PROPERTY(SOURCE ${BroadphaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadphaseCollision) - SET_PROPERTY(SOURCE ${CollisionDispatch_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionDispatch) - SET_PROPERTY(SOURCE ${CollisionShapes_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionShapes) - SET_PROPERTY(SOURCE ${Gimpact_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Gimpact) - SET_PROPERTY(SOURCE ${NarrowPhaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/NarrowPhaseCollision) - - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/BulletCollision/premake4.lua b/thirdparty/bullet/src/BulletCollision/premake4.lua deleted file mode 100644 index 70019df8f6..0000000000 --- a/thirdparty/bullet/src/BulletCollision/premake4.lua +++ /dev/null @@ -1,20 +0,0 @@ - project "BulletCollision" - - kind "StaticLib" - includedirs { - "..", - } - files { - "*.cpp", - "*.h", - "BroadphaseCollision/*.cpp", - "BroadphaseCollision/*.h", - "CollisionDispatch/*.cpp", - "CollisionDispatch/*.h", - "CollisionShapes/*.cpp", - "CollisionShapes/*.h", - "Gimpact/*.cpp", - "Gimpact/*.h", - "NarrowPhaseCollision/*.cpp", - "NarrowPhaseCollision/*.h", - } diff --git a/thirdparty/bullet/src/BulletDynamics/CMakeLists.txt b/thirdparty/bullet/src/BulletDynamics/CMakeLists.txt deleted file mode 100644 index f8a6f34baf..0000000000 --- a/thirdparty/bullet/src/BulletDynamics/CMakeLists.txt +++ /dev/null @@ -1,170 +0,0 @@ -INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) - - - -SET(BulletDynamics_SRCS - Character/btKinematicCharacterController.cpp - ConstraintSolver/btConeTwistConstraint.cpp - ConstraintSolver/btContactConstraint.cpp - ConstraintSolver/btFixedConstraint.cpp - ConstraintSolver/btGearConstraint.cpp - ConstraintSolver/btGeneric6DofConstraint.cpp - ConstraintSolver/btGeneric6DofSpringConstraint.cpp - ConstraintSolver/btGeneric6DofSpring2Constraint.cpp - ConstraintSolver/btHinge2Constraint.cpp - ConstraintSolver/btHingeConstraint.cpp - ConstraintSolver/btPoint2PointConstraint.cpp - ConstraintSolver/btSequentialImpulseConstraintSolver.cpp - ConstraintSolver/btNNCGConstraintSolver.cpp - ConstraintSolver/btSliderConstraint.cpp - ConstraintSolver/btSolve2LinearConstraint.cpp - ConstraintSolver/btTypedConstraint.cpp - ConstraintSolver/btUniversalConstraint.cpp - Dynamics/btDiscreteDynamicsWorld.cpp - Dynamics/btDiscreteDynamicsWorldMt.cpp - Dynamics/btSimulationIslandManagerMt.cpp - Dynamics/btRigidBody.cpp - Dynamics/btSimpleDynamicsWorld.cpp -# Dynamics/Bullet-C-API.cpp - Vehicle/btRaycastVehicle.cpp - Vehicle/btWheelInfo.cpp - Featherstone/btMultiBody.cpp - Featherstone/btMultiBodyConstraintSolver.cpp - Featherstone/btMultiBodyDynamicsWorld.cpp - Featherstone/btMultiBodyJointLimitConstraint.cpp - Featherstone/btMultiBodyConstraint.cpp - Featherstone/btMultiBodyPoint2Point.cpp - Featherstone/btMultiBodyFixedConstraint.cpp - Featherstone/btMultiBodySliderConstraint.cpp - Featherstone/btMultiBodyJointMotor.cpp - Featherstone/btMultiBodyGearConstraint.cpp - MLCPSolvers/btDantzigLCP.cpp - MLCPSolvers/btMLCPSolver.cpp - MLCPSolvers/btLemkeAlgorithm.cpp -) - -SET(Root_HDRS - ../btBulletDynamicsCommon.h - ../btBulletCollisionCommon.h -) -SET(ConstraintSolver_HDRS - ConstraintSolver/btConeTwistConstraint.h - ConstraintSolver/btConstraintSolver.h - ConstraintSolver/btContactConstraint.h - ConstraintSolver/btContactSolverInfo.h - ConstraintSolver/btFixedConstraint.h - ConstraintSolver/btGearConstraint.h - ConstraintSolver/btGeneric6DofConstraint.h - ConstraintSolver/btGeneric6DofSpringConstraint.h - ConstraintSolver/btGeneric6DofSpring2Constraint.h - ConstraintSolver/btHinge2Constraint.h - ConstraintSolver/btHingeConstraint.h - ConstraintSolver/btJacobianEntry.h - ConstraintSolver/btPoint2PointConstraint.h - ConstraintSolver/btSequentialImpulseConstraintSolver.h - ConstraintSolver/btNNCGConstraintSolver.h - ConstraintSolver/btSliderConstraint.h - ConstraintSolver/btSolve2LinearConstraint.h - ConstraintSolver/btSolverBody.h - ConstraintSolver/btSolverConstraint.h - ConstraintSolver/btTypedConstraint.h - ConstraintSolver/btUniversalConstraint.h -) -SET(Dynamics_HDRS - Dynamics/btActionInterface.h - Dynamics/btDiscreteDynamicsWorld.h - Dynamics/btDiscreteDynamicsWorldMt.h - Dynamics/btSimulationIslandManagerMt.h - Dynamics/btDynamicsWorld.h - Dynamics/btSimpleDynamicsWorld.h - Dynamics/btRigidBody.h -) -SET(Vehicle_HDRS - Vehicle/btRaycastVehicle.h - Vehicle/btVehicleRaycaster.h - Vehicle/btWheelInfo.h -) - -SET(Featherstone_HDRS - Featherstone/btMultiBody.h - Featherstone/btMultiBodyConstraintSolver.h - Featherstone/btMultiBodyDynamicsWorld.h - Featherstone/btMultiBodyLink.h - Featherstone/btMultiBodyLinkCollider.h - Featherstone/btMultiBodySolverConstraint.h - Featherstone/btMultiBodyConstraint.h - Featherstone/btMultiBodyJointLimitConstraint.h - Featherstone/btMultiBodyConstraint.h - Featherstone/btMultiBodyPoint2Point.h - Featherstone/btMultiBodyFixedConstraint.h - Featherstone/btMultiBodySliderConstraint.h - Featherstone/btMultiBodyJointMotor.h - Featherstone/btMultiBodyGearConstraint.h -) - -SET(MLCPSolvers_HDRS - MLCPSolvers/btDantzigLCP.h - MLCPSolvers/btDantzigSolver.h - MLCPSolvers/btMLCPSolver.h - MLCPSolvers/btMLCPSolverInterface.h - MLCPSolvers/btPATHSolver.h - MLCPSolvers/btSolveProjectedGaussSeidel.h - MLCPSolvers/btLemkeSolver.h - MLCPSolvers/btLemkeAlgorithm.h -) - -SET(Character_HDRS - Character/btCharacterControllerInterface.h - Character/btKinematicCharacterController.h -) - - - -SET(BulletDynamics_HDRS - ${Root_HDRS} - ${ConstraintSolver_HDRS} - ${Dynamics_HDRS} - ${Vehicle_HDRS} - ${Character_HDRS} - ${Featherstone_HDRS} - ${MLCPSolvers_HDRS} -) - - -ADD_LIBRARY(BulletDynamics ${BulletDynamics_SRCS} ${BulletDynamics_HDRS}) -SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletDynamics BulletCollision LinearMath) -ENDIF (BUILD_SHARED_LIBS) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletDynamics DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletDynamics RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - INSTALL(FILES ../btBulletDynamicsCommon.h -DESTINATION ${INCLUDE_INSTALL_DIR}/BulletDynamics) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES PUBLIC_HEADER "${Root_HDRS}") - # Have to list out sub-directories manually: - SET_PROPERTY(SOURCE ${ConstraintSolver_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/ConstraintSolver) - SET_PROPERTY(SOURCE ${Dynamics_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Dynamics) - SET_PROPERTY(SOURCE ${Vehicle_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Vehicle) - SET_PROPERTY(SOURCE ${Character_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Character) - SET_PROPERTY(SOURCE ${Featherstone_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Featherstone) - SET_PROPERTY(SOURCE ${MLCPSolvers_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/MLCPSolvers) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/BulletDynamics/premake4.lua b/thirdparty/bullet/src/BulletDynamics/premake4.lua deleted file mode 100644 index 32414dce3e..0000000000 --- a/thirdparty/bullet/src/BulletDynamics/premake4.lua +++ /dev/null @@ -1,21 +0,0 @@ - project "BulletDynamics" - kind "StaticLib" - includedirs { - "..", - } - files { - "Dynamics/*.cpp", - "Dynamics/*.h", - "ConstraintSolver/*.cpp", - "ConstraintSolver/*.h", - "Featherstone/*.cpp", - "Featherstone/*.h", - "MLCPSolvers/*.cpp", - "MLCPSolvers/*.h", - "Vehicle/*.cpp", - "Vehicle/*.h", - "Character/*.cpp", - "Character/*.h" - - } - diff --git a/thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt b/thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt deleted file mode 100644 index 3331c27eac..0000000000 --- a/thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt +++ /dev/null @@ -1,66 +0,0 @@ -INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src ) - -SET(BulletInverseDynamics_SRCS - IDMath.cpp - MultiBodyTree.cpp - details/MultiBodyTreeInitCache.cpp - details/MultiBodyTreeImpl.cpp -) - -SET(BulletInverseDynamicsRoot_HDRS - IDConfig.hpp - IDConfigEigen.hpp - IDMath.hpp - IDConfigBuiltin.hpp - IDErrorMessages.hpp - MultiBodyTree.hpp -) -SET(BulletInverseDynamicsDetails_HDRS - details/IDEigenInterface.hpp - details/IDMatVec.hpp - details/IDLinearMathInterface.hpp - details/MultiBodyTreeImpl.hpp - details/MultiBodyTreeInitCache.hpp -) - -SET(BulletInverseDynamics_HDRS - ${BulletInverseDynamicsRoot_HDRS} - ${BulletInverseDynamicsDetails_HDRS} -) - - -ADD_LIBRARY(BulletInverseDynamics ${BulletInverseDynamics_SRCS} ${BulletInverseDynamics_HDRS}) -SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletInverseDynamics Bullet3Common LinearMath) -ENDIF (BUILD_SHARED_LIBS) - - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #INSTALL of other files requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletInverseDynamics DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletInverseDynamics RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - INSTALL(FILES ../btBulletCollisionCommon.h -DESTINATION ${INCLUDE_INSTALL_DIR}/BulletInverseDynamics) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES FRAMEWORK true) - - SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES PUBLIC_HEADER "${BulletInverseDynamicsRoot_HDRS}") - # Have to list out sub-directories manually: - SET_PROPERTY(SOURCE ${BulletInverseDynamicsDetails_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/details) - - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/BulletInverseDynamics/premake4.lua b/thirdparty/bullet/src/BulletInverseDynamics/premake4.lua deleted file mode 100644 index 774e037b3f..0000000000 --- a/thirdparty/bullet/src/BulletInverseDynamics/premake4.lua +++ /dev/null @@ -1,12 +0,0 @@ - project "BulletInverseDynamics" - - kind "StaticLib" - includedirs { - "..", - } - files { - "IDMath.cpp", - "MultiBodyTree.cpp", - "details/MultiBodyTreeInitCache.cpp", - "details/MultiBodyTreeImpl.cpp", - } diff --git a/thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt b/thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt deleted file mode 100644 index d43df1c67b..0000000000 --- a/thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt +++ /dev/null @@ -1,69 +0,0 @@ - -INCLUDE_DIRECTORIES( -${BULLET_PHYSICS_SOURCE_DIR}/src - -) - -#SUBDIRS( Solvers ) - -SET(BulletSoftBody_SRCS - btSoftBody.cpp - btSoftBodyConcaveCollisionAlgorithm.cpp - btSoftBodyHelpers.cpp - btSoftBodyRigidBodyCollisionConfiguration.cpp - btSoftRigidCollisionAlgorithm.cpp - btSoftRigidDynamicsWorld.cpp - btSoftMultiBodyDynamicsWorld.cpp - btSoftSoftCollisionAlgorithm.cpp - btDefaultSoftBodySolver.cpp - -) - -SET(BulletSoftBody_HDRS - btSoftBody.h - btSoftBodyData.h - btSoftBodyConcaveCollisionAlgorithm.h - btSoftBodyHelpers.h - btSoftBodyRigidBodyCollisionConfiguration.h - btSoftRigidCollisionAlgorithm.h - btSoftRigidDynamicsWorld.h - btSoftMultiBodyDynamicsWorld.h - btSoftSoftCollisionAlgorithm.h - btSparseSDF.h - - btSoftBodySolvers.h - btDefaultSoftBodySolver.h - - btSoftBodySolverVertexBuffer.h -) - - - -ADD_LIBRARY(BulletSoftBody ${BulletSoftBody_SRCS} ${BulletSoftBody_HDRS}) -SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES SOVERSION ${BULLET_VERSION}) -IF (BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(BulletSoftBody BulletDynamics) -ENDIF (BUILD_SHARED_LIBS) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletSoftBody DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS BulletSoftBody RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES PUBLIC_HEADER "${BulletSoftBody_HDRS}") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/BulletSoftBody/premake4.lua b/thirdparty/bullet/src/BulletSoftBody/premake4.lua deleted file mode 100644 index ce384de2c8..0000000000 --- a/thirdparty/bullet/src/BulletSoftBody/premake4.lua +++ /dev/null @@ -1,11 +0,0 @@ - project "BulletSoftBody" - - kind "StaticLib" - - includedirs { - "..", - } - files { - "**.cpp", - "**.h" - }
\ No newline at end of file diff --git a/thirdparty/bullet/src/CMakeLists.txt b/thirdparty/bullet/src/CMakeLists.txt deleted file mode 100644 index c30125c539..0000000000 --- a/thirdparty/bullet/src/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ - -IF(BUILD_BULLET3) - SUBDIRS( Bullet3OpenCL Bullet3Serialize/Bullet2FileLoader Bullet3Dynamics Bullet3Collision Bullet3Geometry ) -ENDIF(BUILD_BULLET3) - - -SUBDIRS( BulletInverseDynamics BulletSoftBody BulletCollision BulletDynamics LinearMath Bullet3Common) - - -IF(INSTALL_LIBS) - #INSTALL of other files requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - # Don't actually need to install any common files, the frameworks include everything - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(FILES btBulletCollisionCommon.h btBulletDynamicsCommon.h DESTINATION ${INCLUDE_INSTALL_DIR}) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) -ENDIF(INSTALL_LIBS) diff --git a/thirdparty/bullet/src/LinearMath/CMakeLists.txt b/thirdparty/bullet/src/LinearMath/CMakeLists.txt deleted file mode 100644 index ede21d9a70..0000000000 --- a/thirdparty/bullet/src/LinearMath/CMakeLists.txt +++ /dev/null @@ -1,75 +0,0 @@ - -INCLUDE_DIRECTORIES( - ${BULLET_PHYSICS_SOURCE_DIR}/src -) - -SET(LinearMath_SRCS - btAlignedAllocator.cpp - btConvexHull.cpp - btConvexHullComputer.cpp - btGeometryUtil.cpp - btPolarDecomposition.cpp - btQuickprof.cpp - btSerializer.cpp - btSerializer64.cpp - btThreads.cpp - btVector3.cpp -) - -SET(LinearMath_HDRS - btAabbUtil2.h - btAlignedAllocator.h - btAlignedObjectArray.h - btConvexHull.h - btConvexHullComputer.h - btDefaultMotionState.h - btGeometryUtil.h - btGrahamScan2dConvexHull.h - btHashMap.h - btIDebugDraw.h - btList.h - btMatrix3x3.h - btMinMax.h - btMotionState.h - btPolarDecomposition.h - btPoolAllocator.h - btQuadWord.h - btQuaternion.h - btQuickprof.h - btRandom.h - btScalar.h - btSerializer.h - btStackAlloc.h - btThreads.h - btTransform.h - btTransformUtil.h - btVector3.h -) - -ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS}) -SET_TARGET_PROPERTIES(LinearMath PROPERTIES VERSION ${BULLET_VERSION}) -SET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION}) - -IF (INSTALL_LIBS) - IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) - #FILES_MATCHING requires CMake 2.6 - IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS LinearMath DESTINATION .) - ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - INSTALL(TARGETS LinearMath - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX}) - INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN -".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5) - - IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - SET_TARGET_PROPERTIES(LinearMath PROPERTIES FRAMEWORK true) - SET_TARGET_PROPERTIES(LinearMath PROPERTIES PUBLIC_HEADER "${LinearMath_HDRS}") - ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) - ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) -ENDIF (INSTALL_LIBS) diff --git a/thirdparty/bullet/src/LinearMath/premake4.lua b/thirdparty/bullet/src/LinearMath/premake4.lua deleted file mode 100644 index 524e2c3161..0000000000 --- a/thirdparty/bullet/src/LinearMath/premake4.lua +++ /dev/null @@ -1,10 +0,0 @@ - project "LinearMath" - - kind "StaticLib" - includedirs { - "..", - } - files { - "*.cpp", - "*.h" - } diff --git a/thirdparty/bullet/version.txt b/thirdparty/bullet/version.txt deleted file mode 100644 index 9a3b592267..0000000000 --- a/thirdparty/bullet/version.txt +++ /dev/null @@ -1 +0,0 @@ -GitHub Master d05ad4b (23 / October / 2017) [Bullet ~2.87]
\ No newline at end of file diff --git a/thirdparty/libogg/bitwise.c b/thirdparty/libogg/bitwise.c index 145901d185..fa2b572029 100644 --- a/thirdparty/libogg/bitwise.c +++ b/thirdparty/libogg/bitwise.c @@ -11,7 +11,7 @@ ******************************************************************** function: packing variable sized words into an octet stream - last mod: $Id: bitwise.c 19149 2014-05-27 16:26:23Z giles $ + last mod: $Id$ ********************************************************************/ diff --git a/thirdparty/libogg/framing.c b/thirdparty/libogg/framing.c index 3a2f0a6058..79fc715c8c 100644 --- a/thirdparty/libogg/framing.c +++ b/thirdparty/libogg/framing.c @@ -12,7 +12,7 @@ function: code raw packets into framed OggSquish stream and decode Ogg streams back into raw packets - last mod: $Id: framing.c 18758 2013-01-08 16:29:56Z tterribe $ + last mod: $Id$ note: The CRC code is directly derived from public domain code by Ross Williams (ross@guest.adelaide.edu.au). See docs/framing.html @@ -875,6 +875,7 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){ some segments */ if(continued){ if(os->lacing_fill<1 || + (os->lacing_vals[os->lacing_fill-1]&0xff)<255 || os->lacing_vals[os->lacing_fill-1]==0x400){ bos=0; for(;segptr<segments;segptr++){ @@ -1492,6 +1493,34 @@ const int head3_7[] = {0x4f,0x67,0x67,0x53,0,0x05, 1, 0}; +int compare_packet(const ogg_packet *op1, const ogg_packet *op2){ + if(op1->packet!=op2->packet){ + fprintf(stderr,"op1->packet != op2->packet\n"); + return(1); + } + if(op1->bytes!=op2->bytes){ + fprintf(stderr,"op1->bytes != op2->bytes\n"); + return(1); + } + if(op1->b_o_s!=op2->b_o_s){ + fprintf(stderr,"op1->b_o_s != op2->b_o_s\n"); + return(1); + } + if(op1->e_o_s!=op2->e_o_s){ + fprintf(stderr,"op1->e_o_s != op2->e_o_s\n"); + return(1); + } + if(op1->granulepos!=op2->granulepos){ + fprintf(stderr,"op1->granulepos != op2->granulepos\n"); + return(1); + } + if(op1->packetno!=op2->packetno){ + fprintf(stderr,"op1->packetno != op2->packetno\n"); + return(1); + } + return(0); +} + void test_pack(const int *pl, const int **headers, int byteskip, int pageskip, int packetskip){ unsigned char *data=_ogg_malloc(1024*1024); /* for scripted test cases only */ @@ -1600,7 +1629,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, ogg_stream_packetout(&os_de,&op_de); /* just catching them all */ /* verify peek and out match */ - if(memcmp(&op_de,&op_de2,sizeof(op_de))){ + if(compare_packet(&op_de,&op_de2)){ fprintf(stderr,"packetout != packetpeek! pos=%ld\n", depacket); exit(1); diff --git a/thirdparty/libogg/ogg/ogg.h b/thirdparty/libogg/ogg/ogg.h index cea4ebed75..7609fc24d6 100644 --- a/thirdparty/libogg/ogg/ogg.h +++ b/thirdparty/libogg/ogg/ogg.h @@ -11,7 +11,7 @@ ******************************************************************** function: toplevel libogg include - last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ + last mod: $Id$ ********************************************************************/ #ifndef _OGG_H diff --git a/thirdparty/libogg/ogg/os_types.h b/thirdparty/libogg/ogg/os_types.h index 8bf82107e5..b8f56308b5 100644 --- a/thirdparty/libogg/ogg/os_types.h +++ b/thirdparty/libogg/ogg/os_types.h @@ -11,7 +11,7 @@ ******************************************************************** function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $ + last mod: $Id$ ********************************************************************/ #ifndef _OS_TYPES_H @@ -49,23 +49,24 @@ typedef short ogg_int16_t; typedef unsigned short ogg_uint16_t; # else - /* MSVC/Borland */ - typedef __int64 ogg_int64_t; - typedef __int32 ogg_int32_t; - typedef unsigned __int32 ogg_uint32_t; - typedef __int16 ogg_int16_t; - typedef unsigned __int16 ogg_uint16_t; +# if defined(_MSC_VER) && (_MSC_VER >= 1800) /* MSVC 2013 and newer */ +# include <stdint.h> + typedef int16_t ogg_int16_t; + typedef uint16_t ogg_uint16_t; + typedef int32_t ogg_int32_t; + typedef uint32_t ogg_uint32_t; + typedef int64_t ogg_int64_t; + typedef uint64_t ogg_uint64_t; +# else + /* MSVC/Borland */ + typedef __int64 ogg_int64_t; + typedef __int32 ogg_int32_t; + typedef unsigned __int32 ogg_uint32_t; + typedef __int16 ogg_int16_t; + typedef unsigned __int16 ogg_uint16_t; +# endif # endif -#elif defined(__MACOS__) - -# include <sys/types.h> - typedef SInt16 ogg_int16_t; - typedef UInt16 ogg_uint16_t; - typedef SInt32 ogg_int32_t; - typedef UInt32 ogg_uint32_t; - typedef SInt64 ogg_int64_t; - #elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ # include <inttypes.h> diff --git a/thirdparty/openssl/LICENSE b/thirdparty/openssl/LICENSE index fb03713dd1..bdfd985a69 100644 --- a/thirdparty/openssl/LICENSE +++ b/thirdparty/openssl/LICENSE @@ -2,7 +2,7 @@ LICENSE ISSUES ============== - The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + The OpenSSL toolkit stays under a double license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit. See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL @@ -12,7 +12,7 @@ --------------- /* ==================================================================== - * Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved. + * Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/thirdparty/openssl/crypto/LPdir_win.c b/thirdparty/openssl/crypto/LPdir_win.c index 07e63fb424..4961254d9a 100644 --- a/thirdparty/openssl/crypto/LPdir_win.c +++ b/thirdparty/openssl/crypto/LPdir_win.c @@ -94,8 +94,23 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory) TCHAR *wdir = NULL; /* len_0 denotes string length *with* trailing 0 */ size_t index = 0, len_0 = strlen(extdir) + 1; - - wdir = (TCHAR *)calloc(len_0, sizeof(TCHAR)); + size_t amount; + + /* + * Size check + * The reasoning is that absolutely worst case, each byte in + * extdir will take up one TCHAR each, so the maximum size in + * bytes that we can tolerate is MAX_PATH TCHARs... not counting + * the ending NUL. + */ + if ((len_0 - 1) > MAX_PATH * sizeof(TCHAR)) { + free(*ctx); + *ctx = NULL; + errno = EINVAL; + return 0; + } + amount = len_0 * sizeof(TCHAR); + wdir = (TCHAR *)malloc(amount); if (wdir == NULL) { if (extdirbuf != NULL) { free(extdirbuf); diff --git a/thirdparty/openssl/crypto/asn1/a_bitstr.c b/thirdparty/openssl/crypto/asn1/a_bitstr.c index c429342e03..0c8bb144a0 100644 --- a/thirdparty/openssl/crypto/asn1/a_bitstr.c +++ b/thirdparty/openssl/crypto/asn1/a_bitstr.c @@ -56,6 +56,7 @@ * [including the GNU Public Licence.] */ +#include <limits.h> #include <stdio.h> #include "cryptlib.h" #include <openssl/asn1.h> @@ -136,6 +137,11 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, goto err; } + if (len > INT_MAX) { + i = ASN1_R_STRING_TOO_LONG; + goto err; + } + if ((a == NULL) || ((*a) == NULL)) { if ((ret = M_ASN1_BIT_STRING_new()) == NULL) return (NULL); diff --git a/thirdparty/openssl/crypto/asn1/a_i2d_fp.c b/thirdparty/openssl/crypto/asn1/a_i2d_fp.c index 0f56cd4e07..2e85e041e4 100644 --- a/thirdparty/openssl/crypto/asn1/a_i2d_fp.c +++ b/thirdparty/openssl/crypto/asn1/a_i2d_fp.c @@ -87,6 +87,9 @@ int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x) int i, j = 0, n, ret = 1; n = i2d(x, NULL); + if (n <= 0) + return 0; + b = (char *)OPENSSL_malloc(n); if (b == NULL) { ASN1err(ASN1_F_ASN1_I2D_BIO, ERR_R_MALLOC_FAILURE); diff --git a/thirdparty/openssl/crypto/asn1/asn1_int.h b/thirdparty/openssl/crypto/asn1/asn1_int.h new file mode 100644 index 0000000000..c9fd8b12ae --- /dev/null +++ b/thirdparty/openssl/crypto/asn1/asn1_int.h @@ -0,0 +1,63 @@ +/* asn1t.h */ +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project + * 2006. + */ +/* ==================================================================== + * Copyright (c) 2006 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * licensing@OpenSSL.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + +/* Internal ASN1 template structures and functions: not for application use */ + +void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, + int combine); diff --git a/thirdparty/openssl/crypto/asn1/tasn_fre.c b/thirdparty/openssl/crypto/asn1/tasn_fre.c index aeea4eff7a..0cf7510ff0 100644 --- a/thirdparty/openssl/crypto/asn1/tasn_fre.c +++ b/thirdparty/openssl/crypto/asn1/tasn_fre.c @@ -61,9 +61,7 @@ #include <openssl/asn1.h> #include <openssl/asn1t.h> #include <openssl/objects.h> - -static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, - int combine); +#include "asn1_int.h" /* Free up an ASN1 structure */ @@ -77,8 +75,7 @@ void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it) asn1_item_combine_free(pval, it, 0); } -static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, - int combine) +void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine) { const ASN1_TEMPLATE *tt = NULL, *seqtt; const ASN1_EXTERN_FUNCS *ef; diff --git a/thirdparty/openssl/crypto/asn1/tasn_new.c b/thirdparty/openssl/crypto/asn1/tasn_new.c index 54f459d1ed..6ba90260da 100644 --- a/thirdparty/openssl/crypto/asn1/tasn_new.c +++ b/thirdparty/openssl/crypto/asn1/tasn_new.c @@ -63,6 +63,7 @@ #include <openssl/err.h> #include <openssl/asn1t.h> #include <string.h> +#include "asn1_int.h" static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine); @@ -199,7 +200,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it, return 1; memerr2: - ASN1_item_ex_free(pval, it); + asn1_item_combine_free(pval, it, combine); memerr: ASN1err(ASN1_F_ASN1_ITEM_EX_COMBINE_NEW, ERR_R_MALLOC_FAILURE); #ifdef CRYPTO_MDEBUG @@ -209,7 +210,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it, return 0; auxerr2: - ASN1_item_ex_free(pval, it); + asn1_item_combine_free(pval, it, combine); auxerr: ASN1err(ASN1_F_ASN1_ITEM_EX_COMBINE_NEW, ASN1_R_AUX_ERROR); #ifdef CRYPTO_MDEBUG diff --git a/thirdparty/openssl/crypto/asn1/x_name.c b/thirdparty/openssl/crypto/asn1/x_name.c index 1fb7ad1cbf..aea0c2763c 100644 --- a/thirdparty/openssl/crypto/asn1/x_name.c +++ b/thirdparty/openssl/crypto/asn1/x_name.c @@ -523,19 +523,11 @@ static int i2d_name_canon(STACK_OF(STACK_OF_X509_NAME_ENTRY) * _intname, int X509_NAME_set(X509_NAME **xn, X509_NAME *name) { - X509_NAME *in; - - if (!xn || !name) - return (0); - - if (*xn != name) { - in = X509_NAME_dup(name); - if (in != NULL) { - X509_NAME_free(*xn); - *xn = in; - } - } - return (*xn != NULL); + if ((name = X509_NAME_dup(name)) == NULL) + return 0; + X509_NAME_free(*xn); + *xn = name; + return 1; } IMPLEMENT_STACK_OF(X509_NAME_ENTRY) diff --git a/thirdparty/openssl/crypto/asn1/x_pkey.c b/thirdparty/openssl/crypto/asn1/x_pkey.c index 2da23e4756..59f8553928 100644 --- a/thirdparty/openssl/crypto/asn1/x_pkey.c +++ b/thirdparty/openssl/crypto/asn1/x_pkey.c @@ -106,10 +106,14 @@ X509_PKEY *X509_PKEY_new(void) X509_PKEY *ret = NULL; ASN1_CTX c; - M_ASN1_New_Malloc(ret, X509_PKEY); + ret = OPENSSL_malloc(sizeof(X509_PKEY)); + if (ret == NULL) { + c.line = __LINE__; + goto err; + } ret->version = 0; - M_ASN1_New(ret->enc_algor, X509_ALGOR_new); - M_ASN1_New(ret->enc_pkey, M_ASN1_OCTET_STRING_new); + ret->enc_algor = X509_ALGOR_new(); + ret->enc_pkey = M_ASN1_OCTET_STRING_new(); ret->dec_pkey = NULL; ret->key_length = 0; ret->key_data = NULL; @@ -117,8 +121,15 @@ X509_PKEY *X509_PKEY_new(void) ret->cipher.cipher = NULL; memset(ret->cipher.iv, 0, EVP_MAX_IV_LENGTH); ret->references = 1; - return (ret); - M_ASN1_New_Error(ASN1_F_X509_PKEY_NEW); + if (ret->enc_algor == NULL || ret->enc_pkey == NULL) { + c.line = __LINE__; + goto err; + } + return ret; +err: + X509_PKEY_free(ret); + ASN1_MAC_H_err(ASN1_F_X509_PKEY_NEW, ERR_R_MALLOC_FAILURE, c.line); + return NULL; } void X509_PKEY_free(X509_PKEY *x) diff --git a/thirdparty/openssl/crypto/bio/b_print.c b/thirdparty/openssl/crypto/bio/b_print.c index eb3ab75934..1c82f53d5a 100644 --- a/thirdparty/openssl/crypto/bio/b_print.c +++ b/thirdparty/openssl/crypto/bio/b_print.c @@ -385,7 +385,7 @@ _dopr(char **sbuffer, if (cflags == DP_C_SHORT) { short int *num; num = va_arg(args, short int *); - *num = currlen; + *num = (short int)currlen; } else if (cflags == DP_C_LONG) { /* XXX */ long int *num; num = va_arg(args, long int *); @@ -502,7 +502,7 @@ fmtint(char **sbuffer, if (!(flags & DP_F_UNSIGNED)) { if (value < 0) { signvalue = '-'; - uvalue = -(unsigned LLONG)value; + uvalue = 0 - (unsigned LLONG)value; } else if (flags & DP_F_PLUS) signvalue = '+'; else if (flags & DP_F_SPACE) diff --git a/thirdparty/openssl/crypto/bn/bn_exp.c b/thirdparty/openssl/crypto/bn/bn_exp.c index 195a7867a4..c4b63e44ba 100644 --- a/thirdparty/openssl/crypto/bn/bn_exp.c +++ b/thirdparty/openssl/crypto/bn/bn_exp.c @@ -145,10 +145,11 @@ int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) int i, bits, ret = 0; BIGNUM *v, *rr; - if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) { + if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(a, BN_FLG_CONSTTIME) != 0) { /* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */ BNerr(BN_F_BN_EXP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); - return -1; + return 0; } BN_CTX_start(ctx); @@ -245,7 +246,9 @@ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m, if (BN_is_odd(m)) { # ifdef MONT_EXP_WORD if (a->top == 1 && !a->neg - && (BN_get_flags(p, BN_FLG_CONSTTIME) == 0)) { + && (BN_get_flags(p, BN_FLG_CONSTTIME) == 0) + && (BN_get_flags(a, BN_FLG_CONSTTIME) == 0) + && (BN_get_flags(m, BN_FLG_CONSTTIME) == 0)) { BN_ULONG A = a->d[0]; ret = BN_mod_exp_mont_word(r, A, p, m, ctx, NULL); } else @@ -277,10 +280,12 @@ int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BIGNUM *val[TABLE_SIZE]; BN_RECP_CTX recp; - if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) { + if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(a, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) { /* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */ BNerr(BN_F_BN_MOD_EXP_RECP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); - return -1; + return 0; } bits = BN_num_bits(p); @@ -411,7 +416,9 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, BIGNUM *val[TABLE_SIZE]; BN_MONT_CTX *mont = NULL; - if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) { + if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(a, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) { return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont); } @@ -1217,10 +1224,11 @@ int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p, #define BN_TO_MONTGOMERY_WORD(r, w, mont) \ (BN_set_word(r, (w)) && BN_to_montgomery(r, r, (mont), ctx)) - if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) { + if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) { /* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */ BNerr(BN_F_BN_MOD_EXP_MONT_WORD, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); - return -1; + return 0; } bn_check_top(p); @@ -1348,10 +1356,12 @@ int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, /* Table of variables obtained from 'ctx' */ BIGNUM *val[TABLE_SIZE]; - if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) { + if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(a, BN_FLG_CONSTTIME) != 0 + || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) { /* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */ BNerr(BN_F_BN_MOD_EXP_SIMPLE, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); - return -1; + return 0; } bits = BN_num_bits(p); diff --git a/thirdparty/openssl/crypto/bn/bn_lib.c b/thirdparty/openssl/crypto/bn/bn_lib.c index 10b78f5126..f9c65f9f94 100644 --- a/thirdparty/openssl/crypto/bn/bn_lib.c +++ b/thirdparty/openssl/crypto/bn/bn_lib.c @@ -524,6 +524,9 @@ BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b) memcpy(a->d, b->d, sizeof(b->d[0]) * b->top); #endif + if (BN_get_flags(b, BN_FLG_CONSTTIME) != 0) + BN_set_flags(a, BN_FLG_CONSTTIME); + a->top = b->top; a->neg = b->neg; bn_check_top(a); diff --git a/thirdparty/openssl/crypto/bn/bn_mont.c b/thirdparty/openssl/crypto/bn/bn_mont.c index be95bd55d0..3af9db870b 100644 --- a/thirdparty/openssl/crypto/bn/bn_mont.c +++ b/thirdparty/openssl/crypto/bn/bn_mont.c @@ -394,6 +394,9 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx) tmod.dmax = 2; tmod.neg = 0; + if (BN_get_flags(mod, BN_FLG_CONSTTIME) != 0) + BN_set_flags(&tmod, BN_FLG_CONSTTIME); + mont->ri = (BN_num_bits(mod) + (BN_BITS2 - 1)) / BN_BITS2 * BN_BITS2; # if defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32) diff --git a/thirdparty/openssl/crypto/bn/bn_mul.c b/thirdparty/openssl/crypto/bn/bn_mul.c index 3c618dc307..6b455a755f 100644 --- a/thirdparty/openssl/crypto/bn/bn_mul.c +++ b/thirdparty/openssl/crypto/bn/bn_mul.c @@ -1032,46 +1032,6 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx) rr->top = top; goto end; } -# if 0 - if (i == 1 && !BN_get_flags(b, BN_FLG_STATIC_DATA)) { - BIGNUM *tmp_bn = (BIGNUM *)b; - if (bn_wexpand(tmp_bn, al) == NULL) - goto err; - tmp_bn->d[bl] = 0; - bl++; - i--; - } else if (i == -1 && !BN_get_flags(a, BN_FLG_STATIC_DATA)) { - BIGNUM *tmp_bn = (BIGNUM *)a; - if (bn_wexpand(tmp_bn, bl) == NULL) - goto err; - tmp_bn->d[al] = 0; - al++; - i++; - } - if (i == 0) { - /* symmetric and > 4 */ - /* 16 or larger */ - j = BN_num_bits_word((BN_ULONG)al); - j = 1 << (j - 1); - k = j + j; - t = BN_CTX_get(ctx); - if (al == j) { /* exact multiple */ - if (bn_wexpand(t, k * 2) == NULL) - goto err; - if (bn_wexpand(rr, k * 2) == NULL) - goto err; - bn_mul_recursive(rr->d, a->d, b->d, al, t->d); - } else { - if (bn_wexpand(t, k * 4) == NULL) - goto err; - if (bn_wexpand(rr, k * 4) == NULL) - goto err; - bn_mul_part_recursive(rr->d, a->d, b->d, al - j, j, t->d); - } - rr->top = top; - goto end; - } -# endif } #endif /* BN_RECURSION */ if (bn_wexpand(rr, top) == NULL) diff --git a/thirdparty/openssl/crypto/bn/bn_x931p.c b/thirdparty/openssl/crypto/bn/bn_x931p.c index efa48bdf87..f444af3fea 100644 --- a/thirdparty/openssl/crypto/bn/bn_x931p.c +++ b/thirdparty/openssl/crypto/bn/bn_x931p.c @@ -217,6 +217,8 @@ int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx) BN_CTX_start(ctx); t = BN_CTX_get(ctx); + if (t == NULL) + goto err; for (i = 0; i < 1000; i++) { if (!BN_rand(Xq, nbits, 1, 0)) @@ -255,10 +257,12 @@ int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, int ret = 0; BN_CTX_start(ctx); - if (!Xp1) + if (Xp1 == NULL) Xp1 = BN_CTX_get(ctx); - if (!Xp2) + if (Xp2 == NULL) Xp2 = BN_CTX_get(ctx); + if (Xp1 == NULL || Xp2 == NULL) + goto error; if (!BN_rand(Xp1, 101, 0, 0)) goto error; diff --git a/thirdparty/openssl/crypto/cryptlib.c b/thirdparty/openssl/crypto/cryptlib.c index 1925428f5e..5fab45b2ec 100644 --- a/thirdparty/openssl/crypto/cryptlib.c +++ b/thirdparty/openssl/crypto/cryptlib.c @@ -469,11 +469,18 @@ void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr) } } +#ifdef OPENSSL_FIPS +extern int FIPS_crypto_threadid_set_callback(void (*func) (CRYPTO_THREADID *)); +#endif + int CRYPTO_THREADID_set_callback(void (*func) (CRYPTO_THREADID *)) { if (threadid_callback) return 0; threadid_callback = func; +#ifdef OPENSSL_FIPS + FIPS_crypto_threadid_set_callback(func); +#endif return 1; } diff --git a/thirdparty/openssl/crypto/dh/dh_kdf.c b/thirdparty/openssl/crypto/dh/dh_kdf.c index a882cb286e..8947a08731 100644 --- a/thirdparty/openssl/crypto/dh/dh_kdf.c +++ b/thirdparty/openssl/crypto/dh/dh_kdf.c @@ -51,6 +51,9 @@ * ==================================================================== */ +#include <e_os.h> + +#ifndef OPENSSL_NO_CMS #include <string.h> #include <openssl/dh.h> #include <openssl/evp.h> @@ -185,3 +188,4 @@ int DH_KDF_X9_42(unsigned char *out, size_t outlen, EVP_MD_CTX_cleanup(&mctx); return rv; } +#endif diff --git a/thirdparty/openssl/crypto/dh/dh_pmeth.c b/thirdparty/openssl/crypto/dh/dh_pmeth.c index b58e3fa86f..6452482c87 100644 --- a/thirdparty/openssl/crypto/dh/dh_pmeth.c +++ b/thirdparty/openssl/crypto/dh/dh_pmeth.c @@ -207,7 +207,11 @@ static int pkey_dh_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) case EVP_PKEY_CTRL_DH_KDF_TYPE: if (p1 == -2) return dctx->kdf_type; +#ifdef OPENSSL_NO_CMS + if (p1 != EVP_PKEY_DH_KDF_NONE) +#else if (p1 != EVP_PKEY_DH_KDF_NONE && p1 != EVP_PKEY_DH_KDF_X9_42) +#endif return -2; dctx->kdf_type = p1; return 1; @@ -448,7 +452,9 @@ static int pkey_dh_derive(EVP_PKEY_CTX *ctx, unsigned char *key, return ret; *keylen = ret; return 1; - } else if (dctx->kdf_type == EVP_PKEY_DH_KDF_X9_42) { + } +#ifndef OPENSSL_NO_CMS + else if (dctx->kdf_type == EVP_PKEY_DH_KDF_X9_42) { unsigned char *Z = NULL; size_t Zlen = 0; if (!dctx->kdf_outlen || !dctx->kdf_oid) @@ -479,6 +485,7 @@ static int pkey_dh_derive(EVP_PKEY_CTX *ctx, unsigned char *key, } return ret; } +#endif return 1; } diff --git a/thirdparty/openssl/crypto/dsa/dsa_ameth.c b/thirdparty/openssl/crypto/dsa/dsa_ameth.c index c4fa105747..e22627f851 100644 --- a/thirdparty/openssl/crypto/dsa/dsa_ameth.c +++ b/thirdparty/openssl/crypto/dsa/dsa_ameth.c @@ -133,6 +133,7 @@ static int dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) unsigned char *penc = NULL; int penclen; ASN1_STRING *str = NULL; + ASN1_OBJECT *aobj; dsa = pkey->pkey.dsa; if (pkey->save_parameters && dsa->p && dsa->q && dsa->g) { @@ -159,8 +160,11 @@ static int dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) goto err; } - if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(EVP_PKEY_DSA), - ptype, str, penc, penclen)) + aobj = OBJ_nid2obj(EVP_PKEY_DSA); + if (aobj == NULL) + goto err; + + if (X509_PUBKEY_set0_param(pk, aobj, ptype, str, penc, penclen)) return 1; err: @@ -258,6 +262,7 @@ static int dsa_priv_decode(EVP_PKEY *pkey, PKCS8_PRIV_KEY_INFO *p8) goto dsaerr; } + BN_set_flags(dsa->priv_key, BN_FLG_CONSTTIME); if (!BN_mod_exp(dsa->pub_key, dsa->g, dsa->priv_key, dsa->p, ctx)) { DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_BN_ERROR); goto dsaerr; diff --git a/thirdparty/openssl/crypto/dsa/dsa_gen.c b/thirdparty/openssl/crypto/dsa/dsa_gen.c index 1fce0f81c2..21af2e159f 100644 --- a/thirdparty/openssl/crypto/dsa/dsa_gen.c +++ b/thirdparty/openssl/crypto/dsa/dsa_gen.c @@ -482,6 +482,8 @@ int dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N, } else { p = BN_CTX_get(ctx); q = BN_CTX_get(ctx); + if (q == NULL) + goto err; } if (!BN_lshift(test, BN_value_one(), L - 1)) diff --git a/thirdparty/openssl/crypto/dsa/dsa_ossl.c b/thirdparty/openssl/crypto/dsa/dsa_ossl.c index 58013a4a13..aa10dd12f6 100644 --- a/thirdparty/openssl/crypto/dsa/dsa_ossl.c +++ b/thirdparty/openssl/crypto/dsa/dsa_ossl.c @@ -224,7 +224,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, { BN_CTX *ctx; BIGNUM k, kq, *K, *kinv = NULL, *r = NULL; + BIGNUM l, m; int ret = 0; + int q_bits; if (!dsa->p || !dsa->q || !dsa->g) { DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_MISSING_PARAMETERS); @@ -233,6 +235,8 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BN_init(&k); BN_init(&kq); + BN_init(&l); + BN_init(&m); if (ctx_in == NULL) { if ((ctx = BN_CTX_new()) == NULL) @@ -243,6 +247,13 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, if ((r = BN_new()) == NULL) goto err; + /* Preallocate space */ + q_bits = BN_num_bits(dsa->q); + if (!BN_set_bit(&k, q_bits) + || !BN_set_bit(&l, q_bits) + || !BN_set_bit(&m, q_bits)) + goto err; + /* Get random k */ do if (!BN_rand_range(&k, dsa->q)) @@ -263,24 +274,23 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, /* Compute r = (g^k mod p) mod q */ if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) { - if (!BN_copy(&kq, &k)) - goto err; - - BN_set_flags(&kq, BN_FLG_CONSTTIME); - /* * We do not want timing information to leak the length of k, so we - * compute g^k using an equivalent exponent of fixed length. (This - * is a kludge that we need because the BN_mod_exp_mont() does not - * let us specify the desired timing behaviour.) + * compute G^k using an equivalent scalar of fixed bit-length. + * + * We unconditionally perform both of these additions to prevent a + * small timing information leakage. We then choose the sum that is + * one bit longer than the modulus. + * + * TODO: revisit the BN_copy aiming for a memory access agnostic + * conditional copy. */ - - if (!BN_add(&kq, &kq, dsa->q)) + if (!BN_add(&l, &k, dsa->q) + || !BN_add(&m, &l, dsa->q) + || !BN_copy(&kq, BN_num_bits(&l) > q_bits ? &l : &m)) goto err; - if (BN_num_bits(&kq) <= BN_num_bits(dsa->q)) { - if (!BN_add(&kq, &kq, dsa->q)) - goto err; - } + + BN_set_flags(&kq, BN_FLG_CONSTTIME); K = &kq; } else { @@ -314,7 +324,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BN_CTX_free(ctx); BN_clear_free(&k); BN_clear_free(&kq); - return (ret); + BN_clear_free(&l); + BN_clear_free(&m); + return ret; } static int dsa_do_verify(const unsigned char *dgst, int dgst_len, diff --git a/thirdparty/openssl/crypto/ec/ecp_mont.c b/thirdparty/openssl/crypto/ec/ecp_mont.c index b2de7faea7..43c4330cb0 100644 --- a/thirdparty/openssl/crypto/ec/ecp_mont.c +++ b/thirdparty/openssl/crypto/ec/ecp_mont.c @@ -247,6 +247,8 @@ int ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, BN_CTX_free(new_ctx); if (mont != NULL) BN_MONT_CTX_free(mont); + if (one != NULL) + BN_free(one); return ret; } diff --git a/thirdparty/openssl/crypto/ec/ecp_nistp224.c b/thirdparty/openssl/crypto/ec/ecp_nistp224.c index d81cc9ce6b..fcd754e448 100644 --- a/thirdparty/openssl/crypto/ec/ecp_nistp224.c +++ b/thirdparty/openssl/crypto/ec/ecp_nistp224.c @@ -716,7 +716,7 @@ static limb felem_is_zero(const felem in) return (zero | two224m96p1 | two225m97p2); } -static limb felem_is_zero_int(const felem in) +static int felem_is_zero_int(const void *in) { return (int)(felem_is_zero(in) & ((limb) 1)); } @@ -1391,7 +1391,6 @@ static void make_points_affine(size_t num, felem points[ /* num */ ][3], sizeof(felem), tmp_felems, (void (*)(void *))felem_one, - (int (*)(const void *)) felem_is_zero_int, (void (*)(void *, const void *)) felem_assign, diff --git a/thirdparty/openssl/crypto/ec/ecp_nistp256.c b/thirdparty/openssl/crypto/ec/ecp_nistp256.c index 78d191aac7..1272966fff 100644 --- a/thirdparty/openssl/crypto/ec/ecp_nistp256.c +++ b/thirdparty/openssl/crypto/ec/ecp_nistp256.c @@ -977,7 +977,7 @@ static limb smallfelem_is_zero(const smallfelem small) return result; } -static int smallfelem_is_zero_int(const smallfelem small) +static int smallfelem_is_zero_int(const void *small) { return (int)(smallfelem_is_zero(small) & ((limb) 1)); } @@ -1979,7 +1979,6 @@ static void make_points_affine(size_t num, smallfelem points[][3], sizeof(smallfelem), tmp_smallfelems, (void (*)(void *))smallfelem_one, - (int (*)(const void *)) smallfelem_is_zero_int, (void (*)(void *, const void *)) smallfelem_assign, diff --git a/thirdparty/openssl/crypto/ec/ecp_nistp521.c b/thirdparty/openssl/crypto/ec/ecp_nistp521.c index c53a61bbfb..a1dc9946fd 100644 --- a/thirdparty/openssl/crypto/ec/ecp_nistp521.c +++ b/thirdparty/openssl/crypto/ec/ecp_nistp521.c @@ -871,7 +871,7 @@ static limb felem_is_zero(const felem in) return is_zero; } -static int felem_is_zero_int(const felem in) +static int felem_is_zero_int(const void *in) { return (int)(felem_is_zero(in) & ((limb) 1)); } @@ -1787,7 +1787,6 @@ static void make_points_affine(size_t num, felem points[][3], sizeof(felem), tmp_felems, (void (*)(void *))felem_one, - (int (*)(const void *)) felem_is_zero_int, (void (*)(void *, const void *)) felem_assign, diff --git a/thirdparty/openssl/crypto/ecdh/ech_lib.c b/thirdparty/openssl/crypto/ecdh/ech_lib.c index cbc21d1a27..9cc22582e4 100644 --- a/thirdparty/openssl/crypto/ecdh/ech_lib.c +++ b/thirdparty/openssl/crypto/ecdh/ech_lib.c @@ -225,9 +225,16 @@ ECDH_DATA *ecdh_check(EC_KEY *key) */ ecdh_data_free(ecdh_data); ecdh_data = (ECDH_DATA *)data; + } else if (EC_KEY_get_key_method_data(key, ecdh_data_dup, + ecdh_data_free, + ecdh_data_free) != ecdh_data) { + /* Or an out of memory error in EC_KEY_insert_key_method_data. */ + ecdh_data_free(ecdh_data); + return NULL; } - } else + } else { ecdh_data = (ECDH_DATA *)data; + } #ifdef OPENSSL_FIPS if (FIPS_mode() && !(ecdh_data->flags & ECDH_FLAG_FIPS_METHOD) && !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW)) { diff --git a/thirdparty/openssl/crypto/ecdsa/ecs_lib.c b/thirdparty/openssl/crypto/ecdsa/ecs_lib.c index 8dc1dda462..f1dd472317 100644 --- a/thirdparty/openssl/crypto/ecdsa/ecs_lib.c +++ b/thirdparty/openssl/crypto/ecdsa/ecs_lib.c @@ -203,9 +203,16 @@ ECDSA_DATA *ecdsa_check(EC_KEY *key) */ ecdsa_data_free(ecdsa_data); ecdsa_data = (ECDSA_DATA *)data; + } else if (EC_KEY_get_key_method_data(key, ecdsa_data_dup, + ecdsa_data_free, + ecdsa_data_free) != ecdsa_data) { + /* Or an out of memory error in EC_KEY_insert_key_method_data. */ + ecdsa_data_free(ecdsa_data); + return NULL; } - } else + } else { ecdsa_data = (ECDSA_DATA *)data; + } #ifdef OPENSSL_FIPS if (FIPS_mode() && !(ecdsa_data->flags & ECDSA_FLAG_FIPS_METHOD) && !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW)) { diff --git a/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c b/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c index dd769609be..16d4f59b9b 100644 --- a/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c +++ b/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c @@ -95,6 +95,7 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, EC_POINT *tmp_point = NULL; const EC_GROUP *group; int ret = 0; + int order_bits; if (eckey == NULL || (group = EC_KEY_get0_group(eckey)) == NULL) { ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP, ERR_R_PASSED_NULL_PARAMETER); @@ -126,6 +127,13 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, goto err; } + /* Preallocate space */ + order_bits = BN_num_bits(order); + if (!BN_set_bit(k, order_bits) + || !BN_set_bit(r, order_bits) + || !BN_set_bit(X, order_bits)) + goto err; + do { /* get random k */ do @@ -139,13 +147,19 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, /* * We do not want timing information to leak the length of k, so we * compute G*k using an equivalent scalar of fixed bit-length. + * + * We unconditionally perform both of these additions to prevent a + * small timing information leakage. We then choose the sum that is + * one bit longer than the order. This guarantees the code + * path used in the constant time implementations elsewhere. + * + * TODO: revisit the BN_copy aiming for a memory access agnostic + * conditional copy. */ - - if (!BN_add(k, k, order)) + if (!BN_add(r, k, order) + || !BN_add(X, r, order) + || !BN_copy(k, BN_num_bits(r) > order_bits ? r : X)) goto err; - if (BN_num_bits(k) <= BN_num_bits(order)) - if (!BN_add(k, k, order)) - goto err; /* compute r the x-coordinate of generator * k */ if (!EC_POINT_mul(group, tmp_point, k, NULL, NULL, ctx)) { diff --git a/thirdparty/openssl/crypto/engine/eng_fat.c b/thirdparty/openssl/crypto/engine/eng_fat.c index 4279dd94b1..55d3858bb1 100644 --- a/thirdparty/openssl/crypto/engine/eng_fat.c +++ b/thirdparty/openssl/crypto/engine/eng_fat.c @@ -167,6 +167,7 @@ int ENGINE_register_complete(ENGINE *e) #endif ENGINE_register_RAND(e); ENGINE_register_pkey_meths(e); + ENGINE_register_pkey_asn1_meths(e); return 1; } diff --git a/thirdparty/openssl/crypto/err/err.c b/thirdparty/openssl/crypto/err/err.c index 0b1fcfc1f1..cfe0e8083f 100644 --- a/thirdparty/openssl/crypto/err/err.c +++ b/thirdparty/openssl/crypto/err/err.c @@ -725,6 +725,8 @@ void ERR_put_error(int lib, int func, int reason, const char *file, int line) } #endif es = ERR_get_state(); + if (es == NULL) + return; es->top = (es->top + 1) % ERR_NUM_ERRORS; if (es->top == es->bottom) @@ -742,6 +744,8 @@ void ERR_clear_error(void) ERR_STATE *es; es = ERR_get_state(); + if (es == NULL) + return; for (i = 0; i < ERR_NUM_ERRORS; i++) { err_clear(es, i); @@ -806,6 +810,8 @@ static unsigned long get_error_values(int inc, int top, const char **file, unsigned long ret; es = ERR_get_state(); + if (es == NULL) + return 0; if (inc && top) { if (file) @@ -1016,7 +1022,6 @@ void ERR_remove_state(unsigned long pid) ERR_STATE *ERR_get_state(void) { - static ERR_STATE fallback; ERR_STATE *ret, tmp, *tmpp = NULL; int i; CRYPTO_THREADID tid; @@ -1030,7 +1035,7 @@ ERR_STATE *ERR_get_state(void) if (ret == NULL) { ret = (ERR_STATE *)OPENSSL_malloc(sizeof(ERR_STATE)); if (ret == NULL) - return (&fallback); + return NULL; CRYPTO_THREADID_cpy(&ret->tid, &tid); ret->top = 0; ret->bottom = 0; @@ -1042,7 +1047,7 @@ ERR_STATE *ERR_get_state(void) /* To check if insertion failed, do a get. */ if (ERRFN(thread_get_item) (ret) != ret) { ERR_STATE_free(ret); /* could not insert it */ - return (&fallback); + return NULL; } /* * If a race occured in this function and we came second, tmpp is the @@ -1066,10 +1071,10 @@ void ERR_set_error_data(char *data, int flags) int i; es = ERR_get_state(); + if (es == NULL) + return; i = es->top; - if (i == 0) - i = ERR_NUM_ERRORS - 1; err_clear_data(es, i); es->err_data[i] = data; @@ -1121,6 +1126,8 @@ int ERR_set_mark(void) ERR_STATE *es; es = ERR_get_state(); + if (es == NULL) + return 0; if (es->bottom == es->top) return 0; @@ -1133,6 +1140,8 @@ int ERR_pop_to_mark(void) ERR_STATE *es; es = ERR_get_state(); + if (es == NULL) + return 0; while (es->bottom != es->top && (es->err_flags[es->top] & ERR_FLAG_MARK) == 0) { diff --git a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c index d114710e98..b25fc6d541 100644 --- a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c +++ b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c @@ -579,12 +579,17 @@ static int aesni_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8); maxpad &= 255; - ret &= constant_time_ge(maxpad, pad); + mask = constant_time_ge(maxpad, pad); + ret &= mask; + /* + * If pad is invalid then we will fail the above test but we must + * continue anyway because we are in constant time code. However, + * we'll use the maxpad value instead of the supplied pad to make + * sure we perform well defined pointer arithmetic. + */ + pad = constant_time_select(mask, pad, maxpad); inp_len = len - (SHA_DIGEST_LENGTH + pad + 1); - mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1))); - inp_len &= mask; - ret &= (int)mask; key->aux.tls_aad[plen - 2] = inp_len >> 8; key->aux.tls_aad[plen - 1] = inp_len; diff --git a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c index 917ae0751d..9a8a2ad778 100644 --- a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c +++ b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c @@ -507,10 +507,12 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx, * to identify it and avoid stitch invocation. So that after we * establish that current CPU supports AVX, we even see if it's * either even XOP-capable Bulldozer-based or GenuineIntel one. + * But SHAEXT-capable go ahead... */ - if (OPENSSL_ia32cap_P[1] & (1 << (60 - 32)) && /* AVX? */ - ((OPENSSL_ia32cap_P[1] & (1 << (43 - 32))) /* XOP? */ - | (OPENSSL_ia32cap_P[0] & (1<<30))) && /* "Intel CPU"? */ + if (((OPENSSL_ia32cap_P[2] & (1 << 29)) || /* SHAEXT? */ + ((OPENSSL_ia32cap_P[1] & (1 << (60 - 32))) && /* AVX? */ + ((OPENSSL_ia32cap_P[1] & (1 << (43 - 32))) /* XOP? */ + | (OPENSSL_ia32cap_P[0] & (1 << 30))))) && /* "Intel CPU"? */ plen > (sha_off + iv) && (blocks = (plen - (sha_off + iv)) / SHA256_CBLOCK)) { SHA256_Update(&key->md, in + iv, sha_off); @@ -590,12 +592,17 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx, maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8); maxpad &= 255; - ret &= constant_time_ge(maxpad, pad); + mask = constant_time_ge(maxpad, pad); + ret &= mask; + /* + * If pad is invalid then we will fail the above test but we must + * continue anyway because we are in constant time code. However, + * we'll use the maxpad value instead of the supplied pad to make + * sure we perform well defined pointer arithmetic. + */ + pad = constant_time_select(mask, pad, maxpad); inp_len = len - (SHA256_DIGEST_LENGTH + pad + 1); - mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1))); - inp_len &= mask; - ret &= (int)mask; key->aux.tls_aad[plen - 2] = inp_len >> 8; key->aux.tls_aad[plen - 1] = inp_len; diff --git a/thirdparty/openssl/crypto/evp/evp_key.c b/thirdparty/openssl/crypto/evp/evp_key.c index 5be9e336f9..cdffe1c8c4 100644 --- a/thirdparty/openssl/crypto/evp/evp_key.c +++ b/thirdparty/openssl/crypto/evp/evp_key.c @@ -97,7 +97,7 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify) int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt, int verify) { - int ret; + int ret = -1; char buff[BUFSIZ]; UI *ui; @@ -105,16 +105,18 @@ int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt, prompt = prompt_string; ui = UI_new(); if (ui == NULL) - return -1; - UI_add_input_string(ui, prompt, 0, buf, min, - (len >= BUFSIZ) ? BUFSIZ - 1 : len); - if (verify) - UI_add_verify_string(ui, prompt, 0, - buff, min, (len >= BUFSIZ) ? BUFSIZ - 1 : len, - buf); + return ret; + if (UI_add_input_string(ui, prompt, 0, buf, min, + (len >= BUFSIZ) ? BUFSIZ - 1 : len) < 0 + || (verify + && UI_add_verify_string(ui, prompt, 0, buff, min, + (len >= BUFSIZ) ? BUFSIZ - 1 : len, + buf) < 0)) + goto end; ret = UI_process(ui); - UI_free(ui); OPENSSL_cleanse(buff, BUFSIZ); + end: + UI_free(ui); return ret; } diff --git a/thirdparty/openssl/crypto/evp/pmeth_lib.c b/thirdparty/openssl/crypto/evp/pmeth_lib.c index b7b7bdcd02..e50826b568 100644 --- a/thirdparty/openssl/crypto/evp/pmeth_lib.c +++ b/thirdparty/openssl/crypto/evp/pmeth_lib.c @@ -589,3 +589,170 @@ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, pmeth->ctrl = ctrl; pmeth->ctrl_str = ctrl_str; } + +void EVP_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)) +{ + *pinit = pmeth->init; +} + +void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)) +{ + *pcopy = pmeth->copy; +} + +void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)) +{ + *pcleanup = pmeth->cleanup; +} + +void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)) +{ + if (pparamgen_init) + *pparamgen_init = pmeth->paramgen_init; + if (pparamgen) + *pparamgen = pmeth->paramgen; +} + +void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)) +{ + if (pkeygen_init) + *pkeygen_init = pmeth->keygen_init; + if (pkeygen) + *pkeygen = pmeth->keygen; +} + +void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)) +{ + if (psign_init) + *psign_init = pmeth->sign_init; + if (psign) + *psign = pmeth->sign; +} + +void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)) +{ + if (pverify_init) + *pverify_init = pmeth->verify_init; + if (pverify) + *pverify = pmeth->verify; +} + +void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)) +{ + if (pverify_recover_init) + *pverify_recover_init = pmeth->verify_recover_init; + if (pverify_recover) + *pverify_recover = pmeth->verify_recover; +} + +void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)) +{ + if (psignctx_init) + *psignctx_init = pmeth->signctx_init; + if (psignctx) + *psignctx = pmeth->signctx; +} + +void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)) +{ + if (pverifyctx_init) + *pverifyctx_init = pmeth->verifyctx_init; + if (pverifyctx) + *pverifyctx = pmeth->verifyctx; +} + +void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)) +{ + if (pencrypt_init) + *pencrypt_init = pmeth->encrypt_init; + if (pencryptfn) + *pencryptfn = pmeth->encrypt; +} + +void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)) +{ + if (pdecrypt_init) + *pdecrypt_init = pmeth->decrypt_init; + if (pdecrypt) + *pdecrypt = pmeth->decrypt; +} + +void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)) +{ + if (pderive_init) + *pderive_init = pmeth->derive_init; + if (pderive) + *pderive = pmeth->derive; +} + +void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)) +{ + if (pctrl) + *pctrl = pmeth->ctrl; + if (pctrl_str) + *pctrl_str = pmeth->ctrl_str; +} diff --git a/thirdparty/openssl/crypto/ex_data.c b/thirdparty/openssl/crypto/ex_data.c index 108a1959ea..723b21b3d2 100644 --- a/thirdparty/openssl/crypto/ex_data.c +++ b/thirdparty/openssl/crypto/ex_data.c @@ -473,7 +473,14 @@ static int int_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, if (j < mx) mx = j; if (mx > 0) { - if (!CRYPTO_set_ex_data(to, mx - 1, NULL)) + /* + * Make sure the ex_data stack is at least |mx| elements long to avoid + * issues in the for loop that follows; so go get the |mx|'th element + * (if it does not exist CRYPTO_get_ex_data() returns NULL), and assign + * to itself. This is normally a no-op; but ensures the stack is the + * proper size + */ + if (!CRYPTO_set_ex_data(to, mx - 1, CRYPTO_get_ex_data(to, mx - 1))) goto skip; storage = OPENSSL_malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS *)); if (!storage) diff --git a/thirdparty/openssl/crypto/include/internal/bn_conf.h b/thirdparty/openssl/crypto/include/internal/bn_conf.h deleted file mode 100644 index 34bd8b78b4..0000000000 --- a/thirdparty/openssl/crypto/include/internal/bn_conf.h +++ /dev/null @@ -1,28 +0,0 @@ -/* WARNING: do not edit! */ -/* Generated by Makefile from crypto/include/internal/bn_conf.h.in */ -/* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#ifndef HEADER_BN_CONF_H -# define HEADER_BN_CONF_H - -/* - * The contents of this file are not used in the UEFI build, as - * both 32-bit and 64-bit builds are supported from a single run - * of the Configure script. - */ - -/* Should we define BN_DIV2W here? */ - -/* Only one for the following should be defined */ -#define SIXTY_FOUR_BIT_LONG -#undef SIXTY_FOUR_BIT -#undef THIRTY_TWO_BIT - -#endif diff --git a/thirdparty/openssl/crypto/include/internal/dso_conf.h b/thirdparty/openssl/crypto/include/internal/dso_conf.h deleted file mode 100644 index 7a52dd1f1a..0000000000 --- a/thirdparty/openssl/crypto/include/internal/dso_conf.h +++ /dev/null @@ -1,16 +0,0 @@ -/* WARNING: do not edit! */ -/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */ -/* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#ifndef HEADER_DSO_CONF_H -# define HEADER_DSO_CONF_H - -# define DSO_EXTENSION ".so" -#endif diff --git a/thirdparty/openssl/crypto/lhash/lhash.c b/thirdparty/openssl/crypto/lhash/lhash.c index f20353aea3..51bb258e74 100644 --- a/thirdparty/openssl/crypto/lhash/lhash.c +++ b/thirdparty/openssl/crypto/lhash/lhash.c @@ -101,6 +101,24 @@ #include <openssl/crypto.h> #include <openssl/lhash.h> +/* + * A hashing implementation that appears to be based on the linear hashing + * alogrithm: + * https://en.wikipedia.org/wiki/Linear_hashing + * + * Litwin, Witold (1980), "Linear hashing: A new tool for file and table + * addressing", Proc. 6th Conference on Very Large Databases: 212-223 + * http://hackthology.com/pdfs/Litwin-1980-Linear_Hashing.pdf + * + * From the wikipedia article "Linear hashing is used in the BDB Berkeley + * database system, which in turn is used by many software systems such as + * OpenLDAP, using a C implementation derived from the CACM article and first + * published on the Usenet in 1988 by Esmond Pitt." + * + * The CACM paper is available here: + * https://pdfs.semanticscholar.org/ff4d/1c5deca6269cc316bfd952172284dbf610ee.pdf + */ + const char lh_version[] = "lhash" OPENSSL_VERSION_PTEXT; #undef MIN_NODES @@ -108,7 +126,7 @@ const char lh_version[] = "lhash" OPENSSL_VERSION_PTEXT; #define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */ #define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */ -static void expand(_LHASH *lh); +static int expand(_LHASH *lh); static void contract(_LHASH *lh); static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash); @@ -182,8 +200,9 @@ void *lh_insert(_LHASH *lh, void *data) void *ret; lh->error = 0; - if (lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)) - expand(lh); + if (lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes) + && !expand(lh)) + return NULL; rn = getrn(lh, data, &hash); @@ -300,19 +319,37 @@ void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg) doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg); } -static void expand(_LHASH *lh) +static int expand(_LHASH *lh) { LHASH_NODE **n, **n1, **n2, *np; - unsigned int p, i, j; - unsigned long hash, nni; + unsigned int p, pmax, nni, j; + unsigned long hash; + + nni = lh->num_alloc_nodes; + p = lh->p; + pmax = lh->pmax; + if (p + 1 >= pmax) { + j = nni * 2; + n = OPENSSL_realloc(lh->b, (int)(sizeof(LHASH_NODE *) * j)); + if (n == NULL) { + lh->error++; + return 0; + } + lh->b = n; + memset(n + nni, 0, sizeof(*n) * (j - nni)); + lh->pmax = nni; + lh->num_alloc_nodes = j; + lh->num_expand_reallocs++; + lh->p = 0; + } else { + lh->p++; + } lh->num_nodes++; lh->num_expands++; - p = (int)lh->p++; n1 = &(lh->b[p]); - n2 = &(lh->b[p + (int)lh->pmax]); - *n2 = NULL; /* 27/07/92 - eay - undefined pointer bug */ - nni = lh->num_alloc_nodes; + n2 = &(lh->b[p + pmax]); + *n2 = NULL; for (np = *n1; np != NULL;) { #ifndef OPENSSL_NO_HASH_COMP @@ -330,25 +367,7 @@ static void expand(_LHASH *lh) np = *n1; } - if ((lh->p) >= lh->pmax) { - j = (int)lh->num_alloc_nodes * 2; - n = (LHASH_NODE **)OPENSSL_realloc(lh->b, - (int)(sizeof(LHASH_NODE *) * j)); - if (n == NULL) { - lh->error++; - lh->num_nodes--; - lh->p = 0; - return; - } - /* else */ - for (i = (int)lh->num_alloc_nodes; i < j; i++) /* 26/02/92 eay */ - n[i] = NULL; /* 02/03/92 eay */ - lh->pmax = lh->num_alloc_nodes; - lh->num_alloc_nodes = j; - lh->num_expand_reallocs++; - lh->p = 0; - lh->b = n; - } + return 1; } static void contract(_LHASH *lh) diff --git a/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c b/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c index d4a257c33b..7a7d06094e 100644 --- a/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c +++ b/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c @@ -118,6 +118,8 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, goto end; } } + } else if (certs != NULL) { + untrusted = certs; } else { untrusted = bs->certs; } diff --git a/thirdparty/openssl/crypto/pem/pem_lib.c b/thirdparty/openssl/crypto/pem/pem_lib.c index c82b3c0ae2..865976bf8c 100644 --- a/thirdparty/openssl/crypto/pem/pem_lib.c +++ b/thirdparty/openssl/crypto/pem/pem_lib.c @@ -536,7 +536,8 @@ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher) ((c >= '0') && (c <= '9')))) break; #else - if (!(isupper(c) || (c == '-') || isdigit(c))) + if (!(isupper((unsigned char)c) || (c == '-') + || isdigit((unsigned char)c))) break; #endif header++; diff --git a/thirdparty/openssl/crypto/pem/pem_pk8.c b/thirdparty/openssl/crypto/pem/pem_pk8.c index 5747c7366e..daf210fde0 100644 --- a/thirdparty/openssl/crypto/pem/pem_pk8.c +++ b/thirdparty/openssl/crypto/pem/pem_pk8.c @@ -178,6 +178,7 @@ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, } p8inf = PKCS8_decrypt(p8, psbuf, klen); X509_SIG_free(p8); + OPENSSL_cleanse(psbuf, klen); if (!p8inf) return NULL; ret = EVP_PKCS82PKEY(p8inf); diff --git a/thirdparty/openssl/crypto/pem/pem_pkey.c b/thirdparty/openssl/crypto/pem/pem_pkey.c index 04d6319a22..e8b3a1b92c 100644 --- a/thirdparty/openssl/crypto/pem/pem_pkey.c +++ b/thirdparty/openssl/crypto/pem/pem_pkey.c @@ -120,6 +120,7 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, } p8inf = PKCS8_decrypt(p8, psbuf, klen); X509_SIG_free(p8); + OPENSSL_cleanse(psbuf, klen); if (!p8inf) goto p8err; ret = EVP_PKCS82PKEY(p8inf); diff --git a/thirdparty/openssl/crypto/pkcs12/p12_kiss.c b/thirdparty/openssl/crypto/pkcs12/p12_kiss.c index 9aa3c90c4e..1841f78f69 100644 --- a/thirdparty/openssl/crypto/pkcs12/p12_kiss.c +++ b/thirdparty/openssl/crypto/pkcs12/p12_kiss.c @@ -84,6 +84,12 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, { STACK_OF(X509) *ocerts = NULL; X509 *x = NULL; + + if (pkey) + *pkey = NULL; + if (cert) + *cert = NULL; + /* Check for NULL PKCS12 structure */ if (!p12) { @@ -92,11 +98,6 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, return 0; } - if (pkey) - *pkey = NULL; - if (cert) - *cert = NULL; - /* Check the mac */ /* @@ -125,7 +126,7 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, if (!ocerts) { PKCS12err(PKCS12_F_PKCS12_PARSE, ERR_R_MALLOC_FAILURE); - return 0; + goto err; } if (!parse_pk12(p12, pass, -1, pkey, ocerts)) { @@ -163,10 +164,14 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, err: - if (pkey && *pkey) + if (pkey) { EVP_PKEY_free(*pkey); - if (cert && *cert) + *pkey = NULL; + } + if (cert) { X509_free(*cert); + *cert = NULL; + } if (x) X509_free(x); if (ocerts) diff --git a/thirdparty/openssl/crypto/rand/rand_win.c b/thirdparty/openssl/crypto/rand/rand_win.c index cb4093128d..bc2a7d201d 100644 --- a/thirdparty/openssl/crypto/rand/rand_win.c +++ b/thirdparty/openssl/crypto/rand/rand_win.c @@ -198,6 +198,8 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE); # endif /* 1 */ # endif /* !OPENSSL_SYS_WINCE */ +#define NOTTOOLONG(start) ((GetTickCount() - (start)) < MAXDELAY) + #if !defined(UWP_ENABLED) // -- GODOT -- int RAND_poll(void) { @@ -469,9 +471,7 @@ int RAND_poll(void) do RAND_add(&hentry, hentry.dwSize, 5); while (heap_next(&hentry) - && (!good - || (GetTickCount() - starttime) < - MAXDELAY) + && (!good || NOTTOOLONG(starttime)) && --entrycnt > 0); } } @@ -483,8 +483,7 @@ int RAND_poll(void) ex_cnt_limit--; } } while (heaplist_next(handle, &hlist) - && (!good - || (GetTickCount() - starttime) < MAXDELAY) + && (!good || NOTTOOLONG(starttime)) && ex_cnt_limit > 0); } # else @@ -499,11 +498,11 @@ int RAND_poll(void) do RAND_add(&hentry, hentry.dwSize, 5); while (heap_next(&hentry) + && (!good || NOTTOOLONG(starttime)) && --entrycnt > 0); } } while (heaplist_next(handle, &hlist) - && (!good - || (GetTickCount() - starttime) < MAXDELAY)); + && (!good || NOTTOOLONG(starttime))); } # endif @@ -521,8 +520,7 @@ int RAND_poll(void) do RAND_add(&p, p.dwSize, 9); while (process_next(handle, &p) - && (!good - || (GetTickCount() - starttime) < MAXDELAY)); + && (!good || NOTTOOLONG(starttime))); /* thread walking */ /* @@ -536,8 +534,7 @@ int RAND_poll(void) do RAND_add(&t, t.dwSize, 6); while (thread_next(handle, &t) - && (!good - || (GetTickCount() - starttime) < MAXDELAY)); + && (!good || NOTTOOLONG(starttime))); /* module walking */ /* @@ -551,8 +548,7 @@ int RAND_poll(void) do RAND_add(&m, m.dwSize, 9); while (module_next(handle, &m) - && (!good - || (GetTickCount() - starttime) < MAXDELAY)); + && (!good || NOTTOOLONG(starttime))); if (close_snap) close_snap(handle); else @@ -713,14 +709,13 @@ static void readscreen(void) hBitmap = CreateCompatibleBitmap(hScrDC, w, n); /* Get bitmap properties */ - GetObject(hBitmap, sizeof(BITMAP), (LPSTR) & bm); - size = (unsigned int)bm.bmWidthBytes * bm.bmHeight * bm.bmPlanes; - - bi.biSize = sizeof(BITMAPINFOHEADER); + GetObject(hBitmap, sizeof(bm), (LPSTR)&bm); + size = (unsigned int)4 * bm.bmHeight * bm.bmWidth; + bi.biSize = sizeof(bi); bi.biWidth = bm.bmWidth; bi.biHeight = bm.bmHeight; - bi.biPlanes = bm.bmPlanes; - bi.biBitCount = bm.bmBitsPixel; + bi.biPlanes = 1; + bi.biBitCount = 32; bi.biCompression = BI_RGB; bi.biSizeImage = 0; bi.biXPelsPerMeter = 0; @@ -736,7 +731,7 @@ static void readscreen(void) /* Copy the bits of the current line range into the buffer */ GetDIBits(hScrDC, hBitmap, y, n, - bmbits, (BITMAPINFO *) & bi, DIB_RGB_COLORS); + bmbits, (LPBITMAPINFO)&bi, DIB_RGB_COLORS); /* Get the hash of the bitmap */ MD(bmbits, size, md); diff --git a/thirdparty/openssl/crypto/rsa/rsa_ameth.c b/thirdparty/openssl/crypto/rsa/rsa_ameth.c index 951e1d5ca3..ddead3d744 100644 --- a/thirdparty/openssl/crypto/rsa/rsa_ameth.c +++ b/thirdparty/openssl/crypto/rsa/rsa_ameth.c @@ -768,6 +768,7 @@ static int rsa_item_sign(EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn, return 2; } +#ifndef OPENSSL_NO_CMS static RSA_OAEP_PARAMS *rsa_oaep_decode(const X509_ALGOR *alg, X509_ALGOR **pmaskHash) { @@ -791,7 +792,6 @@ static RSA_OAEP_PARAMS *rsa_oaep_decode(const X509_ALGOR *alg, return pss; } -#ifndef OPENSSL_NO_CMS static int rsa_cms_decrypt(CMS_RecipientInfo *ri) { EVP_PKEY_CTX *pkctx; diff --git a/thirdparty/openssl/crypto/rsa/rsa_gen.c b/thirdparty/openssl/crypto/rsa/rsa_gen.c index 082c8da2ef..a85493d609 100644 --- a/thirdparty/openssl/crypto/rsa/rsa_gen.c +++ b/thirdparty/openssl/crypto/rsa/rsa_gen.c @@ -110,6 +110,16 @@ static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, int bitsp, bitsq, ok = -1, n = 0; BN_CTX *ctx = NULL; + /* + * When generating ridiculously small keys, we can get stuck + * continually regenerating the same prime values. + */ + if (bits < 16) { + ok = 0; /* we set our own err */ + RSAerr(RSA_F_RSA_BUILTIN_KEYGEN, RSA_R_KEY_SIZE_TOO_SMALL); + goto err; + } + ctx = BN_CTX_new(); if (ctx == NULL) goto err; @@ -161,21 +171,10 @@ static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, if (!BN_GENCB_call(cb, 3, 0)) goto err; for (;;) { - /* - * When generating ridiculously small keys, we can get stuck - * continually regenerating the same prime values. Check for this and - * bail if it happens 3 times. - */ - unsigned int degenerate = 0; do { if (!BN_generate_prime_ex(rsa->q, bitsq, 0, NULL, NULL, cb)) goto err; - } while ((BN_cmp(rsa->p, rsa->q) == 0) && (++degenerate < 3)); - if (degenerate == 3) { - ok = 0; /* we set our own err */ - RSAerr(RSA_F_RSA_BUILTIN_KEYGEN, RSA_R_KEY_SIZE_TOO_SMALL); - goto err; - } + } while (BN_cmp(rsa->p, rsa->q) == 0); if (!BN_sub(r2, rsa->q, BN_value_one())) goto err; if (!BN_gcd(r1, r2, rsa->e, ctx)) diff --git a/thirdparty/openssl/crypto/rsa/rsa_oaep.c b/thirdparty/openssl/crypto/rsa/rsa_oaep.c index 19d28c6f0e..9a01b4afc1 100644 --- a/thirdparty/openssl/crypto/rsa/rsa_oaep.c +++ b/thirdparty/openssl/crypto/rsa/rsa_oaep.c @@ -237,10 +237,14 @@ int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1, RSA_R_OAEP_DECODING_ERROR); cleanup: - if (db != NULL) + if (db != NULL) { + OPENSSL_cleanse(db, dblen); OPENSSL_free(db); - if (em != NULL) + } + if (em != NULL) { + OPENSSL_cleanse(em, num); OPENSSL_free(em); + } return mlen; } diff --git a/thirdparty/openssl/crypto/rsa/rsa_pk1.c b/thirdparty/openssl/crypto/rsa/rsa_pk1.c index efa1fd3e99..50397c335a 100644 --- a/thirdparty/openssl/crypto/rsa/rsa_pk1.c +++ b/thirdparty/openssl/crypto/rsa/rsa_pk1.c @@ -255,8 +255,6 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, * We can't continue in constant-time because we need to copy the result * and we cannot fake its length. This unavoidably leaks timing * information at the API boundary. - * TODO(emilia): this could be addressed at the call site, - * see BoringSSL commit 0aa0767340baf925bda4804882aab0cb974b2d26. */ if (!good) { mlen = -1; @@ -266,8 +264,10 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, memcpy(to, em + msg_index, mlen); err: - if (em != NULL) + if (em != NULL) { + OPENSSL_cleanse(em, num); OPENSSL_free(em); + } if (mlen == -1) RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2, RSA_R_PKCS_DECODING_ERROR); diff --git a/thirdparty/openssl/crypto/rsa/rsa_pmeth.c b/thirdparty/openssl/crypto/rsa/rsa_pmeth.c index 8896e2e977..00e730ffa9 100644 --- a/thirdparty/openssl/crypto/rsa/rsa_pmeth.c +++ b/thirdparty/openssl/crypto/rsa/rsa_pmeth.c @@ -180,27 +180,25 @@ static void pkey_rsa_cleanup(EVP_PKEY_CTX *ctx) * FIPS mode. */ -static int pkey_fips_check_ctx(EVP_PKEY_CTX *ctx) +static int pkey_fips_check_rsa(const RSA *rsa, const EVP_MD **pmd, + const EVP_MD **pmgf1md) { - RSA_PKEY_CTX *rctx = ctx->data; - RSA *rsa = ctx->pkey->pkey.rsa; int rv = -1; + if (!FIPS_mode()) return 0; if (rsa->flags & RSA_FLAG_NON_FIPS_ALLOW) rv = 0; if (!(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) && rv) return -1; - if (rctx->md) { - const EVP_MD *fmd; - fmd = FIPS_get_digestbynid(EVP_MD_type(rctx->md)); - if (!fmd || !(fmd->flags & EVP_MD_FLAG_FIPS)) + if (*pmd != NULL) { + *pmd = FIPS_get_digestbynid(EVP_MD_type(*pmd)); + if (*pmd == NULL || !((*pmd)->flags & EVP_MD_FLAG_FIPS)) return rv; } - if (rctx->mgf1md && !(rctx->mgf1md->flags & EVP_MD_FLAG_FIPS)) { - const EVP_MD *fmd; - fmd = FIPS_get_digestbynid(EVP_MD_type(rctx->mgf1md)); - if (!fmd || !(fmd->flags & EVP_MD_FLAG_FIPS)) + if (*pmgf1md != NULL) { + *pmgf1md = FIPS_get_digestbynid(EVP_MD_type(*pmgf1md)); + if (*pmgf1md == NULL || !((*pmgf1md)->flags & EVP_MD_FLAG_FIPS)) return rv; } return 1; @@ -214,27 +212,27 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, int ret; RSA_PKEY_CTX *rctx = ctx->data; RSA *rsa = ctx->pkey->pkey.rsa; + const EVP_MD *md = rctx->md; + const EVP_MD *mgf1md = rctx->mgf1md; #ifdef OPENSSL_FIPS - ret = pkey_fips_check_ctx(ctx); + ret = pkey_fips_check_rsa(rsa, &md, &mgf1md); if (ret < 0) { RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); return -1; } #endif - if (rctx->md) { - if (tbslen != (size_t)EVP_MD_size(rctx->md)) { + if (md != NULL) { + if (tbslen != (size_t)EVP_MD_size(md)) { RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_INVALID_DIGEST_LENGTH); return -1; } #ifdef OPENSSL_FIPS if (ret > 0) { unsigned int slen; - ret = FIPS_rsa_sign_digest(rsa, tbs, tbslen, rctx->md, - rctx->pad_mode, - rctx->saltlen, - rctx->mgf1md, sig, &slen); + ret = FIPS_rsa_sign_digest(rsa, tbs, tbslen, md, rctx->pad_mode, + rctx->saltlen, mgf1md, sig, &slen); if (ret > 0) *siglen = slen; else @@ -243,12 +241,12 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, } #endif - if (EVP_MD_type(rctx->md) == NID_mdc2) { + if (EVP_MD_type(md) == NID_mdc2) { unsigned int sltmp; if (rctx->pad_mode != RSA_PKCS1_PADDING) return -1; - ret = RSA_sign_ASN1_OCTET_STRING(NID_mdc2, - tbs, tbslen, sig, &sltmp, rsa); + ret = RSA_sign_ASN1_OCTET_STRING(NID_mdc2, tbs, tbslen, sig, &sltmp, + rsa); if (ret <= 0) return ret; @@ -263,23 +261,20 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, return -1; } memcpy(rctx->tbuf, tbs, tbslen); - rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_type(rctx->md)); + rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_type(md)); ret = RSA_private_encrypt(tbslen + 1, rctx->tbuf, sig, rsa, RSA_X931_PADDING); } else if (rctx->pad_mode == RSA_PKCS1_PADDING) { unsigned int sltmp; - ret = RSA_sign(EVP_MD_type(rctx->md), - tbs, tbslen, sig, &sltmp, rsa); + ret = RSA_sign(EVP_MD_type(md), tbs, tbslen, sig, &sltmp, rsa); if (ret <= 0) return ret; ret = sltmp; } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) { if (!setup_tbuf(rctx, ctx)) return -1; - if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa, - rctx->tbuf, tbs, - rctx->md, rctx->mgf1md, - rctx->saltlen)) + if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa, rctx->tbuf, tbs, + md, mgf1md, rctx->saltlen)) return -1; ret = RSA_private_encrypt(RSA_size(rsa), rctx->tbuf, sig, rsa, RSA_NO_PADDING); @@ -348,32 +343,31 @@ static int pkey_rsa_verify(EVP_PKEY_CTX *ctx, { RSA_PKEY_CTX *rctx = ctx->data; RSA *rsa = ctx->pkey->pkey.rsa; + const EVP_MD *md = rctx->md; + const EVP_MD *mgf1md = rctx->mgf1md; size_t rslen; + #ifdef OPENSSL_FIPS - int rv; - rv = pkey_fips_check_ctx(ctx); + int rv = pkey_fips_check_rsa(rsa, &md, &mgf1md); + if (rv < 0) { RSAerr(RSA_F_PKEY_RSA_VERIFY, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); return -1; } #endif - if (rctx->md) { + if (md != NULL) { #ifdef OPENSSL_FIPS if (rv > 0) { - return FIPS_rsa_verify_digest(rsa, - tbs, tbslen, - rctx->md, - rctx->pad_mode, - rctx->saltlen, - rctx->mgf1md, sig, siglen); + return FIPS_rsa_verify_digest(rsa, tbs, tbslen, md, rctx->pad_mode, + rctx->saltlen, mgf1md, sig, siglen); } #endif if (rctx->pad_mode == RSA_PKCS1_PADDING) - return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen, + return RSA_verify(EVP_MD_type(md), tbs, tbslen, sig, siglen, rsa); - if (tbslen != (size_t)EVP_MD_size(rctx->md)) { + if (tbslen != (size_t)EVP_MD_size(md)) { RSAerr(RSA_F_PKEY_RSA_VERIFY, RSA_R_INVALID_DIGEST_LENGTH); return -1; } @@ -388,8 +382,7 @@ static int pkey_rsa_verify(EVP_PKEY_CTX *ctx, rsa, RSA_NO_PADDING); if (ret <= 0) return 0; - ret = RSA_verify_PKCS1_PSS_mgf1(rsa, tbs, - rctx->md, rctx->mgf1md, + ret = RSA_verify_PKCS1_PSS_mgf1(rsa, tbs, md, mgf1md, rctx->tbuf, rctx->saltlen); if (ret <= 0) return 0; diff --git a/thirdparty/openssl/crypto/ui/ui_lib.c b/thirdparty/openssl/crypto/ui/ui_lib.c index 643ae59343..03ef981cf9 100644 --- a/thirdparty/openssl/crypto/ui/ui_lib.c +++ b/thirdparty/openssl/crypto/ui/ui_lib.c @@ -520,6 +520,7 @@ int UI_process(UI *ui) } } } + err: if (ui->meth->ui_close_session != NULL && ui->meth->ui_close_session(ui) <= 0) diff --git a/thirdparty/openssl/crypto/whrlpool/wp_dgst.c b/thirdparty/openssl/crypto/whrlpool/wp_dgst.c index 807d1c49b2..96d042f585 100644 --- a/thirdparty/openssl/crypto/whrlpool/wp_dgst.c +++ b/thirdparty/openssl/crypto/whrlpool/wp_dgst.c @@ -166,7 +166,7 @@ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *_inp, size_t bits) goto reconsider; } else #endif - if (bits >= 8) { + if (bits > 8) { b = ((inp[0] << inpgap) | (inp[1] >> (8 - inpgap))); b &= 0xff; if (bitrem) @@ -183,7 +183,7 @@ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *_inp, size_t bits) } if (bitrem) c->data[byteoff] = b << (8 - bitrem); - } else { /* remaining less than 8 bits */ + } else { /* remaining less than or equal to 8 bits */ b = (inp[0] << inpgap) & 0xff; if (bitrem) diff --git a/thirdparty/openssl/crypto/x509/by_dir.c b/thirdparty/openssl/crypto/x509/by_dir.c index bbc3189381..6f0209a275 100644 --- a/thirdparty/openssl/crypto/x509/by_dir.c +++ b/thirdparty/openssl/crypto/x509/by_dir.c @@ -402,6 +402,7 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, if (!hent) { hent = OPENSSL_malloc(sizeof(BY_DIR_HASH)); if (hent == NULL) { + CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE); X509err(X509_F_GET_CERT_BY_SUBJECT, ERR_R_MALLOC_FAILURE); goto finish; } diff --git a/thirdparty/openssl/crypto/x509/by_file.c b/thirdparty/openssl/crypto/x509/by_file.c index 43a073003d..82ce4e8d87 100644 --- a/thirdparty/openssl/crypto/x509/by_file.c +++ b/thirdparty/openssl/crypto/x509/by_file.c @@ -92,12 +92,12 @@ static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl, char **ret) { int ok = 0; - char *file; + const char *file; switch (cmd) { case X509_L_FILE_LOAD: if (argl == X509_FILETYPE_DEFAULT) { - file = (char *)getenv(X509_get_default_cert_file_env()); + file = getenv(X509_get_default_cert_file_env()); if (file) ok = (X509_load_cert_crl_file(ctx, file, X509_FILETYPE_PEM) != 0); @@ -140,7 +140,7 @@ int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type) if (type == X509_FILETYPE_PEM) { for (;;) { - x = PEM_read_bio_X509_AUX(in, NULL, NULL, NULL); + x = PEM_read_bio_X509_AUX(in, NULL, NULL, ""); if (x == NULL) { if ((ERR_GET_REASON(ERR_peek_last_error()) == PEM_R_NO_START_LINE) && (count > 0)) { @@ -199,7 +199,7 @@ int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type) if (type == X509_FILETYPE_PEM) { for (;;) { - x = PEM_read_bio_X509_CRL(in, NULL, NULL, NULL); + x = PEM_read_bio_X509_CRL(in, NULL, NULL, ""); if (x == NULL) { if ((ERR_GET_REASON(ERR_peek_last_error()) == PEM_R_NO_START_LINE) && (count > 0)) { @@ -253,7 +253,7 @@ int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type) X509err(X509_F_X509_LOAD_CERT_CRL_FILE, ERR_R_SYS_LIB); return 0; } - inf = PEM_X509_INFO_read_bio(in, NULL, NULL, NULL); + inf = PEM_X509_INFO_read_bio(in, NULL, NULL, ""); BIO_free(in); if (!inf) { X509err(X509_F_X509_LOAD_CERT_CRL_FILE, ERR_R_PEM_LIB); diff --git a/thirdparty/openssl/crypto/x509v3/pcy_tree.c b/thirdparty/openssl/crypto/x509v3/pcy_tree.c index 09b8691c86..03c9533bcc 100644 --- a/thirdparty/openssl/crypto/x509v3/pcy_tree.c +++ b/thirdparty/openssl/crypto/x509v3/pcy_tree.c @@ -732,6 +732,7 @@ int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags) { int ret; + int calc_ret; X509_POLICY_TREE *tree = NULL; STACK_OF(X509_POLICY_NODE) *nodes, *auth_nodes = NULL; *ptree = NULL; @@ -800,17 +801,20 @@ int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, /* Tree is not empty: continue */ - ret = tree_calculate_authority_set(tree, &auth_nodes); + calc_ret = tree_calculate_authority_set(tree, &auth_nodes); - if (!ret) + if (!calc_ret) goto error; - if (!tree_calculate_user_set(tree, policy_oids, auth_nodes)) - goto error; + ret = tree_calculate_user_set(tree, policy_oids, auth_nodes); - if (ret == 2) + if (calc_ret == 2) sk_X509_POLICY_NODE_free(auth_nodes); + if (!ret) + goto error; + + if (tree) *ptree = tree; diff --git a/thirdparty/openssl/crypto/x509v3/v3_addr.c b/thirdparty/openssl/crypto/x509v3/v3_addr.c index 1290dec9bb..af080a04f2 100644 --- a/thirdparty/openssl/crypto/x509v3/v3_addr.c +++ b/thirdparty/openssl/crypto/x509v3/v3_addr.c @@ -130,10 +130,12 @@ static int length_from_afi(const unsigned afi) */ unsigned int v3_addr_get_afi(const IPAddressFamily *f) { - return ((f != NULL && - f->addressFamily != NULL && f->addressFamily->data != NULL) - ? ((f->addressFamily->data[0] << 8) | (f->addressFamily->data[1])) - : 0); + if (f == NULL + || f->addressFamily == NULL + || f->addressFamily->data == NULL + || f->addressFamily->length < 2) + return 0; + return (f->addressFamily->data[0] << 8) | f->addressFamily->data[1]; } /* diff --git a/thirdparty/openssl/crypto/x509v3/v3_genn.c b/thirdparty/openssl/crypto/x509v3/v3_genn.c index 7f40bfabe0..9bb01ee38e 100644 --- a/thirdparty/openssl/crypto/x509v3/v3_genn.c +++ b/thirdparty/openssl/crypto/x509v3/v3_genn.c @@ -231,6 +231,7 @@ int GENERAL_NAME_set0_othername(GENERAL_NAME *gen, oth = OTHERNAME_new(); if (!oth) return 0; + ASN1_TYPE_free(oth->value); oth->type_id = oid; oth->value = value; GENERAL_NAME_set0_value(gen, GEN_OTHERNAME, oth); diff --git a/thirdparty/openssl/crypto/x509v3/v3_lib.c b/thirdparty/openssl/crypto/x509v3/v3_lib.c index 8350429aaf..1112802483 100644 --- a/thirdparty/openssl/crypto/x509v3/v3_lib.c +++ b/thirdparty/openssl/crypto/x509v3/v3_lib.c @@ -286,9 +286,9 @@ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags) { - int extidx = -1; - int errcode; - X509_EXTENSION *ext, *extmp; + int errcode, extidx = -1; + X509_EXTENSION *ext = NULL, *extmp; + STACK_OF(X509_EXTENSION) *ret = NULL; unsigned long ext_op = flags & X509V3_ADD_OP_MASK; /* @@ -347,13 +347,21 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, return 1; } - if (!*x && !(*x = sk_X509_EXTENSION_new_null())) - return -1; - if (!sk_X509_EXTENSION_push(*x, ext)) - return -1; + if ((ret = *x) == NULL + && (ret = sk_X509_EXTENSION_new_null()) == NULL) + goto m_fail; + if (!sk_X509_EXTENSION_push(ret, ext)) + goto m_fail; + *x = ret; return 1; + m_fail: + if (ret != *x) + sk_X509_EXTENSION_free(ret); + X509_EXTENSION_free(ext); + return -1; + err: if (!(flags & X509V3_ADD_SILENT)) X509V3err(X509V3_F_X509V3_ADD1_I2D, errcode); diff --git a/thirdparty/openssl/crypto/x509v3/v3_ncons.c b/thirdparty/openssl/crypto/x509v3/v3_ncons.c index 2855269668..1184091ccf 100644 --- a/thirdparty/openssl/crypto/x509v3/v3_ncons.c +++ b/thirdparty/openssl/crypto/x509v3/v3_ncons.c @@ -107,6 +107,47 @@ ASN1_SEQUENCE(NAME_CONSTRAINTS) = { IMPLEMENT_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE) IMPLEMENT_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS) +/* + * We cannot use strncasecmp here because that applies locale specific rules. + * For example in Turkish 'I' is not the uppercase character for 'i'. We need to + * do a simple ASCII case comparison ignoring the locale (that is why we use + * numeric constants below). + */ +static int ia5ncasecmp(const char *s1, const char *s2, size_t n) +{ + for (; n > 0; n--, s1++, s2++) { + if (*s1 != *s2) { + unsigned char c1 = (unsigned char)*s1, c2 = (unsigned char)*s2; + + /* Convert to lower case */ + if (c1 >= 0x41 /* A */ && c1 <= 0x5A /* Z */) + c1 += 0x20; + if (c2 >= 0x41 /* A */ && c2 <= 0x5A /* Z */) + c2 += 0x20; + + if (c1 == c2) + continue; + + if (c1 < c2) + return -1; + + /* c1 > c2 */ + return 1; + } else if (*s1 == 0) { + /* If we get here we know that *s2 == 0 too */ + return 0; + } + } + + return 0; +} + +static int ia5casecmp(const char *s1, const char *s2) +{ + /* No portable definition of SIZE_MAX, so we use (size_t)(-1) instead */ + return ia5ncasecmp(s1, s2, (size_t)(-1)); +} + static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) { @@ -384,7 +425,7 @@ static int nc_dns(ASN1_IA5STRING *dns, ASN1_IA5STRING *base) return X509_V_ERR_PERMITTED_VIOLATION; } - if (strcasecmp(baseptr, dnsptr)) + if (ia5casecmp(baseptr, dnsptr)) return X509_V_ERR_PERMITTED_VIOLATION; return X509_V_OK; @@ -404,7 +445,7 @@ static int nc_email(ASN1_IA5STRING *eml, ASN1_IA5STRING *base) if (!baseat && (*baseptr == '.')) { if (eml->length > base->length) { emlptr += eml->length - base->length; - if (!strcasecmp(baseptr, emlptr)) + if (ia5casecmp(baseptr, emlptr) == 0) return X509_V_OK; } return X509_V_ERR_PERMITTED_VIOLATION; @@ -425,7 +466,7 @@ static int nc_email(ASN1_IA5STRING *eml, ASN1_IA5STRING *base) } emlptr = emlat + 1; /* Just have hostname left to match: case insensitive */ - if (strcasecmp(baseptr, emlptr)) + if (ia5casecmp(baseptr, emlptr)) return X509_V_ERR_PERMITTED_VIOLATION; return X509_V_OK; @@ -464,14 +505,14 @@ static int nc_uri(ASN1_IA5STRING *uri, ASN1_IA5STRING *base) if (*baseptr == '.') { if (hostlen > base->length) { p = hostptr + hostlen - base->length; - if (!strncasecmp(p, baseptr, base->length)) + if (ia5ncasecmp(p, baseptr, base->length) == 0) return X509_V_OK; } return X509_V_ERR_PERMITTED_VIOLATION; } if ((base->length != (int)hostlen) - || strncasecmp(hostptr, baseptr, hostlen)) + || ia5ncasecmp(hostptr, baseptr, hostlen)) return X509_V_ERR_PERMITTED_VIOLATION; return X509_V_OK; diff --git a/thirdparty/openssl/crypto/x509v3/v3_scts.c b/thirdparty/openssl/crypto/x509v3/v3_scts.c index 0b7c68180e..87a6ae1da9 100644 --- a/thirdparty/openssl/crypto/x509v3/v3_scts.c +++ b/thirdparty/openssl/crypto/x509v3/v3_scts.c @@ -156,7 +156,7 @@ static void timestamp_print(BIO *out, SCT_TIMESTAMP timestamp) gen = ASN1_GENERALIZEDTIME_new(); ASN1_GENERALIZEDTIME_adj(gen, (time_t)0, (int)(timestamp / 86400000), - (timestamp % 86400000) / 1000); + (int)(timestamp % 86400000) / 1000); /* * Note GeneralizedTime from ASN1_GENERALIZETIME_adj is always 15 * characters long with a final Z. Update it with fractional seconds. diff --git a/thirdparty/openssl/openssl/dh.h b/thirdparty/openssl/openssl/dh.h index a228c7a7a4..80b28fb39d 100644 --- a/thirdparty/openssl/openssl/dh.h +++ b/thirdparty/openssl/openssl/dh.h @@ -257,11 +257,13 @@ DH *DH_get_1024_160(void); DH *DH_get_2048_224(void); DH *DH_get_2048_256(void); +# ifndef OPENSSL_NO_CMS /* RFC2631 KDF */ int DH_KDF_X9_42(unsigned char *out, size_t outlen, const unsigned char *Z, size_t Zlen, ASN1_OBJECT *key_oid, const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); +# endif # define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ diff --git a/thirdparty/openssl/openssl/evp.h b/thirdparty/openssl/openssl/evp.h index d258ef870a..cf1de15e6d 100644 --- a/thirdparty/openssl/openssl/evp.h +++ b/thirdparty/openssl/openssl/evp.h @@ -1363,6 +1363,98 @@ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, const char *type, const char *value)); +void EVP_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + void EVP_add_alg_module(void); /* BEGIN ERROR CODES */ diff --git a/thirdparty/openssl/openssl/opensslv.h b/thirdparty/openssl/openssl/opensslv.h index 825a330abc..baee2d0865 100644 --- a/thirdparty/openssl/openssl/opensslv.h +++ b/thirdparty/openssl/openssl/opensslv.h @@ -30,11 +30,11 @@ extern "C" { * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for * major minor fix final patch/beta) */ -# define OPENSSL_VERSION_NUMBER 0x100020cfL +# define OPENSSL_VERSION_NUMBER 0x100020efL # ifdef OPENSSL_FIPS -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2l-fips 25 May 2017" +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2n-fips 7 Dec 2017" # else -# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2l 25 May 2017" +# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2n 7 Dec 2017" # endif # define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT diff --git a/thirdparty/openssl/openssl/ssl.h b/thirdparty/openssl/openssl/ssl.h index 90aeb0ce4e..3cf96a239b 100644 --- a/thirdparty/openssl/openssl/ssl.h +++ b/thirdparty/openssl/openssl/ssl.h @@ -1727,7 +1727,7 @@ extern "C" { # define SSL_ST_BEFORE 0x4000 # define SSL_ST_OK 0x03 # define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT) -# define SSL_ST_ERR 0x05 +# define SSL_ST_ERR (0x05|SSL_ST_INIT) # define SSL_CB_LOOP 0x01 # define SSL_CB_EXIT 0x02 diff --git a/thirdparty/openssl/openssl/symhacks.h b/thirdparty/openssl/openssl/symhacks.h index 239fa4fb1b..3001957988 100644 --- a/thirdparty/openssl/openssl/symhacks.h +++ b/thirdparty/openssl/openssl/symhacks.h @@ -280,6 +280,8 @@ # define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf # undef EVP_PKEY_meth_set_verify_recover # define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover +# undef EVP_PKEY_meth_get_verify_recover +# define EVP_PKEY_meth_get_verify_recover EVP_PKEY_meth_get_vrfy_recover /* Hack some long EC names */ # undef EC_GROUP_set_point_conversion_form diff --git a/thirdparty/openssl/openssl/tls1.h b/thirdparty/openssl/openssl/tls1.h index 7e237d0631..dd1d8c109e 100644 --- a/thirdparty/openssl/openssl/tls1.h +++ b/thirdparty/openssl/openssl/tls1.h @@ -317,7 +317,7 @@ int SSL_get_servername_type(const SSL *s); */ int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, const char *label, size_t llen, - const unsigned char *p, size_t plen, + const unsigned char *context, size_t contextlen, int use_context); int SSL_get_sigalgs(SSL *s, int idx, diff --git a/thirdparty/openssl/patches/uwp_fix.patch b/thirdparty/openssl/patches/uwp_fix.patch index 54aeb1f80d..89f6790c85 100644 --- a/thirdparty/openssl/patches/uwp_fix.patch +++ b/thirdparty/openssl/patches/uwp_fix.patch @@ -1,5 +1,5 @@ diff --git a/thirdparty/openssl/crypto/rand/rand_win.c b/thirdparty/openssl/crypto/rand/rand_win.c -index 06670ae01..cb4093128 100644 +index b4be3097e..bc2a7d201 100644 --- a/thirdparty/openssl/crypto/rand/rand_win.c +++ b/thirdparty/openssl/crypto/rand/rand_win.c @@ -118,8 +118,10 @@ @@ -22,15 +22,15 @@ index 06670ae01..cb4093128 100644 typedef BOOL(WINAPI *CRYPTACQUIRECONTEXTW) (HCRYPTPROV *, LPCWSTR, LPCWSTR, DWORD, DWORD); typedef BOOL(WINAPI *CRYPTGENRANDOM) (HCRYPTPROV, DWORD, BYTE *); -@@ -196,6 +198,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE); - # endif /* 1 */ - # endif /* !OPENSSL_SYS_WINCE */ +@@ -198,6 +200,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE); + + #define NOTTOOLONG(start) ((GetTickCount() - (start)) < MAXDELAY) +#if !defined(UWP_ENABLED) // -- GODOT -- int RAND_poll(void) { MEMORYSTATUS m; -@@ -580,6 +583,8 @@ int RAND_poll(void) +@@ -576,6 +579,8 @@ int RAND_poll(void) return (1); } @@ -39,7 +39,7 @@ index 06670ae01..cb4093128 100644 int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam) { double add_entropy = 0; -@@ -682,7 +687,7 @@ static void readtimer(void) +@@ -678,7 +683,7 @@ static void readtimer(void) static void readscreen(void) { diff --git a/thirdparty/openssl/ssl/s23_clnt.c b/thirdparty/openssl/ssl/s23_clnt.c index b80d1fd8ce..add8c9916c 100644 --- a/thirdparty/openssl/ssl/s23_clnt.c +++ b/thirdparty/openssl/ssl/s23_clnt.c @@ -735,7 +735,37 @@ static int ssl23_get_server_hello(SSL *s) s->version = TLS1_2_VERSION; s->method = TLSv1_2_client_method(); } else { + /* + * Unrecognised version, we'll send a protocol version alert using + * our preferred version. + */ + switch(s->client_version) { + default: + /* + * Shouldn't happen + * Fall through + */ + case TLS1_2_VERSION: + s->version = TLS1_2_VERSION; + s->method = TLSv1_2_client_method(); + break; + case TLS1_1_VERSION: + s->version = TLS1_1_VERSION; + s->method = TLSv1_1_client_method(); + break; + case TLS1_VERSION: + s->version = TLS1_VERSION; + s->method = TLSv1_client_method(); + break; +#ifndef OPENSSL_NO_SSL3 + case SSL3_VERSION: + s->version = SSL3_VERSION; + s->method = SSLv3_client_method(); + break; +#endif + } SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, SSL_R_UNSUPPORTED_PROTOCOL); + ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_PROTOCOL_VERSION); goto err; } diff --git a/thirdparty/openssl/ssl/s3_pkt.c b/thirdparty/openssl/ssl/s3_pkt.c index 0290c991d8..b914568430 100644 --- a/thirdparty/openssl/ssl/s3_pkt.c +++ b/thirdparty/openssl/ssl/s3_pkt.c @@ -1324,10 +1324,16 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) } #ifndef OPENSSL_NO_HEARTBEATS else if (rr->type == TLS1_RT_HEARTBEAT) { - tls1_process_heartbeat(s); + i = tls1_process_heartbeat(s); + + if (i < 0) + return i; - /* Exit and notify application to read again */ rr->length = 0; + if (s->mode & SSL_MODE_AUTO_RETRY) + goto start; + + /* Exit and notify application to read again */ s->rwstate = SSL_READING; BIO_clear_retry_flags(SSL_get_rbio(s)); BIO_set_retry_read(SSL_get_rbio(s)); @@ -1427,7 +1433,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) (s->s3->handshake_fragment_len >= 4) && (s->s3->handshake_fragment[0] == SSL3_MT_CLIENT_HELLO) && (s->session != NULL) && (s->session->cipher != NULL) && - !(s->ctx->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)) { + !(s->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)) { /* * s->s3->handshake_fragment_len = 0; */ diff --git a/thirdparty/openssl/ssl/s3_srvr.c b/thirdparty/openssl/ssl/s3_srvr.c index ba17f1b562..0fb4845d44 100644 --- a/thirdparty/openssl/ssl/s3_srvr.c +++ b/thirdparty/openssl/ssl/s3_srvr.c @@ -2202,7 +2202,7 @@ int ssl3_get_client_key_exchange(SSL *s) unsigned char rand_premaster_secret[SSL_MAX_MASTER_KEY_LENGTH]; int decrypt_len; unsigned char decrypt_good, version_good; - size_t j; + size_t j, padding_len; /* FIX THIS UP EAY EAY EAY EAY */ if (s->s3->tmp.use_rsa_tmp) { @@ -2270,16 +2270,38 @@ int ssl3_get_client_key_exchange(SSL *s) if (RAND_bytes(rand_premaster_secret, sizeof(rand_premaster_secret)) <= 0) goto err; + + /* + * Decrypt with no padding. PKCS#1 padding will be removed as part of + * the timing-sensitive code below. + */ decrypt_len = - RSA_private_decrypt((int)n, p, p, rsa, RSA_PKCS1_PADDING); - ERR_clear_error(); + RSA_private_decrypt((int)n, p, p, rsa, RSA_NO_PADDING); + if (decrypt_len < 0) + goto err; + + /* Check the padding. See RFC 3447, section 7.2.2. */ /* - * decrypt_len should be SSL_MAX_MASTER_KEY_LENGTH. decrypt_good will - * be 0xff if so and zero otherwise. + * The smallest padded premaster is 11 bytes of overhead. Small keys + * are publicly invalid, so this may return immediately. This ensures + * PS is at least 8 bytes. */ - decrypt_good = - constant_time_eq_int_8(decrypt_len, SSL_MAX_MASTER_KEY_LENGTH); + if (decrypt_len < 11 + SSL_MAX_MASTER_KEY_LENGTH) { + al = SSL_AD_DECRYPT_ERROR; + SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, + SSL_R_DECRYPTION_FAILED); + goto f_err; + } + + padding_len = decrypt_len - SSL_MAX_MASTER_KEY_LENGTH; + decrypt_good = constant_time_eq_int_8(p[0], 0) & + constant_time_eq_int_8(p[1], 2); + for (j = 2; j < padding_len - 1; j++) { + decrypt_good &= ~constant_time_is_zero_8(p[j]); + } + decrypt_good &= constant_time_is_zero_8(p[padding_len - 1]); + p += padding_len; /* * If the version in the decrypted pre-master secret is correct then diff --git a/thirdparty/openssl/ssl/ssl_ciph.c b/thirdparty/openssl/ssl/ssl_ciph.c index 40021329a9..ccdf00fa1b 100644 --- a/thirdparty/openssl/ssl/ssl_ciph.c +++ b/thirdparty/openssl/ssl/ssl_ciph.c @@ -1205,7 +1205,7 @@ static int ssl_cipher_process_rulestr(const char *rule_str, ((ch >= '0') && (ch <= '9')) || ((ch >= 'a') && (ch <= 'z')) || (ch == '-') || (ch == '.')) #else - while (isalnum(ch) || (ch == '-') || (ch == '.')) + while (isalnum((unsigned char)ch) || (ch == '-') || (ch == '.')) #endif { ch = *(++l); diff --git a/thirdparty/openssl/ssl/ssl_lib.c b/thirdparty/openssl/ssl/ssl_lib.c index 24be376c9f..3539f4b8d2 100644 --- a/thirdparty/openssl/ssl/ssl_lib.c +++ b/thirdparty/openssl/ssl/ssl_lib.c @@ -1825,15 +1825,15 @@ void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, const char *label, size_t llen, - const unsigned char *p, size_t plen, + const unsigned char *context, size_t contextlen, int use_context) { if (s->version < TLS1_VERSION && s->version != DTLS1_BAD_VER) return -1; return s->method->ssl3_enc->export_keying_material(s, out, olen, label, - llen, p, plen, - use_context); + llen, context, + contextlen, use_context); } static unsigned long ssl_session_hash(const SSL_SESSION *a) @@ -3180,6 +3180,7 @@ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx) #endif ssl->cert = ssl_cert_dup(ctx->cert); if (ocert) { + int i; /* Preserve any already negotiated parameters */ if (ssl->server) { ssl->cert->peer_sigalgs = ocert->peer_sigalgs; @@ -3189,6 +3190,9 @@ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx) ssl->cert->ciphers_rawlen = ocert->ciphers_rawlen; ocert->ciphers_raw = NULL; } + for (i = 0; i < SSL_PKEY_NUM; i++) { + ssl->cert->pkeys[i].digest = ocert->pkeys[i].digest; + } #ifndef OPENSSL_NO_TLSEXT ssl->cert->alpn_proposed = ocert->alpn_proposed; ssl->cert->alpn_proposed_len = ocert->alpn_proposed_len; diff --git a/thirdparty/openssl/ssl/ssl_sess.c b/thirdparty/openssl/ssl/ssl_sess.c index f50f514212..23dd3e7a01 100644 --- a/thirdparty/openssl/ssl/ssl_sess.c +++ b/thirdparty/openssl/ssl/ssl_sess.c @@ -261,7 +261,6 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket) #ifndef OPENSSL_NO_SRP dest->srp_username = NULL; #endif - memset(&dest->ex_data, 0, sizeof(dest->ex_data)); /* We deliberately don't copy the prev and next pointers */ dest->prev = NULL; @@ -275,6 +274,9 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket) if (src->peer != NULL) CRYPTO_add(&src->peer->references, 1, CRYPTO_LOCK_X509); + if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, dest, &dest->ex_data)) + goto err; + #ifndef OPENSSL_NO_PSK if (src->psk_identity_hint) { dest->psk_identity_hint = BUF_strdup(src->psk_identity_hint); @@ -325,7 +327,7 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket) } # endif - if (ticket != 0) { + if (ticket != 0 && src->tlsext_tick != NULL) { dest->tlsext_tick = BUF_memdup(src->tlsext_tick, src->tlsext_ticklen); if(dest->tlsext_tick == NULL) goto err; diff --git a/thirdparty/openssl/ssl/t1_lib.c b/thirdparty/openssl/ssl/t1_lib.c index 6587e8bb68..1a4387b78e 100644 --- a/thirdparty/openssl/ssl/t1_lib.c +++ b/thirdparty/openssl/ssl/t1_lib.c @@ -1916,7 +1916,7 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf, s2n(TLSEXT_TYPE_application_layer_protocol_negotiation, ret); s2n(3 + len, ret); s2n(1 + len, ret); - *ret++ = len; + *ret++ = (unsigned char)len; memcpy(ret, selected, len); ret += len; } diff --git a/thirdparty/thekla_atlas/godot-changes.patch b/thirdparty/thekla_atlas/godot-changes.patch new file mode 100644 index 0000000000..0e56403336 --- /dev/null +++ b/thirdparty/thekla_atlas/godot-changes.patch @@ -0,0 +1,154 @@ +diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp +index 5ce452c..11e635d 100644 +--- a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp ++++ b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp +@@ -142,9 +142,11 @@ AtlasPacker::AtlasPacker(Atlas * atlas) : m_atlas(atlas), m_bitmap(256, 256) + { + m_width = 0; + m_height = 0; +- +- m_debug_bitmap.allocate(256, 256); +- m_debug_bitmap.fill(Color32(0,0,0,0)); ++ ++ // -- GODOT start -- ++ //m_debug_bitmap.allocate(256, 256); ++ //m_debug_bitmap.fill(Color32(0,0,0,0)); ++ // -- GODOT end -- + } + + AtlasPacker::~AtlasPacker() +@@ -465,7 +467,11 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned + nvDebug("origin: %f %f\n", origin.x, origin.y); + nvDebug("majorAxis: %f %f\n", majorAxis.x, majorAxis.y); + nvDebug("minorAxis: %f %f\n", minorAxis.x, minorAxis.y); +- nvDebugBreak(); ++ // -- GODOT start -- ++ //nvDebugBreak(); ++ m_atlas->setFailed(); ++ return; ++ // -- GODOT end -- + } + //nvCheck(tmp.x >= 0 && tmp.y >= 0); + +@@ -597,8 +603,10 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned + m_bitmap.clearAll(); + if (approximateExtent > m_bitmap.width()) { + m_bitmap.resize(approximateExtent, approximateExtent, false); +- m_debug_bitmap.resize(approximateExtent, approximateExtent); +- m_debug_bitmap.fill(Color32(0,0,0,0)); ++ // -- GODOT start -- ++ //m_debug_bitmap.resize(approximateExtent, approximateExtent); ++ //m_debug_bitmap.fill(Color32(0,0,0,0)); ++ // -- GODOT end -- + } + + +@@ -680,20 +688,24 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned + { + //nvDebug("Resize bitmap (%d, %d).\n", nextPowerOfTwo(w), nextPowerOfTwo(h)); + m_bitmap.resize(nextPowerOfTwo(U32(w)), nextPowerOfTwo(U32(h)), false); +- m_debug_bitmap.resize(nextPowerOfTwo(U32(w)), nextPowerOfTwo(U32(h))); ++ // -- GODOT start -- ++ //m_debug_bitmap.resize(nextPowerOfTwo(U32(w)), nextPowerOfTwo(U32(h))); ++ // -- GODOT end -- + } + + //nvDebug("Add chart at (%d, %d).\n", best_x, best_y); + + addChart(&chart_bitmap, w, h, best_x, best_y, best_r, /*debugOutput=*/NULL); + ++ // -- GODOT start -- + // IC: Output chart again to debug bitmap. +- if (chart->isVertexMapped()) { ++ /*if (chart->isVertexMapped()) { + addChart(&chart_bitmap, w, h, best_x, best_y, best_r, &m_debug_bitmap); + } + else { + addChart(chart, w, h, best_x, best_y, best_r, &m_debug_bitmap); +- } ++ }*/ ++ // -- GODOT end -- + + //float best_angle = 2 * PI * best_r; + +@@ -842,8 +854,10 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned + nvCheck(isAligned(m_width, 4)); + nvCheck(isAligned(m_height, 4)); + +- m_debug_bitmap.resize(m_width, m_height); +- m_debug_bitmap.setFormat(Image::Format_ARGB); ++ // -- GODOT start -- ++ //m_debug_bitmap.resize(m_width, m_height); ++ //m_debug_bitmap.setFormat(Image::Format_ARGB); ++ // -- GODOT end -- + + #if DEBUG_OUTPUT + //outputDebugBitmap("debug_packer_final.tga", m_bitmap, w, h); +diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h +index 2d305f3..845dbfb 100644 +--- a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h ++++ b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h +@@ -48,7 +48,9 @@ namespace nv + + Atlas * m_atlas; + BitMap m_bitmap; +- Image m_debug_bitmap; ++ // -- GODOT start -- ++ //Image m_debug_bitmap; ++ // -- GODOT end -- + RadixSort m_radix; + + uint m_width; +diff --git a/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp b/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp +index d6f0acc..de1953d 100644 +--- a/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp ++++ b/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp +@@ -2,6 +2,9 @@ + #include "thekla_atlas.h" + + #include <cfloat> ++// -- GODOT start -- ++#include <stdio.h> ++// -- GODOT end -- + + #include "nvmesh/halfedge/Edge.h" + #include "nvmesh/halfedge/Mesh.h" +@@ -112,6 +115,8 @@ static Atlas_Output_Mesh * mesh_atlas_to_output(const HalfEdge::Mesh * mesh, con + output->index_count = face_count * 3; + output->index_array = new int[face_count * 3]; + ++ // -- GODOT start -- ++ int face_ofs = 0; + // Set face indices. + for (int f = 0; f < face_count; f++) { + uint c = charts->faceChartAt(f); +@@ -121,14 +126,26 @@ static Atlas_Output_Mesh * mesh_atlas_to_output(const HalfEdge::Mesh * mesh, con + const Chart * chart = charts->chartAt(c); + nvDebugCheck(chart->faceAt(i) == f); + ++ if (i >= chart->chartMesh()->faceCount()) { ++ printf("WARNING: Faces may be missing in the final vertex, which could not be packed\n"); ++ continue; ++ } ++ + const HalfEdge::Face * face = chart->chartMesh()->faceAt(i); + const HalfEdge::Edge * edge = face->edge; + +- output->index_array[3*f+0] = vertexOffset + edge->vertex->id; +- output->index_array[3*f+1] = vertexOffset + edge->next->vertex->id; +- output->index_array[3*f+2] = vertexOffset + edge->next->next->vertex->id; ++ //output->index_array[3*f+0] = vertexOffset + edge->vertex->id; ++ //output->index_array[3*f+1] = vertexOffset + edge->next->vertex->id; ++ //output->index_array[3*f+2] = vertexOffset + edge->next->next->vertex->id; ++ output->index_array[3 * face_ofs + 0] = vertexOffset + edge->vertex->id; ++ output->index_array[3 * face_ofs + 1] = vertexOffset + edge->next->vertex->id; ++ output->index_array[3 * face_ofs + 2] = vertexOffset + edge->next->next->vertex->id; ++ face_ofs++; + } + ++ output->index_count = face_ofs * 3; ++ // -- GODOT end -- ++ + *error = Atlas_Error_Success; + output->atlas_width = w; + output->atlas_height = h; diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp index fd37b8c59c..11e635db17 100644 --- a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp +++ b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp @@ -467,7 +467,11 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned nvDebug("origin: %f %f\n", origin.x, origin.y); nvDebug("majorAxis: %f %f\n", majorAxis.x, majorAxis.y); nvDebug("minorAxis: %f %f\n", minorAxis.x, minorAxis.y); - nvDebugBreak(); + // -- GODOT start -- + //nvDebugBreak(); + m_atlas->setFailed(); + return; + // -- GODOT end -- } //nvCheck(tmp.x >= 0 && tmp.y >= 0); diff --git a/thirdparty/tinyexr/tinyexr.h b/thirdparty/tinyexr/tinyexr.h index 606c19756a..107c22ffb3 100644 --- a/thirdparty/tinyexr/tinyexr.h +++ b/thirdparty/tinyexr/tinyexr.h @@ -410,8 +410,8 @@ extern int LoadDeepEXR(DeepImage *out_image, const char *filename, // Returns negative value and may set error string in `err` when there's an // error extern int LoadEXRFromMemory(float **out_rgba, int *width, int *height, - const unsigned char *memory, size_t size, - const char **err); + const unsigned char *memory, size_t size, + const char **err); #ifdef __cplusplus } @@ -444,7 +444,8 @@ extern int LoadEXRFromMemory(float **out_rgba, int *width, int *height, #if TINYEXR_USE_MINIZ #else -// Issue #46. Please include your own zlib-compatible API header before including `tinyexr.h` +// Issue #46. Please include your own zlib-compatible API header before +// including `tinyexr.h` //#include "zlib.h" #endif @@ -488,6 +489,12 @@ namespace miniz { #if __has_warning("-Wcomma") #pragma clang diagnostic ignored "-Wcomma" #endif +#if __has_warning("-Wmacro-redefined") +#pragma clang diagnostic ignored "-Wmacro-redefined" +#endif +#if __has_warning("-Wcast-qual") +#pragma clang diagnostic ignored "-Wcast-qual" +#endif #endif /* miniz.c v1.15 - public domain deflate/inflate, zlib-subset, ZIP @@ -6887,8 +6894,6 @@ void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, #ifdef _MSC_VER #pragma warning(pop) #endif - - } #else @@ -7079,11 +7084,18 @@ static FP16 float_to_half_full(FP32 f) { // #define IMF_B44_COMPRESSION 6 // #define IMF_B44A_COMPRESSION 7 -static const char *ReadString(std::string *s, const char *ptr) { +static const char *ReadString(std::string *s, const char *ptr, size_t len) { // Read untile NULL(\0). const char *p = ptr; const char *q = ptr; - while ((*q) != 0) q++; + while ((size_t(q - ptr) < len) && (*q) != 0) { + q++; + } + + if (size_t(q - ptr) >= len) { + (*s) = std::string(); + return NULL; + } (*s) = std::string(p, q); @@ -7120,6 +7132,10 @@ static bool ReadAttribute(std::string *name, std::string *type, memcpy(&data_len, marker, sizeof(uint32_t)); tinyexr::swap4(reinterpret_cast<unsigned int *>(&data_len)); + if (data_len == 0) { + return false; + } + marker += sizeof(uint32_t); size -= sizeof(uint32_t); @@ -7210,7 +7226,7 @@ typedef struct { } } HeaderInfo; -static void ReadChannelInfo(std::vector<ChannelInfo> &channels, +static bool ReadChannelInfo(std::vector<ChannelInfo> &channels, const std::vector<unsigned char> &data) { const char *p = reinterpret_cast<const char *>(&data.at(0)); @@ -7219,7 +7235,18 @@ static void ReadChannelInfo(std::vector<ChannelInfo> &channels, break; } ChannelInfo info; - p = ReadString(&info.name, p); + + tinyexr_int64 data_len = static_cast<tinyexr_int64>(data.size()) - (p - reinterpret_cast<const char *>(data.data())); + if (data_len < 0) { + return false; + } + + p = ReadString( + &info.name, p, size_t(data_len)); + if ((p == NULL) && (info.name.empty())) { + // Buffer overrun. Issue #51. + return false; + } memcpy(&info.pixel_type, p, sizeof(int)); p += 4; @@ -7236,6 +7263,8 @@ static void ReadChannelInfo(std::vector<ChannelInfo> &channels, channels.push_back(info); } + + return true; } static void WriteChannelInfo(std::vector<unsigned char> &data, @@ -7361,25 +7390,27 @@ static void CompressZip(unsigned char *dst, } } -static void DecompressZip(unsigned char *dst, +static bool DecompressZip(unsigned char *dst, unsigned long *uncompressed_size /* inout */, const unsigned char *src, unsigned long src_size) { if ((*uncompressed_size) == src_size) { // Data is not compressed(Issue 40). memcpy(dst, src, src_size); - return; + return true; } std::vector<unsigned char> tmpBuf(*uncompressed_size); #if TINYEXR_USE_MINIZ int ret = miniz::mz_uncompress(&tmpBuf.at(0), uncompressed_size, src, src_size); - assert(ret == miniz::MZ_OK); - (void)ret; + if (miniz::MZ_OK != ret) { + return false; + } #else int ret = uncompress(&tmpBuf.at(0), uncompressed_size, src, src_size); - assert(ret == Z_OK); - (void)ret; + if (Z_OK != ret) { + return false; + } #endif // @@ -7419,6 +7450,8 @@ static void DecompressZip(unsigned char *dst, break; } } + + return true; } // RLE code from OpenEXR -------------------------------------- @@ -7443,7 +7476,6 @@ static void DecompressZip(unsigned char *dst, // conformant name: _strdup. #endif - const int MIN_RUN_LENGTH = 3; const int MAX_RUN_LENGTH = 127; @@ -7673,6 +7705,11 @@ static void DecompressRle(unsigned char *dst, #pragma clang diagnostic ignored "-Wsign-conversion" #pragma clang diagnostic ignored "-Wc++11-extensions" #pragma clang diagnostic ignored "-Wconversion" + +#if __has_warning("-Wcast-qual") +#pragma clang diagnostic ignored "-Wcast-qual" +#endif + #endif // @@ -8934,7 +8971,6 @@ static void applyLut(const unsigned short lut[USHORT_RANGE], #pragma warning(pop) #endif - static bool CompressPiz(unsigned char *outPtr, unsigned int *outSize, const unsigned char *inPtr, size_t inSize, const std::vector<ChannelInfo> &channelInfo, @@ -9373,7 +9409,7 @@ bool CompressZfp(std::vector<unsigned char> *outBuf, unsigned int *outSize, // ----------------------------------------------------------------- // -static void DecodePixelData(/* out */ unsigned char **out_images, +static bool DecodePixelData(/* out */ unsigned char **out_images, const int *requested_pixel_types, const unsigned char *data_ptr, size_t data_len, int compression_type, int line_order, int width, @@ -9509,6 +9545,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, } #else assert(0 && "PIZ is enabled in this build"); + return false; #endif } else if (compression_type == TINYEXR_COMPRESSIONTYPE_ZIPS || @@ -9520,9 +9557,11 @@ static void DecodePixelData(/* out */ unsigned char **out_images, unsigned long dstLen = static_cast<unsigned long>(outBuf.size()); assert(dstLen > 0); - tinyexr::DecompressZip(reinterpret_cast<unsigned char *>(&outBuf.at(0)), + if (!tinyexr::DecompressZip(reinterpret_cast<unsigned char *>(&outBuf.at(0)), &dstLen, data_ptr, - static_cast<unsigned long>(data_len)); + static_cast<unsigned long>(data_len))) { + return false; + } // For ZIP_COMPRESSION: // pixel sample data for channel 0 for scanline 0 @@ -9633,6 +9672,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, } } else { assert(0); + return false; } } } else if (compression_type == TINYEXR_COMPRESSIONTYPE_RLE) { @@ -9756,6 +9796,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, } } else { assert(0); + return false; } } } else if (compression_type == TINYEXR_COMPRESSIONTYPE_ZFP) { @@ -9764,7 +9805,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, if (!FindZFPCompressionParam(&zfp_compression_param, attributes, num_attributes)) { assert(0); - return; + return false; } // Allocate original data size. @@ -9818,6 +9859,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, } } else { assert(0); + return false; } } #else @@ -9825,6 +9867,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, (void)num_attributes; (void)num_channels; assert(0); + return false; #endif } else if (compression_type == TINYEXR_COMPRESSIONTYPE_NONE) { for (size_t c = 0; c < num_channels; c++) { @@ -9873,6 +9916,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images, } } else { assert(0); + return false; } } else if (channels[c].pixel_type == TINYEXR_PIXELTYPE_FLOAT) { const float *line_ptr = reinterpret_cast<const float *>( @@ -9913,6 +9957,8 @@ static void DecodePixelData(/* out */ unsigned char **out_images, } } } + + return true; } static void DecodeTiledPixelData( @@ -10161,7 +10207,12 @@ static int ParseEXRHeader(HeaderInfo *info, bool *empty_header, // xSampling: int // ySampling: int - ReadChannelInfo(info->channels, data); + if (!ReadChannelInfo(info->channels, data)) { + if (err) { + (*err) = "Failed to parse channel info."; + } + return TINYEXR_ERROR_INVALID_DATA; + } if (info->channels.size() < 1) { if (err) { @@ -10173,16 +10224,19 @@ static int ParseEXRHeader(HeaderInfo *info, bool *empty_header, has_channels = true; } else if (attr_name.compare("dataWindow") == 0) { - memcpy(&info->data_window[0], &data.at(0), sizeof(int)); - memcpy(&info->data_window[1], &data.at(4), sizeof(int)); - memcpy(&info->data_window[2], &data.at(8), sizeof(int)); - memcpy(&info->data_window[3], &data.at(12), sizeof(int)); - tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[0])); - tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[1])); - tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[2])); - tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[3])); - - has_data_window = true; + if (data.size() < 16) { + // Corrupsed file(Issue #50). + } else { + memcpy(&info->data_window[0], &data.at(0), sizeof(int)); + memcpy(&info->data_window[1], &data.at(4), sizeof(int)); + memcpy(&info->data_window[2], &data.at(8), sizeof(int)); + memcpy(&info->data_window[3], &data.at(12), sizeof(int)); + tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[0])); + tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[1])); + tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[2])); + tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[3])); + has_data_window = true; + } } else if (attr_name.compare("displayWindow") == 0) { memcpy(&info->display_window[0], &data.at(0), sizeof(int)); memcpy(&info->display_window[1], &data.at(4), sizeof(int)); @@ -10268,7 +10322,7 @@ static int ParseEXRHeader(HeaderInfo *info, bool *empty_header, } if (!has_data_window) { - ss_err << "\"dataWindow\" attribute not found in the header." + ss_err << "\"dataWindow\" attribute not found in the header or invalid." << std::endl; } @@ -10333,7 +10387,7 @@ static void ConvertHeader(EXRHeader *exr_header, const HeaderInfo &info) { #else strncpy(exr_header->channels[c].name, info.channels[c].name.c_str(), 255); #endif - // manually add '\0' for safety. + // manually add '\0' for safety. exr_header->channels[c].name[255] = '\0'; exr_header->channels[c].pixel_type = info.channels[c].pixel_type; @@ -10371,7 +10425,7 @@ static void ConvertHeader(EXRHeader *exr_header, const HeaderInfo &info) { static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header, const std::vector<tinyexr::tinyexr_uint64> &offsets, - const unsigned char *head) { + const unsigned char *head, const size_t size) { int num_channels = exr_header->num_channels; int num_scanline_blocks = 1; @@ -10412,6 +10466,11 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header, // 16 byte: tile coordinates // 4 byte : data size // ~ : data(uncompressed or compressed) + if (offsets[tile_idx] + sizeof(int) * 5 > size) { + return TINYEXR_ERROR_INVALID_DATA; + } + + size_t data_size = size - (offsets[tile_idx] + sizeof(int) * 5); const unsigned char *data_ptr = reinterpret_cast<const unsigned char *>(head + offsets[tile_idx]); @@ -10430,7 +10489,10 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header, memcpy(&data_len, data_ptr + 16, sizeof(int)); // 16 = sizeof(tile_coordinates) tinyexr::swap4(reinterpret_cast<unsigned int *>(&data_len)); - assert(data_len >= 4); + + if (data_len < 4 || size_t(data_len) > data_size) { + return TINYEXR_ERROR_INVALID_DATA; + } // Move to data addr: 20 = 16 + 4; data_ptr += 20; @@ -10467,11 +10529,18 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header, #endif for (int y = 0; y < static_cast<int>(num_blocks); y++) { size_t y_idx = static_cast<size_t>(y); - const unsigned char *data_ptr = - reinterpret_cast<const unsigned char *>(head + offsets[y_idx]); + + if (offsets[y_idx] + sizeof(int) * 2 > size) { + return TINYEXR_ERROR_INVALID_DATA; + } + // 4 byte: scan line // 4 byte: data size // ~ : pixel data(uncompressed or compressed) + size_t data_size = size - (offsets[y_idx] + sizeof(int) * 2); + const unsigned char *data_ptr = + reinterpret_cast<const unsigned char *>(head + offsets[y_idx]); + int line_no; memcpy(&line_no, data_ptr, sizeof(int)); int data_len; @@ -10479,30 +10548,41 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header, tinyexr::swap4(reinterpret_cast<unsigned int *>(&line_no)); tinyexr::swap4(reinterpret_cast<unsigned int *>(&data_len)); + if (size_t(data_len) > data_size) { + return TINYEXR_ERROR_INVALID_DATA; + } + int end_line_no = (std::min)(line_no + num_scanline_blocks, (exr_header->data_window[3] + 1)); int num_lines = end_line_no - line_no; - assert(num_lines > 0); - - // Move to data addr: 8 = 4 + 4; - data_ptr += 8; - - // Adjust line_no with data_window.bmin.y - line_no -= exr_header->data_window[1]; + //assert(num_lines > 0); - if (line_no < 0) { + if (num_lines <= 0) { invalid_data = true; } else { - tinyexr::DecodePixelData( - exr_image->images, exr_header->requested_pixel_types, data_ptr, - static_cast<size_t>(data_len), exr_header->compression_type, - exr_header->line_order, data_width, data_height, data_width, y, - line_no, num_lines, static_cast<size_t>(pixel_data_size), - static_cast<size_t>(exr_header->num_custom_attributes), - exr_header->custom_attributes, - static_cast<size_t>(exr_header->num_channels), exr_header->channels, - channel_offset_list); + + // Move to data addr: 8 = 4 + 4; + data_ptr += 8; + + // Adjust line_no with data_window.bmin.y + line_no -= exr_header->data_window[1]; + + if (line_no < 0) { + invalid_data = true; + } else { + if (!tinyexr::DecodePixelData( + exr_image->images, exr_header->requested_pixel_types, data_ptr, + static_cast<size_t>(data_len), exr_header->compression_type, + exr_header->line_order, data_width, data_height, data_width, y, + line_no, num_lines, static_cast<size_t>(pixel_data_size), + static_cast<size_t>(exr_header->num_custom_attributes), + exr_header->custom_attributes, + static_cast<size_t>(exr_header->num_channels), exr_header->channels, + channel_offset_list)) { + invalid_data = true; + } + } } } // omp parallel } @@ -10537,7 +10617,7 @@ static bool ReconstructLineOffsets( for (size_t i = 0; i < n; i++) { size_t offset = static_cast<size_t>(marker - head); // Offset should not exceed whole EXR file/data size. - if (offset >= size) { + if ((offset + sizeof(tinyexr::tinyexr_uint64)) >= size) { return false; } @@ -10586,8 +10666,15 @@ static int DecodeEXRImage(EXRImage *exr_image, const EXRHeader *exr_header, int data_width = exr_header->data_window[2] - exr_header->data_window[0] + 1; int data_height = exr_header->data_window[3] - exr_header->data_window[1] + 1; + if ((data_width < 0) || (data_height < 0)) { + if (err) { + (*err) = "Invalid data window value."; + } + return TINYEXR_ERROR_INVALID_DATA; + } + // Read offset tables. - size_t num_blocks; + size_t num_blocks = 0; if (exr_header->chunk_count > 0) { // Use `chunkCount` attribute. @@ -10657,7 +10744,7 @@ static int DecodeEXRImage(EXRImage *exr_image, const EXRHeader *exr_header, } } - return DecodeChunk(exr_image, exr_header, offsets, head); + return DecodeChunk(exr_image, exr_header, offsets, head, size); } } // namespace tinyexr @@ -10842,8 +10929,8 @@ int ParseEXRHeaderFromMemory(EXRHeader *exr_header, const EXRVersion *version, } int LoadEXRFromMemory(float **out_rgba, int *width, int *height, - const unsigned char *memory, size_t size, - const char **err) { + const unsigned char *memory, size_t size, + const char **err) { if (out_rgba == NULL || memory == NULL) { if (err) { (*err) = "Invalid argument.\n"; @@ -10866,13 +10953,13 @@ int LoadEXRFromMemory(float **out_rgba, int *width, int *height, if (ret != TINYEXR_SUCCESS) { return ret; } - + // Read HALF channel as FLOAT. for (int i = 0; i < exr_header.num_channels; i++) { if (exr_header.pixel_types[i] == TINYEXR_PIXELTYPE_HALF) { exr_header.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT; } - } + } InitEXRImage(&exr_image); ret = LoadEXRImageFromMemory(&exr_image, &exr_header, memory, size, err); @@ -10923,23 +11010,22 @@ int LoadEXRFromMemory(float **out_rgba, int *width, int *height, } (*out_rgba) = reinterpret_cast<float *>( - malloc(4 * sizeof(float) * static_cast<size_t>(exr_image.width) * - static_cast<size_t>(exr_image.height))); + malloc(4 * sizeof(float) * static_cast<size_t>(exr_image.width) * + static_cast<size_t>(exr_image.height))); for (int i = 0; i < exr_image.width * exr_image.height; i++) { - (*out_rgba)[4 * i + 0] = - reinterpret_cast<float **>(exr_image.images)[idxR][i]; - (*out_rgba)[4 * i + 1] = - reinterpret_cast<float **>(exr_image.images)[idxG][i]; - (*out_rgba)[4 * i + 2] = - reinterpret_cast<float **>(exr_image.images)[idxB][i]; - if (idxA != -1) { - (*out_rgba)[4 * i + 3] = - reinterpret_cast<float **>(exr_image.images)[idxA][i]; - } - else { - (*out_rgba)[4 * i + 3] = 1.0; - } + (*out_rgba)[4 * i + 0] = + reinterpret_cast<float **>(exr_image.images)[idxR][i]; + (*out_rgba)[4 * i + 1] = + reinterpret_cast<float **>(exr_image.images)[idxG][i]; + (*out_rgba)[4 * i + 2] = + reinterpret_cast<float **>(exr_image.images)[idxB][i]; + if (idxA != -1) { + (*out_rgba)[4 * i + 3] = + reinterpret_cast<float **>(exr_image.images)[idxA][i]; + } else { + (*out_rgba)[4 * i + 3] = 1.0; + } } (*width) = exr_image.width; @@ -11707,7 +11793,12 @@ int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) { // xSampling: int // ySampling: int - tinyexr::ReadChannelInfo(channels, data); + if (!tinyexr::ReadChannelInfo(channels, data)) { + if (err) { + (*err) = "Failed to parse channel info."; + } + return TINYEXR_ERROR_INVALID_DATA; + } num_channels = static_cast<int>(channels.size()); @@ -11844,9 +11935,11 @@ int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) { { unsigned long dstLen = static_cast<unsigned long>(pixelOffsetTable.size() * sizeof(int)); - tinyexr::DecompressZip( + if (!tinyexr::DecompressZip( reinterpret_cast<unsigned char *>(&pixelOffsetTable.at(0)), &dstLen, - data_ptr + 28, static_cast<unsigned long>(packedOffsetTableSize)); + data_ptr + 28, static_cast<unsigned long>(packedOffsetTableSize))) { + return false; + } assert(dstLen == pixelOffsetTable.size() * sizeof(int)); for (size_t i = 0; i < static_cast<size_t>(data_width); i++) { @@ -11861,10 +11954,12 @@ int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) { { unsigned long dstLen = static_cast<unsigned long>(unpackedSampleDataSize); if (dstLen) { - tinyexr::DecompressZip( + if (!tinyexr::DecompressZip( reinterpret_cast<unsigned char *>(&sample_data.at(0)), &dstLen, data_ptr + 28 + packedOffsetTableSize, - static_cast<unsigned long>(packedSampleDataSize)); + static_cast<unsigned long>(packedSampleDataSize))) { + return false; + } assert(dstLen == static_cast<unsigned long>(unpackedSampleDataSize)); } } @@ -12390,7 +12485,7 @@ int LoadEXRMultipartImageFromMemory(EXRImage *exr_images, } int ret = tinyexr::DecodeChunk(&exr_images[i], exr_headers[i], offset_table, - memory); + memory, size); if (ret != TINYEXR_SUCCESS) { return ret; } diff --git a/thirdparty/zstd/common/bitstream.h b/thirdparty/zstd/common/bitstream.h index 2094823fe2..fcf3843079 100644 --- a/thirdparty/zstd/common/bitstream.h +++ b/thirdparty/zstd/common/bitstream.h @@ -167,7 +167,7 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits); /*-************************************************************** * Internal functions ****************************************************************/ -MEM_STATIC unsigned BIT_highbit32 (register U32 val) +MEM_STATIC unsigned BIT_highbit32 (U32 val) { assert(val != 0); { diff --git a/thirdparty/zstd/common/mem.h b/thirdparty/zstd/common/mem.h index 23335c3146..47d2300177 100644 --- a/thirdparty/zstd/common/mem.h +++ b/thirdparty/zstd/common/mem.h @@ -56,8 +56,6 @@ MEM_STATIC void MEM_check(void) { MEM_STATIC_ASSERT((sizeof(size_t)==4) || (size typedef int32_t S32; typedef uint64_t U64; typedef int64_t S64; - typedef intptr_t iPtrDiff; - typedef uintptr_t uPtrDiff; #else typedef unsigned char BYTE; typedef unsigned short U16; @@ -66,8 +64,6 @@ MEM_STATIC void MEM_check(void) { MEM_STATIC_ASSERT((sizeof(size_t)==4) || (size typedef signed int S32; typedef unsigned long long U64; typedef signed long long S64; - typedef ptrdiff_t iPtrDiff; - typedef size_t uPtrDiff; #endif @@ -123,20 +119,26 @@ MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; } /* currently only defined for gcc and icc */ #if defined(_MSC_VER) || (defined(__INTEL_COMPILER) && defined(WIN32)) __pragma( pack(push, 1) ) - typedef union { U16 u16; U32 u32; U64 u64; size_t st; } unalign; + typedef struct { U16 v; } unalign16; + typedef struct { U32 v; } unalign32; + typedef struct { U64 v; } unalign64; + typedef struct { size_t v; } unalignArch; __pragma( pack(pop) ) #else - typedef union { U16 u16; U32 u32; U64 u64; size_t st; } __attribute__((packed)) unalign; + typedef struct { U16 v; } __attribute__((packed)) unalign16; + typedef struct { U32 v; } __attribute__((packed)) unalign32; + typedef struct { U64 v; } __attribute__((packed)) unalign64; + typedef struct { size_t v; } __attribute__((packed)) unalignArch; #endif -MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } -MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } -MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; } -MEM_STATIC size_t MEM_readST(const void* ptr) { return ((const unalign*)ptr)->st; } +MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign16*)ptr)->v; } +MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign32*)ptr)->v; } +MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign64*)ptr)->v; } +MEM_STATIC size_t MEM_readST(const void* ptr) { return ((const unalignArch*)ptr)->v; } -MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } -MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } -MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign*)memPtr)->u64 = value; } +MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign16*)memPtr)->v = value; } +MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign32*)memPtr)->v = value; } +MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign64*)memPtr)->v = value; } #else diff --git a/thirdparty/zstd/common/pool.c b/thirdparty/zstd/common/pool.c index 1b0fe1035d..98b109e72a 100644 --- a/thirdparty/zstd/common/pool.c +++ b/thirdparty/zstd/common/pool.c @@ -11,7 +11,6 @@ /* ====== Dependencies ======= */ #include <stddef.h> /* size_t */ -#include <stdlib.h> /* malloc, calloc, free */ #include "pool.h" /* ====== Compiler specifics ====== */ @@ -115,7 +114,7 @@ POOL_ctx* POOL_create_advanced(size_t numThreads, size_t queueSize, ZSTD_customM * and full queues. */ ctx->queueSize = queueSize + 1; - ctx->queue = (POOL_job*) malloc(ctx->queueSize * sizeof(POOL_job)); + ctx->queue = (POOL_job*)ZSTD_malloc(ctx->queueSize * sizeof(POOL_job), customMem); ctx->queueHead = 0; ctx->queueTail = 0; ctx->numThreadsBusy = 0; diff --git a/thirdparty/zstd/common/zstd_common.c b/thirdparty/zstd/common/zstd_common.c index c2041053be..bccc948892 100644 --- a/thirdparty/zstd/common/zstd_common.c +++ b/thirdparty/zstd/common/zstd_common.c @@ -31,21 +31,27 @@ const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; } * ZSTD Error Management ******************************************/ /*! ZSTD_isError() : -* tells if a return value is an error code */ + * tells if a return value is an error code */ unsigned ZSTD_isError(size_t code) { return ERR_isError(code); } /*! ZSTD_getErrorName() : -* provides error code string from function result (useful for debugging) */ + * provides error code string from function result (useful for debugging) */ const char* ZSTD_getErrorName(size_t code) { return ERR_getErrorName(code); } /*! ZSTD_getError() : -* convert a `size_t` function result into a proper ZSTD_errorCode enum */ + * convert a `size_t` function result into a proper ZSTD_errorCode enum */ ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); } /*! ZSTD_getErrorString() : -* provides error code string from enum */ + * provides error code string from enum */ const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString(code); } +/*! g_debuglog_enable : + * turn on/off debug traces (global switch) */ +#if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 2) +int g_debuglog_enable = 1; +#endif + /*=************************************************************** * Custom allocator diff --git a/thirdparty/zstd/common/zstd_internal.h b/thirdparty/zstd/common/zstd_internal.h index e91cd20baa..5d2900eb76 100644 --- a/thirdparty/zstd/common/zstd_internal.h +++ b/thirdparty/zstd/common/zstd_internal.h @@ -11,6 +11,10 @@ #ifndef ZSTD_CCOMMON_H_MODULE #define ZSTD_CCOMMON_H_MODULE +/* this module contains definitions which must be identical + * across compression, decompression and dictBuilder. + * It also contains a few functions useful to at least 2 of them + * and which benefit from being inlined */ /*-************************************* * Dependencies @@ -50,21 +54,26 @@ extern "C" { #if defined(ZSTD_DEBUG) && (ZSTD_DEBUG>=2) # include <stdio.h> +extern int g_debuglog_enable; /* recommended values for ZSTD_DEBUG display levels : * 1 : no display, enables assert() only - * 2 : reserved for currently active debugging path - * 3 : events once per object lifetime (CCtx, CDict) + * 2 : reserved for currently active debug path + * 3 : events once per object lifetime (CCtx, CDict, etc.) * 4 : events once per frame * 5 : events once per block * 6 : events once per sequence (*very* verbose) */ -# define DEBUGLOG(l, ...) { \ - if (l<=ZSTD_DEBUG) { \ - fprintf(stderr, __FILE__ ": "); \ - fprintf(stderr, __VA_ARGS__); \ - fprintf(stderr, " \n"); \ +# define RAWLOG(l, ...) { \ + if ((g_debuglog_enable) & (l<=ZSTD_DEBUG)) { \ + fprintf(stderr, __VA_ARGS__); \ + } } +# define DEBUGLOG(l, ...) { \ + if ((g_debuglog_enable) & (l<=ZSTD_DEBUG)) { \ + fprintf(stderr, __FILE__ ": " __VA_ARGS__); \ + fprintf(stderr, " \n"); \ } } #else -# define DEBUGLOG(l, ...) {} /* disabled */ +# define RAWLOG(l, ...) {} /* disabled */ +# define DEBUGLOG(l, ...) {} /* disabled */ #endif @@ -85,9 +94,7 @@ extern "C" { #define ZSTD_OPT_NUM (1<<12) #define ZSTD_REP_NUM 3 /* number of repcodes */ -#define ZSTD_REP_CHECK (ZSTD_REP_NUM) /* number of repcodes to check by the optimal parser */ #define ZSTD_REP_MOVE (ZSTD_REP_NUM-1) -#define ZSTD_REP_MOVE_OPT (ZSTD_REP_NUM) static const U32 repStartValue[ZSTD_REP_NUM] = { 1, 4, 8 }; #define KB *(1 <<10) @@ -134,28 +141,40 @@ typedef enum { set_basic, set_rle, set_compressed, set_repeat } symbolEncodingTy #define LLFSELog 9 #define OffFSELog 8 -static const U32 LL_bits[MaxLL+1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9,10,11,12, +static const U32 LL_bits[MaxLL+1] = { 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, + 4, 6, 7, 8, 9,10,11,12, 13,14,15,16 }; -static const S16 LL_defaultNorm[MaxLL+1] = { 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, +static const S16 LL_defaultNorm[MaxLL+1] = { 4, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 2, 1, 1, 1, 1, 1, -1,-1,-1,-1 }; #define LL_DEFAULTNORMLOG 6 /* for static allocation */ static const U32 LL_defaultNormLog = LL_DEFAULTNORMLOG; -static const U32 ML_bits[MaxML+1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 8, 9,10,11, +static const U32 ML_bits[MaxML+1] = { 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, + 4, 4, 5, 7, 8, 9,10,11, 12,13,14,15,16 }; -static const S16 ML_defaultNorm[MaxML+1] = { 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1,-1, +static const S16 ML_defaultNorm[MaxML+1] = { 1, 4, 3, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1,-1,-1, -1,-1,-1,-1,-1 }; #define ML_DEFAULTNORMLOG 6 /* for static allocation */ static const U32 ML_defaultNormLog = ML_DEFAULTNORMLOG; -static const S16 OF_defaultNorm[DefaultMaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1 }; +static const S16 OF_defaultNorm[DefaultMaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + -1,-1,-1,-1,-1 }; #define OF_DEFAULTNORMLOG 5 /* for static allocation */ static const U32 OF_defaultNormLog = OF_DEFAULTNORMLOG; @@ -167,7 +186,7 @@ static void ZSTD_copy8(void* dst, const void* src) { memcpy(dst, src, 8); } #define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; } /*! ZSTD_wildcopy() : -* custom version of memcpy(), can copy up to 7 bytes too many (8 bytes if length==0) */ + * custom version of memcpy(), can overwrite up to WILDCOPY_OVERLENGTH bytes (if length==0) */ #define WILDCOPY_OVERLENGTH 8 MEM_STATIC void ZSTD_wildcopy(void* dst, const void* src, ptrdiff_t length) { @@ -191,17 +210,14 @@ MEM_STATIC void ZSTD_wildcopy_e(void* dst, const void* src, void* dstEnd) /* s /*-******************************************* -* Private interfaces +* Private declarations *********************************************/ -typedef struct ZSTD_stats_s ZSTD_stats_t; - typedef struct seqDef_s { U32 offset; U16 litLength; U16 matchLength; } seqDef; - typedef struct { seqDef* sequencesStart; seqDef* sequences; @@ -216,100 +232,8 @@ typedef struct { U32 repToConfirm[ZSTD_REP_NUM]; } seqStore_t; -typedef struct { - U32 off; - U32 len; -} ZSTD_match_t; - -typedef struct { - U32 price; - U32 off; - U32 mlen; - U32 litlen; - U32 rep[ZSTD_REP_NUM]; -} ZSTD_optimal_t; - -typedef struct { - U32* litFreq; - U32* litLengthFreq; - U32* matchLengthFreq; - U32* offCodeFreq; - ZSTD_match_t* matchTable; - ZSTD_optimal_t* priceTable; - - U32 matchLengthSum; - U32 matchSum; - U32 litLengthSum; - U32 litSum; - U32 offCodeSum; - U32 log2matchLengthSum; - U32 log2matchSum; - U32 log2litLengthSum; - U32 log2litSum; - U32 log2offCodeSum; - U32 factor; - U32 staticPrices; - U32 cachedPrice; - U32 cachedLitLength; - const BYTE* cachedLiterals; -} optState_t; - -typedef struct { - U32 offset; - U32 checksum; -} ldmEntry_t; - -typedef struct { - ldmEntry_t* hashTable; - BYTE* bucketOffsets; /* Next position in bucket to insert entry */ - U64 hashPower; /* Used to compute the rolling hash. - * Depends on ldmParams.minMatchLength */ -} ldmState_t; - -typedef struct { - U32 enableLdm; /* 1 if enable long distance matching */ - U32 hashLog; /* Log size of hashTable */ - U32 bucketSizeLog; /* Log bucket size for collision resolution, at most 8 */ - U32 minMatchLength; /* Minimum match length */ - U32 hashEveryLog; /* Log number of entries to skip */ -} ldmParams_t; - -typedef struct { - U32 hufCTable[HUF_CTABLE_SIZE_U32(255)]; - FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)]; - FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)]; - FSE_CTable litlengthCTable[FSE_CTABLE_SIZE_U32(LLFSELog, MaxLL)]; - U32 workspace[HUF_WORKSPACE_SIZE_U32]; - HUF_repeat hufCTable_repeatMode; - FSE_repeat offcode_repeatMode; - FSE_repeat matchlength_repeatMode; - FSE_repeat litlength_repeatMode; -} ZSTD_entropyCTables_t; - -struct ZSTD_CCtx_params_s { - ZSTD_format_e format; - ZSTD_compressionParameters cParams; - ZSTD_frameParameters fParams; - - int compressionLevel; - U32 forceWindow; /* force back-references to respect limit of - * 1<<wLog, even for dictionary */ - - /* Multithreading: used to pass parameters to mtctx */ - U32 nbThreads; - unsigned jobSize; - unsigned overlapSizeLog; - - /* Long distance matching parameters */ - ldmParams_t ldmParams; - - /* For use with createCCtxParams() and freeCCtxParams() only */ - ZSTD_customMem customMem; - -}; /* typedef'd to ZSTD_CCtx_params within "zstd.h" */ - -const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx); -void ZSTD_seqToCodes(const seqStore_t* seqStorePtr); +const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx); /* compress & dictBuilder */ +void ZSTD_seqToCodes(const seqStore_t* seqStorePtr); /* compress, dictBuilder, decodeCorpus (shouldn't get its definition from here) */ /* custom memory allocation functions */ void* ZSTD_malloc(size_t size, ZSTD_customMem customMem); @@ -317,9 +241,7 @@ void* ZSTD_calloc(size_t size, ZSTD_customMem customMem); void ZSTD_free(void* ptr, ZSTD_customMem customMem); -/*====== common function ======*/ - -MEM_STATIC U32 ZSTD_highbit32(U32 val) +MEM_STATIC U32 ZSTD_highbit32(U32 val) /* compress, dictBuilder, decodeCorpus */ { assert(val != 0); { @@ -330,66 +252,25 @@ MEM_STATIC U32 ZSTD_highbit32(U32 val) # elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */ return 31 - __builtin_clz(val); # else /* Software version */ - static const int DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 }; + static const U32 DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 }; U32 v = val; - int r; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; - r = DeBruijnClz[(U32)(v * 0x07C4ACDDU) >> 27]; - return r; + return DeBruijnClz[(v * 0x07C4ACDDU) >> 27]; # endif } } -/* hidden functions */ - /* ZSTD_invalidateRepCodes() : * ensures next compression will not use repcodes from previous block. * Note : only works with regular variant; * do not use with extDict variant ! */ -void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx); - - -/*! ZSTD_initCStream_internal() : - * Private use only. Init streaming operation. - * expects params to be valid. - * must receive dict, or cdict, or none, but not both. - * @return : 0, or an error code */ -size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs, - const void* dict, size_t dictSize, - const ZSTD_CDict* cdict, - ZSTD_CCtx_params params, unsigned long long pledgedSrcSize); - -/*! ZSTD_compressStream_generic() : - * Private use only. To be called from zstdmt_compress.c in single-thread mode. */ -size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs, - ZSTD_outBuffer* output, - ZSTD_inBuffer* input, - ZSTD_EndDirective const flushMode); - -/*! ZSTD_getCParamsFromCDict() : - * as the name implies */ -ZSTD_compressionParameters ZSTD_getCParamsFromCDict(const ZSTD_CDict* cdict); - -/* ZSTD_compressBegin_advanced_internal() : - * Private use only. To be called from zstdmt_compress.c. */ -size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx, - const void* dict, size_t dictSize, - ZSTD_dictMode_e dictMode, - ZSTD_CCtx_params params, - unsigned long long pledgedSrcSize); - -/* ZSTD_compress_advanced_internal() : - * Private use only. To be called from zstdmt_compress.c. */ -size_t ZSTD_compress_advanced_internal(ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const void* dict,size_t dictSize, - ZSTD_CCtx_params params); +void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx); /* zstdmt, adaptive_compression (shouldn't get this definition from here) */ + typedef struct { blockType_e blockType; @@ -398,7 +279,8 @@ typedef struct { } blockProperties_t; /*! ZSTD_getcBlockSize() : -* Provides the size of compressed block from block header `src` */ + * Provides the size of compressed block from block header `src` */ +/* Used by: decompress, fullbench (does not get its definition from here) */ size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, blockProperties_t* bpPtr); diff --git a/thirdparty/zstd/compress/zstd_compress.c b/thirdparty/zstd/compress/zstd_compress.c index 2c46c79f1c..8d1629246d 100644 --- a/thirdparty/zstd/compress/zstd_compress.c +++ b/thirdparty/zstd/compress/zstd_compress.c @@ -26,7 +26,7 @@ #include "fse.h" #define HUF_STATIC_LINKING_ONLY #include "huf.h" -#include "zstd_compress.h" +#include "zstd_compress_internal.h" #include "zstd_fast.h" #include "zstd_double_fast.h" #include "zstd_lazy.h" @@ -43,17 +43,6 @@ size_t ZSTD_compressBound(size_t srcSize) { /*-************************************* -* Sequence storage -***************************************/ -static void ZSTD_resetSeqStore(seqStore_t* ssPtr) -{ - ssPtr->lit = ssPtr->litStart; - ssPtr->sequences = ssPtr->sequencesStart; - ssPtr->longLengthID = 0; -} - - -/*-************************************* * Context memory management ***************************************/ struct ZSTD_CDict_s { @@ -78,6 +67,7 @@ ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem) if (!cctx) return NULL; cctx->customMem = customMem; cctx->requestedParams.compressionLevel = ZSTD_CLEVEL_DEFAULT; + cctx->requestedParams.fParams.contentSizeFlag = 1; ZSTD_STATIC_ASSERT(zcss_init==0); ZSTD_STATIC_ASSERT(ZSTD_CONTENTSIZE_UNKNOWN==(0ULL - 1)); return cctx; @@ -152,28 +142,34 @@ const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx) { return &(ctx->seqStor #define ZSTD_CLEVEL_CUSTOM 999 static ZSTD_compressionParameters ZSTD_getCParamsFromCCtxParams( - ZSTD_CCtx_params params, U64 srcSizeHint, size_t dictSize) + ZSTD_CCtx_params CCtxParams, U64 srcSizeHint, size_t dictSize) { - return (params.compressionLevel == ZSTD_CLEVEL_CUSTOM ? - params.cParams : - ZSTD_getCParams(params.compressionLevel, srcSizeHint, dictSize)); + DEBUGLOG(4, "ZSTD_getCParamsFromCCtxParams: srcSize = %u, dictSize = %u", + (U32)srcSizeHint, (U32)dictSize); + return (CCtxParams.compressionLevel == ZSTD_CLEVEL_CUSTOM) ? + CCtxParams.cParams : + ZSTD_getCParams(CCtxParams.compressionLevel, srcSizeHint, dictSize); } -static void ZSTD_cLevelToCCtxParams_srcSize(ZSTD_CCtx_params* params, U64 srcSize) +static void ZSTD_cLevelToCCtxParams_srcSize(ZSTD_CCtx_params* CCtxParams, U64 srcSize) { - params->cParams = ZSTD_getCParamsFromCCtxParams(*params, srcSize, 0); - params->compressionLevel = ZSTD_CLEVEL_CUSTOM; + DEBUGLOG(4, "ZSTD_cLevelToCCtxParams_srcSize: srcSize = %u", + (U32)srcSize); + CCtxParams->cParams = ZSTD_getCParamsFromCCtxParams(*CCtxParams, srcSize, 0); + CCtxParams->compressionLevel = ZSTD_CLEVEL_CUSTOM; } static void ZSTD_cLevelToCParams(ZSTD_CCtx* cctx) { + DEBUGLOG(4, "ZSTD_cLevelToCParams: level=%i", cctx->requestedParams.compressionLevel); ZSTD_cLevelToCCtxParams_srcSize( &cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1); } -static void ZSTD_cLevelToCCtxParams(ZSTD_CCtx_params* params) +static void ZSTD_cLevelToCCtxParams(ZSTD_CCtx_params* CCtxParams) { - ZSTD_cLevelToCCtxParams_srcSize(params, 0); + DEBUGLOG(4, "ZSTD_cLevelToCCtxParams"); + ZSTD_cLevelToCCtxParams_srcSize(CCtxParams, ZSTD_CONTENTSIZE_UNKNOWN); } static ZSTD_CCtx_params ZSTD_makeCCtxParamsFromCParams( @@ -251,6 +247,7 @@ static ZSTD_CCtx_params ZSTD_assignParamsToCCtxParams( size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value) { + DEBUGLOG(4, "ZSTD_CCtx_setParameter (%u, %u)", (U32)param, value); if (cctx->streamStage != zcss_init) return ERROR(stage_wrong); switch(param) @@ -259,7 +256,6 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_compressionLevel: - if (value == 0) return 0; /* special value : 0 means "don't change anything" */ if (cctx->cdict) return ERROR(stage_wrong); return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); @@ -270,9 +266,8 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v case ZSTD_p_minMatch: case ZSTD_p_targetLength: case ZSTD_p_compressionStrategy: - if (value == 0) return 0; /* special value : 0 means "don't change anything" */ if (cctx->cdict) return ERROR(stage_wrong); - ZSTD_cLevelToCParams(cctx); /* Can optimize if srcSize is known */ + if (value>0) ZSTD_cLevelToCParams(cctx); /* Can optimize if srcSize is known */ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_contentSizeFlag: @@ -281,15 +276,12 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_forceMaxWindow : /* Force back-references to remain < windowSize, - * even when referencing into Dictionary content + * even when referencing into Dictionary content. * default : 0 when using a CDict, 1 when using a Prefix */ - cctx->loadedDictEnd = 0; return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_nbThreads: - if (value==0) return 0; - DEBUGLOG(5, " setting nbThreads : %u", value); - if (value > 1 && cctx->staticSize) { + if ((value > 1) && cctx->staticSize) { return ERROR(parameter_unsupported); /* MT not compatible with static alloc */ } return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); @@ -298,22 +290,15 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_overlapSizeLog: - DEBUGLOG(5, " setting overlap with nbThreads == %u", cctx->requestedParams.nbThreads); return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_enableLongDistanceMatching: if (cctx->cdict) return ERROR(stage_wrong); - if (value != 0) { - ZSTD_cLevelToCParams(cctx); - } + if (value>0) ZSTD_cLevelToCParams(cctx); return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); case ZSTD_p_ldmHashLog: case ZSTD_p_ldmMinMatch: - if (value == 0) return 0; /* special value : 0 means "don't change anything" */ - if (cctx->cdict) return ERROR(stage_wrong); - return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value); - case ZSTD_p_ldmBucketSizeLog: case ZSTD_p_ldmHashEveryLog: if (cctx->cdict) return ERROR(stage_wrong); @@ -324,160 +309,167 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v } size_t ZSTD_CCtxParam_setParameter( - ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value) + ZSTD_CCtx_params* CCtxParams, ZSTD_cParameter param, unsigned value) { + DEBUGLOG(4, "ZSTD_CCtxParam_setParameter (%u, %u)", (U32)param, value); switch(param) { case ZSTD_p_format : if (value > (unsigned)ZSTD_f_zstd1_magicless) return ERROR(parameter_unsupported); - params->format = (ZSTD_format_e)value; - return 0; + CCtxParams->format = (ZSTD_format_e)value; + return (size_t)CCtxParams->format; case ZSTD_p_compressionLevel : if ((int)value > ZSTD_maxCLevel()) value = ZSTD_maxCLevel(); - if (value == 0) return 0; - params->compressionLevel = value; - return 0; + if (value) /* 0 : does not change current level */ + CCtxParams->compressionLevel = value; + return CCtxParams->compressionLevel; case ZSTD_p_windowLog : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_WINDOWLOG_MIN, ZSTD_WINDOWLOG_MAX); - ZSTD_cLevelToCCtxParams(params); - params->cParams.windowLog = value; - return 0; + DEBUGLOG(4, "ZSTD_CCtxParam_setParameter: set windowLog=%u", value); + if (value) { /* 0 : does not change current windowLog */ + CLAMPCHECK(value, ZSTD_WINDOWLOG_MIN, ZSTD_WINDOWLOG_MAX); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.windowLog = value; + } + return CCtxParams->cParams.windowLog; case ZSTD_p_hashLog : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX); - ZSTD_cLevelToCCtxParams(params); - params->cParams.hashLog = value; - return 0; + if (value) { /* 0 : does not change current hashLog */ + CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.hashLog = value; + } + return CCtxParams->cParams.hashLog; case ZSTD_p_chainLog : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_CHAINLOG_MIN, ZSTD_CHAINLOG_MAX); - ZSTD_cLevelToCCtxParams(params); - params->cParams.chainLog = value; - return 0; + if (value) { /* 0 : does not change current chainLog */ + CLAMPCHECK(value, ZSTD_CHAINLOG_MIN, ZSTD_CHAINLOG_MAX); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.chainLog = value; + } + return CCtxParams->cParams.chainLog; case ZSTD_p_searchLog : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX); - ZSTD_cLevelToCCtxParams(params); - params->cParams.searchLog = value; - return 0; + if (value) { /* 0 : does not change current searchLog */ + CLAMPCHECK(value, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.searchLog = value; + } + return value; case ZSTD_p_minMatch : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX); - ZSTD_cLevelToCCtxParams(params); - params->cParams.searchLength = value; - return 0; + if (value) { /* 0 : does not change current minMatch length */ + CLAMPCHECK(value, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.searchLength = value; + } + return CCtxParams->cParams.searchLength; case ZSTD_p_targetLength : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX); - ZSTD_cLevelToCCtxParams(params); - params->cParams.targetLength = value; - return 0; + if (value) { /* 0 : does not change current sufficient_len */ + CLAMPCHECK(value, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.targetLength = value; + } + return CCtxParams->cParams.targetLength; case ZSTD_p_compressionStrategy : - if (value == 0) return 0; - CLAMPCHECK(value, (unsigned)ZSTD_fast, (unsigned)ZSTD_btultra); - ZSTD_cLevelToCCtxParams(params); - params->cParams.strategy = (ZSTD_strategy)value; - return 0; + if (value) { /* 0 : does not change currentstrategy */ + CLAMPCHECK(value, (unsigned)ZSTD_fast, (unsigned)ZSTD_btultra); + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.strategy = (ZSTD_strategy)value; + } + return (size_t)CCtxParams->cParams.strategy; case ZSTD_p_contentSizeFlag : /* Content size written in frame header _when known_ (default:1) */ - DEBUGLOG(5, "set content size flag = %u", (value>0)); - params->fParams.contentSizeFlag = value > 0; - return 0; + DEBUGLOG(4, "set content size flag = %u", (value>0)); + CCtxParams->fParams.contentSizeFlag = value > 0; + return CCtxParams->fParams.contentSizeFlag; case ZSTD_p_checksumFlag : /* A 32-bits content checksum will be calculated and written at end of frame (default:0) */ - params->fParams.checksumFlag = value > 0; - return 0; + CCtxParams->fParams.checksumFlag = value > 0; + return CCtxParams->fParams.checksumFlag; case ZSTD_p_dictIDFlag : /* When applicable, dictionary's dictID is provided in frame header (default:1) */ - DEBUGLOG(5, "set dictIDFlag = %u", (value>0)); - params->fParams.noDictIDFlag = (value == 0); - return 0; + DEBUGLOG(4, "set dictIDFlag = %u", (value>0)); + CCtxParams->fParams.noDictIDFlag = (value == 0); + return !CCtxParams->fParams.noDictIDFlag; case ZSTD_p_forceMaxWindow : - params->forceWindow = value > 0; - return 0; + CCtxParams->forceWindow = (value > 0); + return CCtxParams->forceWindow; case ZSTD_p_nbThreads : - if (value == 0) return 0; + if (value == 0) return CCtxParams->nbThreads; #ifndef ZSTD_MULTITHREAD if (value > 1) return ERROR(parameter_unsupported); - return 0; + return 1; #else - return ZSTDMT_initializeCCtxParameters(params, value); + return ZSTDMT_CCtxParam_setNbThreads(CCtxParams, value); #endif case ZSTD_p_jobSize : #ifndef ZSTD_MULTITHREAD return ERROR(parameter_unsupported); #else - if (params->nbThreads <= 1) return ERROR(parameter_unsupported); - return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_sectionSize, value); + if (CCtxParams->nbThreads <= 1) return ERROR(parameter_unsupported); + return ZSTDMT_CCtxParam_setMTCtxParameter(CCtxParams, ZSTDMT_p_jobSize, value); #endif case ZSTD_p_overlapSizeLog : #ifndef ZSTD_MULTITHREAD return ERROR(parameter_unsupported); #else - if (params->nbThreads <= 1) return ERROR(parameter_unsupported); - return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_overlapSectionLog, value); + if (CCtxParams->nbThreads <= 1) return ERROR(parameter_unsupported); + return ZSTDMT_CCtxParam_setMTCtxParameter(CCtxParams, ZSTDMT_p_overlapSectionLog, value); #endif case ZSTD_p_enableLongDistanceMatching : - if (value != 0) { - ZSTD_cLevelToCCtxParams(params); - params->cParams.windowLog = ZSTD_LDM_DEFAULT_WINDOW_LOG; + if (value) { + ZSTD_cLevelToCCtxParams(CCtxParams); + CCtxParams->cParams.windowLog = ZSTD_LDM_DEFAULT_WINDOW_LOG; } - return ZSTD_ldm_initializeParameters(¶ms->ldmParams, value); + return ZSTD_ldm_initializeParameters(&CCtxParams->ldmParams, value); case ZSTD_p_ldmHashLog : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX); - params->ldmParams.hashLog = value; - return 0; + if (value) { /* 0 : does not change current ldmHashLog */ + CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX); + CCtxParams->ldmParams.hashLog = value; + } + return CCtxParams->ldmParams.hashLog; case ZSTD_p_ldmMinMatch : - if (value == 0) return 0; - CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX); - params->ldmParams.minMatchLength = value; - return 0; + if (value) { /* 0 : does not change current ldmMinMatch */ + CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX); + CCtxParams->ldmParams.minMatchLength = value; + } + return CCtxParams->ldmParams.minMatchLength; case ZSTD_p_ldmBucketSizeLog : if (value > ZSTD_LDM_BUCKETSIZELOG_MAX) { return ERROR(parameter_outOfBound); } - params->ldmParams.bucketSizeLog = value; - return 0; + CCtxParams->ldmParams.bucketSizeLog = value; + return value; case ZSTD_p_ldmHashEveryLog : if (value > ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN) { return ERROR(parameter_outOfBound); } - params->ldmParams.hashEveryLog = value; - return 0; + CCtxParams->ldmParams.hashEveryLog = value; + return value; default: return ERROR(parameter_unsupported); } } -/** - * This function should be updated whenever ZSTD_CCtx_params is updated. - * Parameters are copied manually before the dictionary is loaded. - * The multithreading parameters jobSize and overlapSizeLog are set only if - * nbThreads > 1. - * - * Pledged srcSize is treated as unknown. +/** ZSTD_CCtx_setParametersUsingCCtxParams() : + * just applies `params` into `cctx` + * no action is performed, parameters are merely stored. */ size_t ZSTD_CCtx_setParametersUsingCCtxParams( ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params) @@ -485,33 +477,14 @@ size_t ZSTD_CCtx_setParametersUsingCCtxParams( if (cctx->streamStage != zcss_init) return ERROR(stage_wrong); if (cctx->cdict) return ERROR(stage_wrong); - /* Assume the compression and frame parameters are validated */ - cctx->requestedParams.cParams = params->cParams; - cctx->requestedParams.fParams = params->fParams; - cctx->requestedParams.compressionLevel = params->compressionLevel; - - /* Set force window explicitly since it sets cctx->loadedDictEnd */ - CHECK_F( ZSTD_CCtx_setParameter( - cctx, ZSTD_p_forceMaxWindow, params->forceWindow) ); - - /* Set multithreading parameters explicitly */ - CHECK_F( ZSTD_CCtx_setParameter(cctx, ZSTD_p_nbThreads, params->nbThreads) ); - if (params->nbThreads > 1) { - CHECK_F( ZSTD_CCtx_setParameter(cctx, ZSTD_p_jobSize, params->jobSize) ); - CHECK_F( ZSTD_CCtx_setParameter( - cctx, ZSTD_p_overlapSizeLog, params->overlapSizeLog) ); - } + cctx->requestedParams = *params; - /* Copy long distance matching parameters */ - cctx->requestedParams.ldmParams = params->ldmParams; - - /* customMem is used only for create/free params and can be ignored */ return 0; } ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize) { - DEBUGLOG(4, " setting pledgedSrcSize to %u", (U32)pledgedSrcSize); + DEBUGLOG(4, "ZSTD_CCtx_setPledgedSrcSize to %u bytes", (U32)pledgedSrcSize); if (cctx->streamStage != zcss_init) return ERROR(stage_wrong); cctx->pledgedSrcSizePlusOne = pledgedSrcSize+1; return 0; @@ -523,14 +496,14 @@ size_t ZSTD_CCtx_loadDictionary_advanced( { if (cctx->streamStage != zcss_init) return ERROR(stage_wrong); if (cctx->staticSize) return ERROR(memory_allocation); /* no malloc for static CCtx */ - DEBUGLOG(4, "load dictionary of size %u", (U32)dictSize); + DEBUGLOG(4, "ZSTD_CCtx_loadDictionary_advanced (size: %u)", (U32)dictSize); ZSTD_freeCDict(cctx->cdictLocal); /* in case one already exists */ if (dict==NULL || dictSize==0) { /* no dictionary mode */ cctx->cdictLocal = NULL; cctx->cdict = NULL; } else { ZSTD_compressionParameters const cParams = - ZSTD_getCParamsFromCCtxParams(cctx->requestedParams, 0, dictSize); + ZSTD_getCParamsFromCCtxParams(cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, dictSize); cctx->cdictLocal = ZSTD_createCDict_advanced( dict, dictSize, dictLoadMethod, dictMode, @@ -756,10 +729,7 @@ size_t ZSTD_estimateCStreamSize(int compressionLevel) { static U32 ZSTD_equivalentCParams(ZSTD_compressionParameters cParams1, ZSTD_compressionParameters cParams2) { - U32 bslog1 = MIN(cParams1.windowLog, ZSTD_BLOCKSIZELOG_MAX); - U32 bslog2 = MIN(cParams2.windowLog, ZSTD_BLOCKSIZELOG_MAX); - return (bslog1 == bslog2) /* same block size */ - & (cParams1.hashLog == cParams2.hashLog) + return (cParams1.hashLog == cParams2.hashLog) & (cParams1.chainLog == cParams2.chainLog) & (cParams1.strategy == cParams2.strategy) /* opt parser space */ & ((cParams1.searchLength==3) == (cParams2.searchLength==3)); /* hashlog3 space */ @@ -778,12 +748,38 @@ static U32 ZSTD_equivalentLdmParams(ldmParams_t ldmParams1, ldmParams1.hashEveryLog == ldmParams2.hashEveryLog); } +typedef enum { ZSTDb_not_buffered, ZSTDb_buffered } ZSTD_buffered_policy_e; + +/* ZSTD_sufficientBuff() : + * check internal buffers exist for streaming if buffPol == ZSTDb_buffered . + * Note : they are assumed to be correctly sized if ZSTD_equivalentCParams()==1 */ +static U32 ZSTD_sufficientBuff(size_t bufferSize1, size_t blockSize1, + ZSTD_buffered_policy_e buffPol2, + ZSTD_compressionParameters cParams2, + U64 pledgedSrcSize) +{ + size_t const windowSize2 = MAX(1, (size_t)MIN(((U64)1 << cParams2.windowLog), pledgedSrcSize)); + size_t const blockSize2 = MIN(ZSTD_BLOCKSIZE_MAX, windowSize2); + size_t const neededBufferSize2 = (buffPol2==ZSTDb_buffered) ? windowSize2 + blockSize2 : 0; + DEBUGLOG(4, "ZSTD_sufficientBuff: windowSize2=%u from wlog=%u", + (U32)windowSize2, cParams2.windowLog); + DEBUGLOG(4, "ZSTD_sufficientBuff: blockSize2 %u <=? blockSize1 %u", + (U32)blockSize2, (U32)blockSize1); + return (blockSize2 <= blockSize1) /* seqStore space depends on blockSize */ + & (neededBufferSize2 <= bufferSize1); +} + /** Equivalence for resetCCtx purposes */ static U32 ZSTD_equivalentParams(ZSTD_CCtx_params params1, - ZSTD_CCtx_params params2) + ZSTD_CCtx_params params2, + size_t buffSize1, size_t blockSize1, + ZSTD_buffered_policy_e buffPol2, + U64 pledgedSrcSize) { + DEBUGLOG(4, "ZSTD_equivalentParams: pledgedSrcSize=%u", (U32)pledgedSrcSize); return ZSTD_equivalentCParams(params1.cParams, params2.cParams) && - ZSTD_equivalentLdmParams(params1.ldmParams, params2.ldmParams); + ZSTD_equivalentLdmParams(params1.ldmParams, params2.ldmParams) && + ZSTD_sufficientBuff(buffSize1, blockSize1, buffPol2, params2.cParams, pledgedSrcSize); } /*! ZSTD_continueCCtx() : @@ -791,7 +787,11 @@ static U32 ZSTD_equivalentParams(ZSTD_CCtx_params params1, static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_CCtx_params params, U64 pledgedSrcSize) { U32 const end = (U32)(cctx->nextSrc - cctx->base); - DEBUGLOG(4, "continue mode"); + size_t const windowSize = MAX(1, (size_t)MIN(((U64)1 << params.cParams.windowLog), pledgedSrcSize)); + size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, windowSize); + DEBUGLOG(4, "ZSTD_continueCCtx"); + + cctx->blockSize = blockSize; /* previous block size could be different even for same windowLog, due to pledgedSrcSize */ cctx->appliedParams = params; cctx->pledgedSrcSizePlusOne = pledgedSrcSize+1; cctx->consumedSrcSize = 0; @@ -812,7 +812,6 @@ static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_CCtx_params params, U64 pl } typedef enum { ZSTDcrp_continue, ZSTDcrp_noMemset } ZSTD_compResetPolicy_e; -typedef enum { ZSTDb_not_buffered, ZSTDb_buffered } ZSTD_buffered_policy_e; /*! ZSTD_resetCCtx_internal() : note : `params` are assumed fully validated at this stage */ @@ -821,13 +820,16 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, ZSTD_compResetPolicy_e const crp, ZSTD_buffered_policy_e const zbuff) { - DEBUGLOG(4, "ZSTD_resetCCtx_internal"); + DEBUGLOG(4, "ZSTD_resetCCtx_internal: pledgedSrcSize=%u, wlog=%u", + (U32)pledgedSrcSize, params.cParams.windowLog); assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams))); - DEBUGLOG(4, "pledgedSrcSize: %u", (U32)pledgedSrcSize); if (crp == ZSTDcrp_continue) { - if (ZSTD_equivalentParams(params, zc->appliedParams)) { - DEBUGLOG(4, "ZSTD_equivalentParams()==1"); + if (ZSTD_equivalentParams(zc->appliedParams, params, + zc->inBuffSize, zc->blockSize, + zbuff, pledgedSrcSize)) { + DEBUGLOG(4, "ZSTD_equivalentParams()==1 -> continue mode (wLog1=%u, blockSize1=%u)", + zc->appliedParams.cParams.windowLog, (U32)zc->blockSize); assert(!(params.ldmParams.enableLdm && params.ldmParams.hashEveryLog == ZSTD_LDM_HASHEVERYLOG_NOTSET)); zc->entropy->hufCTable_repeatMode = HUF_repeat_none; @@ -836,6 +838,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, zc->entropy->litlength_repeatMode = FSE_repeat_none; return ZSTD_continueCCtx(zc, params, pledgedSrcSize); } } + DEBUGLOG(4, "ZSTD_equivalentParams()==0 -> reset CCtx"); if (params.ldmParams.enableLdm) { /* Adjust long distance matching parameters */ @@ -846,7 +849,8 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, ZSTD_ldm_getHashPower(params.ldmParams.minMatchLength); } - { size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << params.cParams.windowLog); + { size_t const windowSize = MAX(1, (size_t)MIN(((U64)1 << params.cParams.windowLog), pledgedSrcSize)); + size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, windowSize); U32 const divider = (params.cParams.searchLength==3) ? 3 : 4; size_t const maxNbSeq = blockSize / divider; size_t const tokenSpace = blockSize + 11*maxNbSeq; @@ -858,7 +862,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, size_t const h3Size = ((size_t)1) << hashLog3; size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32); size_t const buffOutSize = (zbuff==ZSTDb_buffered) ? ZSTD_compressBound(blockSize)+1 : 0; - size_t const buffInSize = (zbuff==ZSTDb_buffered) ? ((size_t)1 << params.cParams.windowLog) + blockSize : 0; + size_t const buffInSize = (zbuff==ZSTDb_buffered) ? windowSize + blockSize : 0; void* ptr; /* Check if workSpace is large enough, alloc a new one if needed */ @@ -874,11 +878,15 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, : 0; size_t const neededSpace = entropySpace + optSpace + ldmSpace + tableSpace + tokenSpace + bufferSpace; + DEBUGLOG(4, "Need %uKB workspace, including %uKB for tables, and %uKB for buffers", + (U32)(neededSpace>>10), (U32)(tableSpace>>10), (U32)(bufferSpace>>10)); + DEBUGLOG(4, "chainSize: %u - hSize: %u - h3Size: %u - windowSize: %u - blockSize: %u", + (U32)chainSize, (U32)hSize, (U32)h3Size, (U32)windowSize, (U32)blockSize); if (zc->workSpaceSize < neededSpace) { /* too small : resize */ - DEBUGLOG(5, "Need to update workSpaceSize from %uK to %uK \n", - (unsigned)zc->workSpaceSize>>10, - (unsigned)neededSpace>>10); + DEBUGLOG(4, "Need to update workSpaceSize from %uK to %uK", + (unsigned)(zc->workSpaceSize>>10), + (unsigned)(neededSpace>>10)); /* static cctx : no resize, error out */ if (zc->staticSize) return ERROR(memory_allocation); @@ -901,7 +909,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, zc->consumedSrcSize = 0; if (pledgedSrcSize == ZSTD_CONTENTSIZE_UNKNOWN) zc->appliedParams.fParams.contentSizeFlag = 0; - DEBUGLOG(5, "pledged content size : %u ; flag : %u", + DEBUGLOG(4, "pledged content size : %u ; flag : %u", (U32)pledgedSrcSize, zc->appliedParams.fParams.contentSizeFlag); zc->blockSize = blockSize; @@ -927,7 +935,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, /* opt parser space */ if ((params.cParams.strategy == ZSTD_btopt) || (params.cParams.strategy == ZSTD_btultra)) { - DEBUGLOG(5, "reserving optimal parser space"); + DEBUGLOG(4, "reserving optimal parser space"); assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */ zc->optState.litFreq = (U32*)ptr; zc->optState.litLengthFreq = zc->optState.litFreq + (1<<Litbits); @@ -951,6 +959,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc, } /* table Space */ + DEBUGLOG(4, "reset table : %u", crp!=ZSTDcrp_noMemset); if (crp!=ZSTDcrp_noMemset) memset(ptr, 0, tableSpace); /* reset tables only */ assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */ zc->hashTable = (U32*)(ptr); @@ -999,15 +1008,16 @@ void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx) { /*! ZSTD_copyCCtx_internal() : * Duplicate an existing context `srcCCtx` into another one `dstCCtx`. - * The "context", in this case, refers to the hash and chain tables, entropy - * tables, and dictionary offsets. * Only works during stage ZSTDcs_init (i.e. after creation, but before first call to ZSTD_compressContinue()). - * pledgedSrcSize=0 means "empty" if fParams.contentSizeFlag=1 - * @return : 0, or an error code */ + * The "context", in this case, refers to the hash and chain tables, + * entropy tables, and dictionary references. + * `windowLog` value is enforced if != 0, otherwise value is copied from srcCCtx. + * @return : 0, or an error code */ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx, const ZSTD_CCtx* srcCCtx, + unsigned windowLog, ZSTD_frameParameters fParams, - unsigned long long pledgedSrcSize, + U64 pledgedSrcSize, ZSTD_buffered_policy_e zbuff) { DEBUGLOG(5, "ZSTD_copyCCtx_internal"); @@ -1017,6 +1027,7 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx, { ZSTD_CCtx_params params = dstCCtx->requestedParams; /* Copy only compression parameters related to tables. */ params.cParams = srcCCtx->appliedParams.cParams; + if (windowLog) params.cParams.windowLog = windowLog; params.fParams = fParams; ZSTD_resetCCtx_internal(dstCCtx, params, pledgedSrcSize, ZSTDcrp_noMemset, zbuff); @@ -1045,6 +1056,12 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx, /* copy entropy tables */ memcpy(dstCCtx->entropy, srcCCtx->entropy, sizeof(ZSTD_entropyCTables_t)); + /* copy repcodes */ + { + int i; + for (i = 0; i < ZSTD_REP_NUM; ++i) + dstCCtx->seqStore.rep[i] = srcCCtx->seqStore.rep[i]; + } return 0; } @@ -1059,9 +1076,12 @@ size_t ZSTD_copyCCtx(ZSTD_CCtx* dstCCtx, const ZSTD_CCtx* srcCCtx, unsigned long ZSTD_frameParameters fParams = { 1 /*content*/, 0 /*checksum*/, 0 /*noDictID*/ }; ZSTD_buffered_policy_e const zbuff = (ZSTD_buffered_policy_e)(srcCCtx->inBuffSize>0); ZSTD_STATIC_ASSERT((U32)ZSTDb_buffered==1); - fParams.contentSizeFlag = pledgedSrcSize>0; + if (pledgedSrcSize==0) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN; + fParams.contentSizeFlag = (pledgedSrcSize != ZSTD_CONTENTSIZE_UNKNOWN); - return ZSTD_copyCCtx_internal(dstCCtx, srcCCtx, fParams, pledgedSrcSize, zbuff); + return ZSTD_copyCCtx_internal(dstCCtx, srcCCtx, + 0 /*windowLog from srcCCtx*/, fParams, pledgedSrcSize, + zbuff); } @@ -1238,7 +1258,7 @@ static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy, ostart[4] = (BYTE)(cLitSize >> 10); break; } - default: /* not possible : lhSize is {3,4,5} */ + default: /* not possible : lhSize is {3,4,5} */ assert(0); } return lhSize+cLitSize; @@ -1247,8 +1267,6 @@ static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy, void ZSTD_seqToCodes(const seqStore_t* seqStorePtr) { - BYTE const LL_deltaCode = 19; - BYTE const ML_deltaCode = 36; const seqDef* const sequences = seqStorePtr->sequencesStart; BYTE* const llCodeTable = seqStorePtr->llCode; BYTE* const ofCodeTable = seqStorePtr->ofCode; @@ -1258,9 +1276,9 @@ void ZSTD_seqToCodes(const seqStore_t* seqStorePtr) for (u=0; u<nbSeq; u++) { U32 const llv = sequences[u].litLength; U32 const mlv = sequences[u].matchLength; - llCodeTable[u] = (llv> 63) ? (BYTE)ZSTD_highbit32(llv) + LL_deltaCode : LL_Code[llv]; + llCodeTable[u] = (BYTE)ZSTD_LLcode(llv); ofCodeTable[u] = (BYTE)ZSTD_highbit32(sequences[u].offset); - mlCodeTable[u] = (mlv>127) ? (BYTE)ZSTD_highbit32(mlv) + ML_deltaCode : ML_Code[mlv]; + mlCodeTable[u] = (BYTE)ZSTD_MLcode(mlv); } if (seqStorePtr->longLengthID==1) llCodeTable[seqStorePtr->longLengthPos] = MaxLL; @@ -1273,7 +1291,8 @@ typedef enum { ZSTD_defaultAllowed = 1 } ZSTD_defaultPolicy_e; -MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType( +MEM_STATIC +symbolEncodingType_e ZSTD_selectEncodingType( FSE_repeat* repeatMode, size_t const mostFrequent, size_t nbSeq, U32 defaultNormLog, ZSTD_defaultPolicy_e const isDefaultAllowed) { @@ -1281,6 +1300,7 @@ MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType( #define MAX_SEQ_FOR_STATIC_FSE 1000 ZSTD_STATIC_ASSERT(ZSTD_defaultDisallowed == 0 && ZSTD_defaultAllowed != 0); if ((mostFrequent == nbSeq) && (!isDefaultAllowed || nbSeq > 2)) { + DEBUGLOG(5, "Selected set_rle"); /* Prefer set_basic over set_rle when there are 2 or less symbols, * since RLE uses 1 byte, but set_basic uses 5-6 bits per symbol. * If basic encoding isn't possible, always choose RLE. @@ -1288,18 +1308,30 @@ MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType( *repeatMode = FSE_repeat_check; return set_rle; } - if (isDefaultAllowed && (*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) { + if ( isDefaultAllowed + && (*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) { + DEBUGLOG(5, "Selected set_repeat"); return set_repeat; } - if (isDefaultAllowed && ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1))))) { - *repeatMode = FSE_repeat_valid; + if ( isDefaultAllowed + && ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1)))) ) { + DEBUGLOG(5, "Selected set_basic"); + /* The format allows default tables to be repeated, but it isn't useful. + * When using simple heuristics to select encoding type, we don't want + * to confuse these tables with dictionaries. When running more careful + * analysis, we don't need to waste time checking both repeating tables + * and default tables. + */ + *repeatMode = FSE_repeat_none; return set_basic; } + DEBUGLOG(5, "Selected set_compressed"); *repeatMode = FSE_repeat_check; return set_compressed; } -MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity, +MEM_STATIC +size_t ZSTD_buildCTable(void* dst, size_t dstCapacity, FSE_CTable* CTable, U32 FSELog, symbolEncodingType_e type, U32* count, U32 max, BYTE const* codeTable, size_t nbSeq, @@ -1317,7 +1349,7 @@ MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity, case set_repeat: return 0; case set_basic: - CHECK_F(FSE_buildCTable_wksp(CTable, defaultNorm, defaultMax, defaultNormLog, workspace, workspaceSize)); + CHECK_F(FSE_buildCTable_wksp(CTable, defaultNorm, defaultMax, defaultNormLog, workspace, workspaceSize)); /* note : could be pre-calculated */ return 0; case set_compressed: { S16 norm[MaxSeq + 1]; @@ -1339,11 +1371,13 @@ MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity, } } -MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity, - FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable, - FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable, - FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable, - seqDef const* sequences, size_t nbSeq, int longOffsets) +MEM_STATIC +size_t ZSTD_encodeSequences( + void* dst, size_t dstCapacity, + FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable, + FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable, + FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable, + seqDef const* sequences, size_t nbSeq, int longOffsets) { BIT_CStream_t blockStream; FSE_CState_t stateMatchLength; @@ -1380,8 +1414,12 @@ MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity, BYTE const ofCode = ofCodeTable[n]; BYTE const mlCode = mlCodeTable[n]; U32 const llBits = LL_bits[llCode]; - U32 const ofBits = ofCode; /* 32b*/ /* 64b*/ + U32 const ofBits = ofCode; U32 const mlBits = ML_bits[mlCode]; + DEBUGLOG(6, "encoding: litlen:%2u - matchlen:%2u - offCode:%7u", + sequences[n].litLength, + sequences[n].matchLength + MINMATCH, + sequences[n].offset); /* 32b*/ /* 64b*/ /* (7)*/ /* (7)*/ FSE_encodeSymbol(&blockStream, &stateOffsetBits, ofCode); /* 15 */ /* 15 */ FSE_encodeSymbol(&blockStream, &stateMatchLength, mlCode); /* 24 */ /* 24 */ @@ -1447,14 +1485,18 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr, entropy, cParams->strategy, op, dstCapacity, literals, litSize); if (ZSTD_isError(cSize)) return cSize; + assert(cSize <= dstCapacity); op += cSize; } /* Sequences Header */ - if ((oend-op) < 3 /*max nbSeq Size*/ + 1 /*seqHead */) return ERROR(dstSize_tooSmall); - if (nbSeq < 0x7F) *op++ = (BYTE)nbSeq; - else if (nbSeq < LONGNBSEQ) op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2; - else op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3; + if ((oend-op) < 3 /*max nbSeq Size*/ + 1 /*seqHead*/) return ERROR(dstSize_tooSmall); + if (nbSeq < 0x7F) + *op++ = (BYTE)nbSeq; + else if (nbSeq < LONGNBSEQ) + op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2; + else + op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3; if (nbSeq==0) return op - ostart; /* seqHead : flags for FSE encoding type */ @@ -1462,9 +1504,10 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr, /* convert length/distances into codes */ ZSTD_seqToCodes(seqStorePtr); - /* CTable for Literal Lengths */ + /* build CTable for Literal Lengths */ { U32 max = MaxLL; size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, entropy->workspace); + DEBUGLOG(5, "Building LL table"); LLtype = ZSTD_selectEncodingType(&entropy->litlength_repeatMode, mostFrequent, nbSeq, LL_defaultNormLog, ZSTD_defaultAllowed); { size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_LitLength, LLFSELog, (symbolEncodingType_e)LLtype, count, max, llCodeTable, nbSeq, LL_defaultNorm, LL_defaultNormLog, MaxLL, @@ -1472,11 +1515,12 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr, if (ZSTD_isError(countSize)) return countSize; op += countSize; } } - /* CTable for Offsets */ + /* build CTable for Offsets */ { U32 max = MaxOff; size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, entropy->workspace); /* We can only use the basic table if max <= DefaultMaxOff, otherwise the offsets are too large */ - ZSTD_defaultPolicy_e const defaultPolicy = max <= DefaultMaxOff ? ZSTD_defaultAllowed : ZSTD_defaultDisallowed; + ZSTD_defaultPolicy_e const defaultPolicy = (max <= DefaultMaxOff) ? ZSTD_defaultAllowed : ZSTD_defaultDisallowed; + DEBUGLOG(5, "Building OF table"); Offtype = ZSTD_selectEncodingType(&entropy->offcode_repeatMode, mostFrequent, nbSeq, OF_defaultNormLog, defaultPolicy); { size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_OffsetBits, OffFSELog, (symbolEncodingType_e)Offtype, count, max, ofCodeTable, nbSeq, OF_defaultNorm, OF_defaultNormLog, DefaultMaxOff, @@ -1484,9 +1528,10 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr, if (ZSTD_isError(countSize)) return countSize; op += countSize; } } - /* CTable for MatchLengths */ + /* build CTable for MatchLengths */ { U32 max = MaxML; size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, entropy->workspace); + DEBUGLOG(5, "Building ML table"); MLtype = ZSTD_selectEncodingType(&entropy->matchlength_repeatMode, mostFrequent, nbSeq, ML_defaultNormLog, ZSTD_defaultAllowed); { size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_MatchLength, MLFSELog, (symbolEncodingType_e)MLtype, count, max, mlCodeTable, nbSeq, ML_defaultNorm, ML_defaultNormLog, MaxML, @@ -1497,13 +1542,15 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr, *seqHead = (BYTE)((LLtype<<6) + (Offtype<<4) + (MLtype<<2)); - { size_t const streamSize = ZSTD_encodeSequences(op, oend - op, - CTable_MatchLength, mlCodeTable, - CTable_OffsetBits, ofCodeTable, - CTable_LitLength, llCodeTable, - sequences, nbSeq, longOffsets); - if (ZSTD_isError(streamSize)) return streamSize; - op += streamSize; + { size_t const bitstreamSize = ZSTD_encodeSequences( + op, oend - op, + CTable_MatchLength, mlCodeTable, + CTable_OffsetBits, ofCodeTable, + CTable_LitLength, llCodeTable, + sequences, nbSeq, + longOffsets); + if (ZSTD_isError(bitstreamSize)) return bitstreamSize; + op += bitstreamSize; } return op - ostart; @@ -1517,27 +1564,33 @@ MEM_STATIC size_t ZSTD_compressSequences(seqStore_t* seqStorePtr, { size_t const cSize = ZSTD_compressSequences_internal(seqStorePtr, entropy, cParams, dst, dstCapacity); - size_t const minGain = ZSTD_minGain(srcSize); - size_t const maxCSize = srcSize - minGain; /* If the srcSize <= dstCapacity, then there is enough space to write a * raw uncompressed block. Since we ran out of space, the block must not * be compressible, so fall back to a raw uncompressed block. */ - int const uncompressibleError = cSize == ERROR(dstSize_tooSmall) && srcSize <= dstCapacity; - + int const uncompressibleError = (cSize == ERROR(dstSize_tooSmall)) && (srcSize <= dstCapacity); if (ZSTD_isError(cSize) && !uncompressibleError) return cSize; + /* We check that dictionaries have offset codes available for the first + * block. After the first block, the offcode table might not have large + * enough codes to represent the offsets in the data. + */ + if (entropy->offcode_repeatMode == FSE_repeat_valid) + entropy->offcode_repeatMode = FSE_repeat_check; + /* Check compressibility */ - if (cSize >= maxCSize || uncompressibleError) { - entropy->hufCTable_repeatMode = HUF_repeat_none; - entropy->offcode_repeatMode = FSE_repeat_none; - entropy->matchlength_repeatMode = FSE_repeat_none; - entropy->litlength_repeatMode = FSE_repeat_none; - return 0; - } + { size_t const minGain = ZSTD_minGain(srcSize); /* note : fixed formula, maybe should depend on compression level, or strategy */ + size_t const maxCSize = srcSize - minGain; + if (cSize >= maxCSize || uncompressibleError) { + entropy->hufCTable_repeatMode = HUF_repeat_none; + entropy->offcode_repeatMode = FSE_repeat_none; + entropy->matchlength_repeatMode = FSE_repeat_none; + entropy->litlength_repeatMode = FSE_repeat_none; + return 0; /* block not compressed */ + } } assert(!ZSTD_isError(cSize)); - /* confirm repcodes */ + /* block is compressed => confirm repcodes in history */ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->rep[i] = seqStorePtr->repToConfirm[i]; } return cSize; } @@ -1559,9 +1612,9 @@ ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int extDict ZSTD_compressBlock_btopt_extDict, ZSTD_compressBlock_btultra_extDict } }; ZSTD_STATIC_ASSERT((unsigned)ZSTD_fast == 1); + assert((U32)strat >= (U32)ZSTD_fast); assert((U32)strat <= (U32)ZSTD_btultra); - return blockCompressor[extDict!=0][(U32)strat]; } @@ -1572,30 +1625,38 @@ static void ZSTD_storeLastLiterals(seqStore_t* seqStorePtr, seqStorePtr->lit += lastLLSize; } +static void ZSTD_resetSeqStore(seqStore_t* ssPtr) +{ + ssPtr->lit = ssPtr->litStart; + ssPtr->sequences = ssPtr->sequencesStart; + ssPtr->longLengthID = 0; +} + static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCapacity, const void* src, size_t srcSize) { - const BYTE* const base = zc->base; - const BYTE* const istart = (const BYTE*)src; - const U32 current = (U32)(istart-base); - size_t lastLLSize; - const BYTE* anchor; - U32 const extDict = zc->lowLimit < zc->dictLimit; - const ZSTD_blockCompressor blockCompressor = - zc->appliedParams.ldmParams.enableLdm - ? (extDict ? ZSTD_compressBlock_ldm_extDict : ZSTD_compressBlock_ldm) - : ZSTD_selectBlockCompressor(zc->appliedParams.cParams.strategy, extDict); - - if (srcSize < MIN_CBLOCK_SIZE+ZSTD_blockHeaderSize+1) return 0; /* don't even attempt compression below a certain srcSize */ + DEBUGLOG(5, "ZSTD_compressBlock_internal : dstCapacity = %u", (U32)dstCapacity); + if (srcSize < MIN_CBLOCK_SIZE+ZSTD_blockHeaderSize+1) + return 0; /* don't even attempt compression below a certain srcSize */ ZSTD_resetSeqStore(&(zc->seqStore)); - if (current > zc->nextToUpdate + 384) - zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384)); /* limited update after finding a very long match */ - - lastLLSize = blockCompressor(zc, src, srcSize); - - /* Last literals */ - anchor = (const BYTE*)src + srcSize - lastLLSize; - ZSTD_storeLastLiterals(&zc->seqStore, anchor, lastLLSize); + /* limited update after a very long match */ + { const BYTE* const base = zc->base; + const BYTE* const istart = (const BYTE*)src; + const U32 current = (U32)(istart-base); + if (current > zc->nextToUpdate + 384) + zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384)); + } + /* find and store sequences */ + { U32 const extDict = zc->lowLimit < zc->dictLimit; + const ZSTD_blockCompressor blockCompressor = + zc->appliedParams.ldmParams.enableLdm + ? (extDict ? ZSTD_compressBlock_ldm_extDict : ZSTD_compressBlock_ldm) + : ZSTD_selectBlockCompressor(zc->appliedParams.cParams.strategy, extDict); + size_t const lastLLSize = blockCompressor(zc, src, srcSize); + const BYTE* const anchor = (const BYTE*)src + srcSize - lastLLSize; + ZSTD_storeLastLiterals(&zc->seqStore, anchor, lastLLSize); + } + /* encode */ return ZSTD_compressSequences(&zc->seqStore, zc->entropy, &zc->appliedParams.cParams, dst, dstCapacity, srcSize); } @@ -1618,13 +1679,14 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx, BYTE* const ostart = (BYTE*)dst; BYTE* op = ostart; U32 const maxDist = (U32)1 << cctx->appliedParams.cParams.windowLog; + assert(cctx->appliedParams.cParams.windowLog <= 31); + DEBUGLOG(5, "ZSTD_compress_frameChunk (blockSize=%u)", (U32)blockSize); if (cctx->appliedParams.fParams.checksumFlag && srcSize) XXH64_update(&cctx->xxhState, src, srcSize); while (remaining) { U32 const lastBlock = lastFrameChunk & (blockSize >= remaining); - size_t cSize; if (dstCapacity < ZSTD_blockHeaderSize + MIN_CBLOCK_SIZE) return ERROR(dstSize_tooSmall); /* not enough space to store compressed block */ @@ -1666,34 +1728,39 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx, else cctx->nextToUpdate -= correction; DEBUGLOG(4, "Correction of 0x%x bytes to lowLimit=0x%x\n", correction, cctx->lowLimit); } - + /* enforce maxDist */ if ((U32)(ip+blockSize - cctx->base) > cctx->loadedDictEnd + maxDist) { - /* enforce maxDist */ U32 const newLowLimit = (U32)(ip+blockSize - cctx->base) - maxDist; if (cctx->lowLimit < newLowLimit) cctx->lowLimit = newLowLimit; if (cctx->dictLimit < cctx->lowLimit) cctx->dictLimit = cctx->lowLimit; } - cSize = ZSTD_compressBlock_internal(cctx, op+ZSTD_blockHeaderSize, dstCapacity-ZSTD_blockHeaderSize, ip, blockSize); - if (ZSTD_isError(cSize)) return cSize; - - if (cSize == 0) { /* block is not compressible */ - U32 const cBlockHeader24 = lastBlock + (((U32)bt_raw)<<1) + (U32)(blockSize << 3); - if (blockSize + ZSTD_blockHeaderSize > dstCapacity) return ERROR(dstSize_tooSmall); - MEM_writeLE32(op, cBlockHeader24); /* no pb, 4th byte will be overwritten */ - memcpy(op + ZSTD_blockHeaderSize, ip, blockSize); - cSize = ZSTD_blockHeaderSize+blockSize; - } else { - U32 const cBlockHeader24 = lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3); - MEM_writeLE24(op, cBlockHeader24); - cSize += ZSTD_blockHeaderSize; - } + { size_t cSize = ZSTD_compressBlock_internal(cctx, + op+ZSTD_blockHeaderSize, dstCapacity-ZSTD_blockHeaderSize, + ip, blockSize); + if (ZSTD_isError(cSize)) return cSize; + + if (cSize == 0) { /* block is not compressible */ + U32 const cBlockHeader24 = lastBlock + (((U32)bt_raw)<<1) + (U32)(blockSize << 3); + if (blockSize + ZSTD_blockHeaderSize > dstCapacity) return ERROR(dstSize_tooSmall); + MEM_writeLE32(op, cBlockHeader24); /* 4th byte will be overwritten */ + memcpy(op + ZSTD_blockHeaderSize, ip, blockSize); + cSize = ZSTD_blockHeaderSize + blockSize; + } else { + U32 const cBlockHeader24 = lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3); + MEM_writeLE24(op, cBlockHeader24); + cSize += ZSTD_blockHeaderSize; + } - remaining -= blockSize; - dstCapacity -= cSize; - ip += blockSize; - op += cSize; - } + ip += blockSize; + assert(remaining >= blockSize); + remaining -= blockSize; + op += cSize; + assert(dstCapacity >= cSize); + dstCapacity -= cSize; + DEBUGLOG(5, "ZSTD_compress_frameChunk: adding a block of size %u", + (U32)cSize); + } } if (lastFrameChunk && (op>ostart)) cctx->stage = ZSTDcs_ending; return op-ostart; @@ -1719,7 +1786,6 @@ static size_t ZSTD_writeFrameHeader(void* dst, size_t dstCapacity, !params.fParams.noDictIDFlag, dictID, dictIDSizeCode); if (params.format == ZSTD_f_zstd1) { - DEBUGLOG(4, "writing zstd magic number"); MEM_writeLE32(dst, ZSTD_MAGICNUMBER); pos = 4; } @@ -1753,8 +1819,7 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx, const BYTE* const ip = (const BYTE*) src; size_t fhSize = 0; - DEBUGLOG(5, "ZSTD_compressContinue_internal"); - DEBUGLOG(5, "stage: %u", cctx->stage); + DEBUGLOG(5, "ZSTD_compressContinue_internal, stage: %u", cctx->stage); if (cctx->stage==ZSTDcs_created) return ERROR(stage_wrong); /* missing init (ZSTD_compressBegin) */ if (frame && (cctx->stage==ZSTDcs_init)) { @@ -1766,17 +1831,21 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx, cctx->stage = ZSTDcs_ongoing; } + if (!srcSize) return fhSize; /* do not generate an empty block if no input */ + /* Check if blocks follow each other */ if (src != cctx->nextSrc) { /* not contiguous */ - ptrdiff_t const delta = cctx->nextSrc - ip; + size_t const distanceFromBase = (size_t)(cctx->nextSrc - cctx->base); cctx->lowLimit = cctx->dictLimit; - cctx->dictLimit = (U32)(cctx->nextSrc - cctx->base); + assert(distanceFromBase == (size_t)(U32)distanceFromBase); /* should never overflow */ + cctx->dictLimit = (U32)distanceFromBase; cctx->dictBase = cctx->base; - cctx->base -= delta; + cctx->base = ip - distanceFromBase; cctx->nextToUpdate = cctx->dictLimit; if (cctx->dictLimit - cctx->lowLimit < HASH_READ_SIZE) cctx->lowLimit = cctx->dictLimit; /* too small extDict */ } + cctx->nextSrc = ip + srcSize; /* if input and dictionary overlap : reduce dictionary (area presumed modified by input) */ if ((ip+srcSize > cctx->dictBase + cctx->lowLimit) & (ip < cctx->dictBase + cctx->dictLimit)) { @@ -1785,17 +1854,14 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx, cctx->lowLimit = lowLimitMax; } - cctx->nextSrc = ip + srcSize; - - if (srcSize) { - size_t const cSize = frame ? + DEBUGLOG(5, "ZSTD_compressContinue_internal (blockSize=%u)", (U32)cctx->blockSize); + { size_t const cSize = frame ? ZSTD_compress_frameChunk (cctx, dst, dstCapacity, src, srcSize, lastFrameChunk) : ZSTD_compressBlock_internal (cctx, dst, dstCapacity, src, srcSize); if (ZSTD_isError(cSize)) return cSize; cctx->consumedSrcSize += srcSize; return cSize + fhSize; - } else - return fhSize; + } } size_t ZSTD_compressContinue (ZSTD_CCtx* cctx, @@ -1832,7 +1898,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_CCtx* zc, const void* src, size_t zc->lowLimit = zc->dictLimit; zc->dictLimit = (U32)(zc->nextSrc - zc->base); zc->dictBase = zc->base; - zc->base += ip - zc->nextSrc; + zc->base = ip - zc->dictLimit; zc->nextToUpdate = zc->dictLimit; zc->loadedDictEnd = zc->appliedParams.forceWindow ? 0 : (U32)(iend - zc->base); @@ -1983,7 +2049,7 @@ static size_t ZSTD_compress_insertDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode) { - DEBUGLOG(5, "ZSTD_compress_insertDictionary"); + DEBUGLOG(4, "ZSTD_compress_insertDictionary (dictSize=%u)", (U32)dictSize); if ((dict==NULL) || (dictSize<=8)) return 0; /* dict restricted modes */ @@ -1992,7 +2058,7 @@ static size_t ZSTD_compress_insertDictionary(ZSTD_CCtx* cctx, if (MEM_readLE32(dict) != ZSTD_MAGIC_DICTIONARY) { if (dictMode == ZSTD_dm_auto) { - DEBUGLOG(5, "raw content dictionary detected"); + DEBUGLOG(4, "raw content dictionary detected"); return ZSTD_loadDictionaryContent(cctx, dict, dictSize); } if (dictMode == ZSTD_dm_fullDict) @@ -2006,21 +2072,22 @@ static size_t ZSTD_compress_insertDictionary(ZSTD_CCtx* cctx, /*! ZSTD_compressBegin_internal() : * @return : 0, or an error code */ -static size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx, +size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode, const ZSTD_CDict* cdict, - ZSTD_CCtx_params params, U64 pledgedSrcSize, - ZSTD_buffered_policy_e zbuff) + ZSTD_CCtx_params params, U64 pledgedSrcSize, + ZSTD_buffered_policy_e zbuff) { - DEBUGLOG(4, "ZSTD_compressBegin_internal"); + DEBUGLOG(4, "ZSTD_compressBegin_internal: wlog=%u", params.cParams.windowLog); /* params are supposed to be fully validated at this point */ assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams))); assert(!((dict) && (cdict))); /* either dict or cdict, not both */ if (cdict && cdict->dictContentSize>0) { + cctx->requestedParams = params; return ZSTD_copyCCtx_internal(cctx, cdict->refContext, - params.fParams, pledgedSrcSize, + params.cParams.windowLog, params.fParams, pledgedSrcSize, zbuff); } @@ -2029,16 +2096,19 @@ static size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx, return ZSTD_compress_insertDictionary(cctx, dict, dictSize, dictMode); } -size_t ZSTD_compressBegin_advanced_internal( - ZSTD_CCtx* cctx, +size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode, + const ZSTD_CDict* cdict, ZSTD_CCtx_params params, unsigned long long pledgedSrcSize) { + DEBUGLOG(4, "ZSTD_compressBegin_advanced_internal: wlog=%u", params.cParams.windowLog); /* compression parameters verification and optimization */ CHECK_F( ZSTD_checkCParams(params.cParams) ); - return ZSTD_compressBegin_internal(cctx, dict, dictSize, dictMode, NULL, + return ZSTD_compressBegin_internal(cctx, + dict, dictSize, dictMode, + cdict, params, pledgedSrcSize, ZSTDb_not_buffered); } @@ -2051,9 +2121,10 @@ size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, { ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params); - return ZSTD_compressBegin_advanced_internal(cctx, dict, dictSize, ZSTD_dm_auto, - cctxParams, - pledgedSrcSize); + return ZSTD_compressBegin_advanced_internal(cctx, + dict, dictSize, ZSTD_dm_auto, + NULL /*cdict*/, + cctxParams, pledgedSrcSize); } size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel) @@ -2061,8 +2132,9 @@ size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t di ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, dictSize); ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params); + DEBUGLOG(4, "ZSTD_compressBegin_usingDict"); return ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL, - cctxParams, 0, ZSTDb_not_buffered); + cctxParams, ZSTD_CONTENTSIZE_UNKNOWN, ZSTDb_not_buffered); } size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel) @@ -2143,6 +2215,7 @@ static size_t ZSTD_compress_internal (ZSTD_CCtx* cctx, { ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params); + DEBUGLOG(4, "ZSTD_compress_internal"); return ZSTD_compress_advanced_internal(cctx, dst, dstCapacity, src, srcSize, @@ -2156,6 +2229,7 @@ size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx, const void* dict,size_t dictSize, ZSTD_parameters params) { + DEBUGLOG(4, "ZSTD_compress_advanced"); CHECK_F(ZSTD_checkCParams(params.cParams)); return ZSTD_compress_internal(ctx, dst, dstCapacity, src, srcSize, dict, dictSize, params); } @@ -2168,6 +2242,7 @@ size_t ZSTD_compress_advanced_internal( const void* dict,size_t dictSize, ZSTD_CCtx_params params) { + DEBUGLOG(4, "ZSTD_compress_advanced_internal"); CHECK_F( ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL, params, srcSize, ZSTDb_not_buffered) ); return ZSTD_compressEnd(cctx, dst, dstCapacity, src, srcSize); @@ -2176,8 +2251,10 @@ size_t ZSTD_compress_advanced_internal( size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize, const void* dict, size_t dictSize, int compressionLevel) { - ZSTD_parameters params = ZSTD_getParams(compressionLevel, srcSize, dict ? dictSize : 0); + ZSTD_parameters params = ZSTD_getParams(compressionLevel, srcSize ? srcSize : 1, dict ? dictSize : 0); params.fParams.contentSizeFlag = 1; + DEBUGLOG(4, "ZSTD_compress_usingDict (level=%i, srcSize=%u, dictSize=%u)", + compressionLevel, (U32)srcSize, (U32)dictSize); return ZSTD_compress_internal(ctx, dst, dstCapacity, src, srcSize, dict, dictSize, params); } @@ -2234,7 +2311,7 @@ static size_t ZSTD_initCDict_internal( ZSTD_dictMode_e dictMode, ZSTD_compressionParameters cParams) { - DEBUGLOG(5, "ZSTD_initCDict_internal, mode %u", (U32)dictMode); + DEBUGLOG(3, "ZSTD_initCDict_internal, mode %u", (U32)dictMode); if ((dictLoadMethod == ZSTD_dlm_byRef) || (!dictBuffer) || (!dictSize)) { cdict->dictBuffer = NULL; cdict->dictContent = dictBuffer; @@ -2264,7 +2341,7 @@ ZSTD_CDict* ZSTD_createCDict_advanced(const void* dictBuffer, size_t dictSize, ZSTD_dictMode_e dictMode, ZSTD_compressionParameters cParams, ZSTD_customMem customMem) { - DEBUGLOG(5, "ZSTD_createCDict_advanced, mode %u", (U32)dictMode); + DEBUGLOG(3, "ZSTD_createCDict_advanced, mode %u", (U32)dictMode); if (!customMem.customAlloc ^ !customMem.customFree) return NULL; { ZSTD_CDict* const cdict = (ZSTD_CDict*)ZSTD_malloc(sizeof(ZSTD_CDict), customMem); @@ -2339,9 +2416,9 @@ ZSTD_CDict* ZSTD_initStaticCDict(void* workspace, size_t workspaceSize, + cctxSize; ZSTD_CDict* const cdict = (ZSTD_CDict*) workspace; void* ptr; - DEBUGLOG(5, "(size_t)workspace & 7 : %u", (U32)(size_t)workspace & 7); + DEBUGLOG(4, "(size_t)workspace & 7 : %u", (U32)(size_t)workspace & 7); if ((size_t)workspace & 7) return NULL; /* 8-aligned */ - DEBUGLOG(5, "(workspaceSize < neededSize) : (%u < %u) => %u", + DEBUGLOG(4, "(workspaceSize < neededSize) : (%u < %u) => %u", (U32)workspaceSize, (U32)neededSize, (U32)(workspaceSize < neededSize)); if (workspaceSize < neededSize) return NULL; @@ -2373,11 +2450,11 @@ size_t ZSTD_compressBegin_usingCDict_advanced( ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize) { + DEBUGLOG(4, "ZSTD_compressBegin_usingCDict_advanced"); if (cdict==NULL) return ERROR(dictionary_wrong); { ZSTD_CCtx_params params = cctx->requestedParams; params.cParams = ZSTD_getCParamsFromCDict(cdict); params.fParams = fParams; - DEBUGLOG(5, "ZSTD_compressBegin_usingCDict_advanced"); return ZSTD_compressBegin_internal(cctx, NULL, 0, ZSTD_dm_auto, cdict, @@ -2392,7 +2469,7 @@ size_t ZSTD_compressBegin_usingCDict_advanced( size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict) { ZSTD_frameParameters const fParams = { 0 /*content*/, 0 /*checksum*/, 0 /*noDictID*/ }; - DEBUGLOG(5, "ZSTD_compressBegin_usingCDict : dictIDFlag == %u", !fParams.noDictIDFlag); + DEBUGLOG(4, "ZSTD_compressBegin_usingCDict : dictIDFlag == %u", !fParams.noDictIDFlag); return ZSTD_compressBegin_usingCDict_advanced(cctx, cdict, fParams, 0); } @@ -2427,6 +2504,7 @@ size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, ZSTD_CStream* ZSTD_createCStream(void) { + DEBUGLOG(3, "ZSTD_createCStream"); return ZSTD_createCStream_advanced(ZSTD_defaultCMem); } @@ -2457,9 +2535,9 @@ size_t ZSTD_CStreamOutSize(void) } static size_t ZSTD_resetCStream_internal(ZSTD_CStream* zcs, - const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode, - const ZSTD_CDict* cdict, - const ZSTD_CCtx_params params, unsigned long long pledgedSrcSize) + const void* const dict, size_t const dictSize, ZSTD_dictMode_e const dictMode, + const ZSTD_CDict* const cdict, + ZSTD_CCtx_params const params, unsigned long long const pledgedSrcSize) { DEBUGLOG(4, "ZSTD_resetCStream_internal"); /* params are supposed to be fully validated at this point */ @@ -2467,31 +2545,35 @@ static size_t ZSTD_resetCStream_internal(ZSTD_CStream* zcs, assert(!((dict) && (cdict))); /* either dict or cdict, not both */ CHECK_F( ZSTD_compressBegin_internal(zcs, - dict, dictSize, dictMode, - cdict, - params, pledgedSrcSize, - ZSTDb_buffered) ); + dict, dictSize, dictMode, + cdict, + params, pledgedSrcSize, + ZSTDb_buffered) ); zcs->inToCompress = 0; zcs->inBuffPos = 0; - zcs->inBuffTarget = zcs->blockSize; + zcs->inBuffTarget = zcs->blockSize + + (zcs->blockSize == pledgedSrcSize); /* for small input: avoid automatic flush on reaching end of block, since it would require to add a 3-bytes null block to end frame */ zcs->outBuffContentSize = zcs->outBuffFlushedSize = 0; zcs->streamStage = zcss_load; zcs->frameEnded = 0; return 0; /* ready to go */ } +/* ZSTD_resetCStream(): + * pledgedSrcSize == 0 means "unknown" */ size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize) { ZSTD_CCtx_params params = zcs->requestedParams; - params.fParams.contentSizeFlag = (pledgedSrcSize > 0); + DEBUGLOG(4, "ZSTD_resetCStream: pledgedSrcSize = %u", (U32)pledgedSrcSize); + if (pledgedSrcSize==0) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN; + params.fParams.contentSizeFlag = 1; params.cParams = ZSTD_getCParamsFromCCtxParams(params, pledgedSrcSize, 0); - DEBUGLOG(4, "ZSTD_resetCStream"); return ZSTD_resetCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, zcs->cdict, params, pledgedSrcSize); } /*! ZSTD_initCStream_internal() : - * Note : not static, but hidden (not exposed). Used by zstdmt_compress.c + * Note : for lib/compress only. Used by zstdmt_compress.c. * Assumption 1 : params are valid * Assumption 2 : either dict, or cdict, is defined, not both */ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs, @@ -2503,7 +2585,7 @@ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs, assert(!((dict) && (cdict))); /* either dict or cdict, not both */ if (dict && dictSize >= 8) { - DEBUGLOG(5, "loading dictionary of size %u", (U32)dictSize); + DEBUGLOG(4, "loading dictionary of size %u", (U32)dictSize); if (zcs->staticSize) { /* static CCtx : never uses malloc */ /* incompatible with internal cdict creation */ return ERROR(memory_allocation); @@ -2516,14 +2598,14 @@ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs, if (zcs->cdictLocal == NULL) return ERROR(memory_allocation); } else { if (cdict) { - params.cParams = ZSTD_getCParamsFromCDict(cdict); /* cParams are enforced from cdict */ + params.cParams = ZSTD_getCParamsFromCDict(cdict); /* cParams are enforced from cdict; it includes windowLog */ } ZSTD_freeCDict(zcs->cdictLocal); zcs->cdictLocal = NULL; zcs->cdict = cdict; } - params.compressionLevel = ZSTD_CLEVEL_CUSTOM; + params.compressionLevel = ZSTD_CLEVEL_CUSTOM; /* enforce usage of cParams, instead of a dynamic derivation from cLevel (but does that happen ?) */ zcs->requestedParams = params; return ZSTD_resetCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, zcs->cdict, params, pledgedSrcSize); @@ -2535,8 +2617,9 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize) -{ /* cannot handle NULL cdict (does not know what to do) */ - if (!cdict) return ERROR(dictionary_wrong); +{ + DEBUGLOG(4, "ZSTD_initCStream_usingCDict_advanced"); + if (!cdict) return ERROR(dictionary_wrong); /* cannot handle NULL cdict (does not know what to do) */ { ZSTD_CCtx_params params = zcs->requestedParams; params.cParams = ZSTD_getCParamsFromCDict(cdict); params.fParams = fParams; @@ -2549,18 +2632,25 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, /* note : cdict must outlive compression session */ size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict) { - ZSTD_frameParameters const fParams = { 0 /* contentSize */, 0 /* checksum */, 0 /* hideDictID */ }; - return ZSTD_initCStream_usingCDict_advanced(zcs, cdict, fParams, 0); /* note : will check that cdict != NULL */ + ZSTD_frameParameters const fParams = { 0 /* contentSizeFlag */, 0 /* checksum */, 0 /* hideDictID */ }; + DEBUGLOG(4, "ZSTD_initCStream_usingCDict"); + return ZSTD_initCStream_usingCDict_advanced(zcs, cdict, fParams, ZSTD_CONTENTSIZE_UNKNOWN); /* note : will check that cdict != NULL */ } +/* ZSTD_initCStream_advanced() : + * pledgedSrcSize must be correct. + * if srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. + * dict is loaded with default parameters ZSTD_dm_auto and ZSTD_dlm_byCopy. */ size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize) { - ZSTD_CCtx_params const cctxParams = - ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params); + ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params); + DEBUGLOG(4, "ZSTD_initCStream_advanced: pledgedSrcSize=%u, flag=%u", + (U32)pledgedSrcSize, params.fParams.contentSizeFlag); CHECK_F( ZSTD_checkCParams(params.cParams) ); - return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, pledgedSrcSize); + if ((pledgedSrcSize==0) && (params.fParams.contentSizeFlag==0)) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN; /* for compatibility with older programs relying on this behavior. Users should now specify ZSTD_CONTENTSIZE_UNKNOWN. This line will be removed in the future. */ + return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL /*cdict*/, cctxParams, pledgedSrcSize); } size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel) @@ -2568,21 +2658,21 @@ size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t di ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, dictSize); ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params); - return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, 0); + return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, ZSTD_CONTENTSIZE_UNKNOWN); } -size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize) +size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pss) { - ZSTD_CCtx_params cctxParams; + U64 const pledgedSrcSize = (pss==0) ? ZSTD_CONTENTSIZE_UNKNOWN : pss; /* temporary : 0 interpreted as "unknown" during transition period. Users willing to specify "unknown" **must** use ZSTD_CONTENTSIZE_UNKNOWN. `0` will be interpreted as "empty" in the future */ ZSTD_parameters const params = ZSTD_getParams(compressionLevel, pledgedSrcSize, 0); - cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params); - cctxParams.fParams.contentSizeFlag = (pledgedSrcSize>0); + ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params); return ZSTD_initCStream_internal(zcs, NULL, 0, NULL, cctxParams, pledgedSrcSize); } size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel) { - return ZSTD_initCStream_srcSize(zcs, compressionLevel, 0); + DEBUGLOG(4, "ZSTD_initCStream"); + return ZSTD_initCStream_srcSize(zcs, compressionLevel, ZSTD_CONTENTSIZE_UNKNOWN); } /*====== Compression ======*/ @@ -2615,9 +2705,9 @@ size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs, /* check expectations */ DEBUGLOG(5, "ZSTD_compressStream_generic, flush=%u", (U32)flushMode); assert(zcs->inBuff != NULL); - assert(zcs->inBuffSize>0); - assert(zcs->outBuff!= NULL); - assert(zcs->outBuffSize>0); + assert(zcs->inBuffSize > 0); + assert(zcs->outBuff != NULL); + assert(zcs->outBuffSize > 0); assert(output->pos <= output->size); assert(input->pos <= input->size); @@ -2757,7 +2847,7 @@ size_t ZSTD_compress_generic (ZSTD_CCtx* cctx, ZSTD_inBuffer* input, ZSTD_EndDirective endOp) { - DEBUGLOG(5, "ZSTD_compress_generic"); + DEBUGLOG(5, "ZSTD_compress_generic, endOp=%u ", (U32)endOp); /* check conditions */ if (output->pos > output->size) return ERROR(GENERIC); if (input->pos > input->size) return ERROR(GENERIC); @@ -2765,42 +2855,47 @@ size_t ZSTD_compress_generic (ZSTD_CCtx* cctx, /* transparent initialization stage */ if (cctx->streamStage == zcss_init) { - ZSTD_prefixDict const prefixDict = cctx->prefixDict; ZSTD_CCtx_params params = cctx->requestedParams; - params.cParams = ZSTD_getCParamsFromCCtxParams( - cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, 0 /*dictSize*/); + ZSTD_prefixDict const prefixDict = cctx->prefixDict; memset(&cctx->prefixDict, 0, sizeof(cctx->prefixDict)); /* single usage */ assert(prefixDict.dict==NULL || cctx->cdict==NULL); /* only one can be set */ DEBUGLOG(4, "ZSTD_compress_generic : transparent init stage"); + if (endOp == ZSTD_e_end) cctx->pledgedSrcSizePlusOne = input->size + 1; /* auto-fix pledgedSrcSize */ + params.cParams = ZSTD_getCParamsFromCCtxParams( + cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, 0 /*dictSize*/); #ifdef ZSTD_MULTITHREAD + if ((cctx->pledgedSrcSizePlusOne-1) <= ZSTDMT_JOBSIZE_MIN) + params.nbThreads = 1; /* do not invoke multi-threading when src size is too small */ if (params.nbThreads > 1) { - if (cctx->mtctx == NULL || cctx->appliedParams.nbThreads != params.nbThreads) { + if (cctx->mtctx == NULL || (params.nbThreads != ZSTDMT_getNbThreads(cctx->mtctx))) { + DEBUGLOG(4, "ZSTD_compress_generic: creating new mtctx for nbThreads=%u (previous: %u)", + params.nbThreads, ZSTDMT_getNbThreads(cctx->mtctx)); ZSTDMT_freeCCtx(cctx->mtctx); cctx->mtctx = ZSTDMT_createCCtx_advanced(params.nbThreads, cctx->customMem); if (cctx->mtctx == NULL) return ERROR(memory_allocation); } DEBUGLOG(4, "call ZSTDMT_initCStream_internal as nbThreads=%u", params.nbThreads); CHECK_F( ZSTDMT_initCStream_internal( - cctx->mtctx, - prefixDict.dict, prefixDict.dictSize, ZSTD_dm_rawContent, - cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) ); + cctx->mtctx, + prefixDict.dict, prefixDict.dictSize, ZSTD_dm_rawContent, + cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) ); cctx->streamStage = zcss_load; cctx->appliedParams.nbThreads = params.nbThreads; } else #endif - { - CHECK_F( ZSTD_resetCStream_internal( + { CHECK_F( ZSTD_resetCStream_internal( cctx, prefixDict.dict, prefixDict.dictSize, prefixDict.dictMode, cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) ); + assert(cctx->streamStage == zcss_load); + assert(cctx->appliedParams.nbThreads <= 1); } } /* compression stage */ #ifdef ZSTD_MULTITHREAD if (cctx->appliedParams.nbThreads > 1) { size_t const flushMin = ZSTDMT_compressStream_generic(cctx->mtctx, output, input, endOp); - DEBUGLOG(5, "ZSTDMT_compressStream_generic result : %u", (U32)flushMin); if ( ZSTD_isError(flushMin) || (endOp == ZSTD_e_end && flushMin == 0) ) { /* compression completed */ ZSTD_startNewCompression(cctx); @@ -2850,8 +2945,7 @@ size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output) { size_t const lastBlockSize = zcs->frameEnded ? 0 : ZSTD_BLOCKHEADERSIZE; size_t const checksumSize = zcs->frameEnded ? 0 : zcs->appliedParams.fParams.checksumFlag * 4; size_t const toFlush = zcs->outBuffContentSize - zcs->outBuffFlushedSize + lastBlockSize + checksumSize; - DEBUGLOG(5, "ZSTD_endStream : remaining to flush : %u", - (unsigned)toFlush); + DEBUGLOG(4, "ZSTD_endStream : remaining to flush : %u", (U32)toFlush); return toFlush; } } @@ -2880,12 +2974,12 @@ static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEV { 22, 20, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 12 */ { 22, 21, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 13 */ { 22, 21, 22, 6, 5, 16, ZSTD_lazy2 }, /* level 14 */ - { 22, 21, 22, 5, 5, 16, ZSTD_btlazy2 }, /* level 15 */ - { 23, 22, 22, 5, 5, 16, ZSTD_btlazy2 }, /* level 16 */ - { 23, 22, 22, 4, 5, 24, ZSTD_btopt }, /* level 17 */ - { 23, 22, 22, 5, 4, 32, ZSTD_btopt }, /* level 18 */ - { 23, 23, 22, 6, 3, 48, ZSTD_btopt }, /* level 19 */ - { 25, 25, 23, 7, 3, 64, ZSTD_btultra }, /* level 20 */ + { 22, 21, 22, 4, 5, 16, ZSTD_btlazy2 }, /* level 15 */ + { 22, 21, 22, 4, 5, 48, ZSTD_btopt }, /* level 16 */ + { 23, 22, 22, 4, 4, 48, ZSTD_btopt }, /* level 17 */ + { 23, 22, 22, 5, 3, 64, ZSTD_btopt }, /* level 18 */ + { 23, 23, 22, 7, 3,128, ZSTD_btopt }, /* level 19 */ + { 25, 25, 23, 7, 3,128, ZSTD_btultra }, /* level 20 */ { 26, 26, 24, 7, 3,256, ZSTD_btultra }, /* level 21 */ { 27, 27, 25, 9, 3,512, ZSTD_btultra }, /* level 22 */ }, @@ -3004,6 +3098,8 @@ ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long l } #endif + DEBUGLOG(4, "ZSTD_getCParams: cLevel=%i, srcSize=%u, dictSize=%u => table %u", + compressionLevel, (U32)srcSizeHint, (U32)dictSize, tableID); if (compressionLevel <= 0) compressionLevel = ZSTD_CLEVEL_DEFAULT; /* 0 == default; no negative compressionLevel yet */ if (compressionLevel > ZSTD_MAX_CLEVEL) compressionLevel = ZSTD_MAX_CLEVEL; { ZSTD_compressionParameters const cp = ZSTD_defaultCParameters[tableID][compressionLevel]; @@ -3019,5 +3115,6 @@ ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long srcSizeH ZSTD_compressionParameters const cParams = ZSTD_getCParams(compressionLevel, srcSizeHint, dictSize); memset(¶ms, 0, sizeof(params)); params.cParams = cParams; + params.fParams.contentSizeFlag = 1; return params; } diff --git a/thirdparty/zstd/compress/zstd_compress.h b/thirdparty/zstd/compress/zstd_compress_internal.h index 94606edc93..f104fe981e 100644 --- a/thirdparty/zstd/compress/zstd_compress.h +++ b/thirdparty/zstd/compress/zstd_compress_internal.h @@ -8,6 +8,9 @@ * You may select, at your option, one of the above-listed licenses. */ +/* This header contains definitions + * that shall **only** be used by modules within lib/compress. + */ #ifndef ZSTD_COMPRESS_H #define ZSTD_COMPRESS_H @@ -43,6 +46,95 @@ typedef struct ZSTD_prefixDict_s { ZSTD_dictMode_e dictMode; } ZSTD_prefixDict; +typedef struct { + U32 hufCTable[HUF_CTABLE_SIZE_U32(255)]; + FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)]; + FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)]; + FSE_CTable litlengthCTable[FSE_CTABLE_SIZE_U32(LLFSELog, MaxLL)]; + U32 workspace[HUF_WORKSPACE_SIZE_U32]; + HUF_repeat hufCTable_repeatMode; + FSE_repeat offcode_repeatMode; + FSE_repeat matchlength_repeatMode; + FSE_repeat litlength_repeatMode; +} ZSTD_entropyCTables_t; + +typedef struct { + U32 off; + U32 len; +} ZSTD_match_t; + +typedef struct { + int price; + U32 off; + U32 mlen; + U32 litlen; + U32 rep[ZSTD_REP_NUM]; +} ZSTD_optimal_t; + +typedef struct { + /* All tables are allocated inside cctx->workspace by ZSTD_resetCCtx_internal() */ + U32* litFreq; /* table of literals statistics, of size 256 */ + U32* litLengthFreq; /* table of litLength statistics, of size (MaxLL+1) */ + U32* matchLengthFreq; /* table of matchLength statistics, of size (MaxML+1) */ + U32* offCodeFreq; /* table of offCode statistics, of size (MaxOff+1) */ + ZSTD_match_t* matchTable; /* list of found matches, of size ZSTD_OPT_NUM+1 */ + ZSTD_optimal_t* priceTable; /* All positions tracked by optimal parser, of size ZSTD_OPT_NUM+1 */ + + U32 litSum; /* nb of literals */ + U32 litLengthSum; /* nb of litLength codes */ + U32 matchLengthSum; /* nb of matchLength codes */ + U32 offCodeSum; /* nb of offset codes */ + /* begin updated by ZSTD_setLog2Prices */ + U32 log2litSum; /* pow2 to compare log2(litfreq) to */ + U32 log2litLengthSum; /* pow2 to compare log2(llfreq) to */ + U32 log2matchLengthSum; /* pow2 to compare log2(mlfreq) to */ + U32 log2offCodeSum; /* pow2 to compare log2(offreq) to */ + /* end : updated by ZSTD_setLog2Prices */ + U32 staticPrices; /* prices follow a pre-defined cost structure, statistics are irrelevant */ +} optState_t; + +typedef struct { + U32 offset; + U32 checksum; +} ldmEntry_t; + +typedef struct { + ldmEntry_t* hashTable; + BYTE* bucketOffsets; /* Next position in bucket to insert entry */ + U64 hashPower; /* Used to compute the rolling hash. + * Depends on ldmParams.minMatchLength */ +} ldmState_t; + +typedef struct { + U32 enableLdm; /* 1 if enable long distance matching */ + U32 hashLog; /* Log size of hashTable */ + U32 bucketSizeLog; /* Log bucket size for collision resolution, at most 8 */ + U32 minMatchLength; /* Minimum match length */ + U32 hashEveryLog; /* Log number of entries to skip */ +} ldmParams_t; + +struct ZSTD_CCtx_params_s { + ZSTD_format_e format; + ZSTD_compressionParameters cParams; + ZSTD_frameParameters fParams; + + int compressionLevel; + U32 forceWindow; /* force back-references to respect limit of + * 1<<wLog, even for dictionary */ + + /* Multithreading: used to pass parameters to mtctx */ + U32 nbThreads; + unsigned jobSize; + unsigned overlapSizeLog; + + /* Long distance matching parameters */ + ldmParams_t ldmParams; + + /* For use with createCCtxParams() and freeCCtxParams() only */ + ZSTD_customMem customMem; + +}; /* typedef'd to ZSTD_CCtx_params within "zstd.h" */ + struct ZSTD_CCtx_s { const BYTE* nextSrc; /* next block here to continue on current prefix */ const BYTE* base; /* All regular indexes relative to this position */ @@ -99,38 +191,51 @@ struct ZSTD_CCtx_s { }; -static const BYTE LL_Code[64] = { 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 16, 17, 17, 18, 18, 19, 19, - 20, 20, 20, 20, 21, 21, 21, 21, - 22, 22, 22, 22, 22, 22, 22, 22, - 23, 23, 23, 23, 23, 23, 23, 23, - 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24 }; - -static const BYTE ML_Code[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, - 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; +MEM_STATIC U32 ZSTD_LLcode(U32 litLength) +{ + static const BYTE LL_Code[64] = { 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 16, 17, 17, 18, 18, 19, 19, + 20, 20, 20, 20, 21, 21, 21, 21, + 22, 22, 22, 22, 22, 22, 22, 22, + 23, 23, 23, 23, 23, 23, 23, 23, + 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24 }; + static const U32 LL_deltaCode = 19; + return (litLength > 63) ? ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength]; +} + +/* ZSTD_MLcode() : + * note : mlBase = matchLength - MINMATCH; + * because it's the format it's stored in seqStore->sequences */ +MEM_STATIC U32 ZSTD_MLcode(U32 mlBase) +{ + static const BYTE ML_Code[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, + 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static const U32 ML_deltaCode = 36; + return (mlBase > 127) ? ZSTD_highbit32(mlBase) + ML_deltaCode : ML_Code[mlBase]; +} /*! ZSTD_storeSeq() : - Store a sequence (literal length, literals, offset code and match length code) into seqStore_t. - `offsetCode` : distance to match, or 0 == repCode. - `matchCode` : matchLength - MINMATCH + * Store a sequence (literal length, literals, offset code and match length code) into seqStore_t. + * `offsetCode` : distance to match + 3 (values 1-3 are repCodes). + * `mlBase` : matchLength - MINMATCH */ -MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const void* literals, U32 offsetCode, size_t matchCode) +MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const void* literals, U32 offsetCode, size_t mlBase) { #if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 6) static const BYTE* g_start = NULL; - U32 const pos = (U32)((const BYTE*)literals - g_start); - if (g_start==NULL) g_start = (const BYTE*)literals; - if ((pos > 0) && (pos < 1000000000)) - DEBUGLOG(6, "Cpos %6u :%5u literals & match %3u bytes at distance %6u", - pos, (U32)litLength, (U32)matchCode+MINMATCH, (U32)offsetCode); + if (g_start==NULL) g_start = (const BYTE*)literals; /* note : index only works for compression within a single segment */ + { U32 const pos = (U32)((const BYTE*)literals - g_start); + DEBUGLOG(6, "Cpos%7u :%3u literals, match%3u bytes at dist.code%7u", + pos, (U32)litLength, (U32)mlBase+MINMATCH, (U32)offsetCode); + } #endif /* copy Literals */ assert(seqStorePtr->lit + litLength <= seqStorePtr->litStart + 128 KB); @@ -139,6 +244,7 @@ MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const v /* literal Length */ if (litLength>0xFFFF) { + assert(seqStorePtr->longLengthID == 0); /* there can only be a single long length */ seqStorePtr->longLengthID = 1; seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart); } @@ -148,11 +254,12 @@ MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const v seqStorePtr->sequences[0].offset = offsetCode + 1; /* match Length */ - if (matchCode>0xFFFF) { + if (mlBase>0xFFFF) { + assert(seqStorePtr->longLengthID == 0); /* there can only be a single long length */ seqStorePtr->longLengthID = 2; seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart); } - seqStorePtr->sequences[0].matchLength = (U16)matchCode; + seqStorePtr->sequences[0].matchLength = (U16)mlBase; seqStorePtr->sequences++; } @@ -161,7 +268,7 @@ MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const v /*-************************************* * Match length counter ***************************************/ -static unsigned ZSTD_NbCommonBytes (register size_t val) +static unsigned ZSTD_NbCommonBytes (size_t val) { if (MEM_isLittleEndian()) { if (MEM_64bits()) { @@ -235,13 +342,17 @@ MEM_STATIC size_t ZSTD_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* co const BYTE* const pStart = pIn; const BYTE* const pInLoopLimit = pInLimit - (sizeof(size_t)-1); - while (pIn < pInLoopLimit) { - size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn); - if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; } - pIn += ZSTD_NbCommonBytes(diff); - return (size_t)(pIn - pStart); - } - if (MEM_64bits()) if ((pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; } + if (pIn < pInLoopLimit) { + { size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn); + if (diff) return ZSTD_NbCommonBytes(diff); } + pIn+=sizeof(size_t); pMatch+=sizeof(size_t); + while (pIn < pInLoopLimit) { + size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn); + if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; } + pIn += ZSTD_NbCommonBytes(diff); + return (size_t)(pIn - pStart); + } } + if (MEM_64bits() && (pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; } if ((pIn<(pInLimit-1)) && (MEM_read16(pMatch) == MEM_read16(pIn))) { pIn+=2; pMatch+=2; } if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++; return (size_t)(pIn - pStart); @@ -304,4 +415,48 @@ MEM_STATIC size_t ZSTD_hashPtr(const void* p, U32 hBits, U32 mls) } #endif + +/* ============================================================== + * Private declarations + * These prototypes shall only be called from within lib/compress + * ============================================================== */ + +/*! ZSTD_initCStream_internal() : + * Private use only. Init streaming operation. + * expects params to be valid. + * must receive dict, or cdict, or none, but not both. + * @return : 0, or an error code */ +size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs, + const void* dict, size_t dictSize, + const ZSTD_CDict* cdict, + ZSTD_CCtx_params params, unsigned long long pledgedSrcSize); + +/*! ZSTD_compressStream_generic() : + * Private use only. To be called from zstdmt_compress.c in single-thread mode. */ +size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs, + ZSTD_outBuffer* output, + ZSTD_inBuffer* input, + ZSTD_EndDirective const flushMode); + +/*! ZSTD_getCParamsFromCDict() : + * as the name implies */ +ZSTD_compressionParameters ZSTD_getCParamsFromCDict(const ZSTD_CDict* cdict); + +/* ZSTD_compressBegin_advanced_internal() : + * Private use only. To be called from zstdmt_compress.c. */ +size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx, + const void* dict, size_t dictSize, + ZSTD_dictMode_e dictMode, + const ZSTD_CDict* cdict, + ZSTD_CCtx_params params, + unsigned long long pledgedSrcSize); + +/* ZSTD_compress_advanced_internal() : + * Private use only. To be called from zstdmt_compress.c. */ +size_t ZSTD_compress_advanced_internal(ZSTD_CCtx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const void* dict,size_t dictSize, + ZSTD_CCtx_params params); + #endif /* ZSTD_COMPRESS_H */ diff --git a/thirdparty/zstd/compress/zstd_double_fast.c b/thirdparty/zstd/compress/zstd_double_fast.c index 876a36042c..fee5127c35 100644 --- a/thirdparty/zstd/compress/zstd_double_fast.c +++ b/thirdparty/zstd/compress/zstd_double_fast.c @@ -8,6 +8,7 @@ * You may select, at your option, one of the above-listed licenses. */ +#include "zstd_compress_internal.h" #include "zstd_double_fast.h" diff --git a/thirdparty/zstd/compress/zstd_double_fast.h b/thirdparty/zstd/compress/zstd_double_fast.h index 3dba6c7108..75e0415809 100644 --- a/thirdparty/zstd/compress/zstd_double_fast.h +++ b/thirdparty/zstd/compress/zstd_double_fast.h @@ -11,12 +11,13 @@ #ifndef ZSTD_DOUBLE_FAST_H #define ZSTD_DOUBLE_FAST_H -#include "zstd_compress.h" - #if defined (__cplusplus) extern "C" { #endif +#include "mem.h" /* U32 */ +#include "zstd.h" /* ZSTD_CCtx, size_t */ + void ZSTD_fillDoubleHashTable(ZSTD_CCtx* cctx, const void* end, const U32 mls); size_t ZSTD_compressBlock_doubleFast(ZSTD_CCtx* ctx, const void* src, size_t srcSize); size_t ZSTD_compressBlock_doubleFast_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize); diff --git a/thirdparty/zstd/compress/zstd_fast.c b/thirdparty/zstd/compress/zstd_fast.c index 2e057017b9..7b56c3d6ad 100644 --- a/thirdparty/zstd/compress/zstd_fast.c +++ b/thirdparty/zstd/compress/zstd_fast.c @@ -8,6 +8,7 @@ * You may select, at your option, one of the above-listed licenses. */ +#include "zstd_compress_internal.h" #include "zstd_fast.h" diff --git a/thirdparty/zstd/compress/zstd_fast.h b/thirdparty/zstd/compress/zstd_fast.h index 4205141a9a..d8b7771954 100644 --- a/thirdparty/zstd/compress/zstd_fast.h +++ b/thirdparty/zstd/compress/zstd_fast.h @@ -11,12 +11,13 @@ #ifndef ZSTD_FAST_H #define ZSTD_FAST_H -#include "zstd_compress.h" - #if defined (__cplusplus) extern "C" { #endif +#include "mem.h" /* U32 */ +#include "zstd.h" /* ZSTD_CCtx, size_t */ + void ZSTD_fillHashTable(ZSTD_CCtx* zc, const void* end, const U32 mls); size_t ZSTD_compressBlock_fast(ZSTD_CCtx* ctx, const void* src, size_t srcSize); diff --git a/thirdparty/zstd/compress/zstd_lazy.c b/thirdparty/zstd/compress/zstd_lazy.c index 2a7f6a0fe2..6d4804961d 100644 --- a/thirdparty/zstd/compress/zstd_lazy.c +++ b/thirdparty/zstd/compress/zstd_lazy.c @@ -8,6 +8,7 @@ * You may select, at your option, one of the above-listed licenses. */ +#include "zstd_compress_internal.h" #include "zstd_lazy.h" @@ -15,10 +16,11 @@ * Binary Tree search ***************************************/ /** ZSTD_insertBt1() : add one or multiple positions to tree. -* ip : assumed <= iend-8 . -* @return : nb of positions added */ -static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, const BYTE* const iend, U32 nbCompares, - U32 extDict) + * ip : assumed <= iend-8 . + * @return : nb of positions added */ +static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, + const BYTE* const ip, const BYTE* const iend, + U32 nbCompares, U32 const mls, U32 const extDict) { U32* const hashTable = zc->hashTable; U32 const hashLog = zc->appliedParams.cParams.hashLog; @@ -40,7 +42,7 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co U32* largerPtr = smallerPtr + 1; U32 dummy32; /* to be nullified at the end */ U32 const windowLow = zc->lowLimit; - U32 matchEndIdx = current+8; + U32 matchEndIdx = current+8+1; size_t bestLength = 8; #ifdef ZSTD_C_PREDICT U32 predictedSmall = *(bt + 2*((current-1)&btMask) + 0); @@ -49,12 +51,15 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co predictedLarge += (predictedLarge>0); #endif /* ZSTD_C_PREDICT */ + DEBUGLOG(8, "ZSTD_insertBt1 (%u)", current); + assert(ip <= iend-8); /* required for h calculation */ hashTable[h] = current; /* Update Hash Table */ while (nbCompares-- && (matchIndex > windowLow)) { U32* const nextPtr = bt + 2*(matchIndex & btMask); size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */ + assert(matchIndex < current); #ifdef ZSTD_C_PREDICT /* note : can create issues when hlog small <= 11 */ const U32* predictPtr = bt + 2*((matchIndex-1) & btMask); /* written this way, as bt is a roll buffer */ @@ -76,10 +81,11 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co continue; } #endif + if ((!extDict) || (matchIndex+matchLength >= dictLimit)) { + assert(matchIndex+matchLength >= dictLimit); /* might be wrong if extDict is incorrectly set to 0 */ match = base + matchIndex; - if (match[matchLength] == ip[matchLength]) - matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1; + matchLength += ZSTD_count(ip+matchLength, match+matchLength, iend); } else { match = dictBase + matchIndex; matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart); @@ -93,16 +99,17 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co matchEndIdx = matchIndex + (U32)matchLength; } - if (ip+matchLength == iend) /* equal : no way to know if inf or sup */ + if (ip+matchLength == iend) { /* equal : no way to know if inf or sup */ break; /* drop , to guarantee consistency ; miss a bit of compression, but other solutions can corrupt tree */ + } if (match[matchLength] < ip[matchLength]) { /* necessarily within buffer */ - /* match+1 is smaller than current */ + /* match is smaller than current */ *smallerPtr = matchIndex; /* update smaller idx */ commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */ if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop searching */ - smallerPtr = nextPtr+1; /* new "smaller" => larger of match */ - matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */ + smallerPtr = nextPtr+1; /* new "candidate" => larger than match, which was smaller than target */ + matchIndex = nextPtr[1]; /* new matchIndex, larger than previous and closer to current */ } else { /* match is larger than current */ *largerPtr = matchIndex; @@ -114,8 +121,38 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co *smallerPtr = *largerPtr = 0; if (bestLength > 384) return MIN(192, (U32)(bestLength - 384)); /* speed optimization */ - if (matchEndIdx > current + 8) return matchEndIdx - (current + 8); - return 1; + assert(matchEndIdx > current + 8); + return matchEndIdx - (current + 8); +} + +FORCE_INLINE_TEMPLATE +void ZSTD_updateTree_internal(ZSTD_CCtx* zc, + const BYTE* const ip, const BYTE* const iend, + const U32 nbCompares, const U32 mls, const U32 extDict) +{ + const BYTE* const base = zc->base; + U32 const target = (U32)(ip - base); + U32 idx = zc->nextToUpdate; + DEBUGLOG(7, "ZSTD_updateTree_internal, from %u to %u (extDict:%u)", + idx, target, extDict); + + while(idx < target) + idx += ZSTD_insertBt1(zc, base+idx, iend, nbCompares, mls, extDict); + zc->nextToUpdate = target; +} + +void ZSTD_updateTree(ZSTD_CCtx* zc, + const BYTE* const ip, const BYTE* const iend, + const U32 nbCompares, const U32 mls) +{ + ZSTD_updateTree_internal(zc, ip, iend, nbCompares, mls, 0 /*extDict*/); +} + +void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, + const BYTE* const ip, const BYTE* const iend, + const U32 nbCompares, const U32 mls) +{ + ZSTD_updateTree_internal(zc, ip, iend, nbCompares, mls, 1 /*extDict*/); } @@ -144,7 +181,7 @@ static size_t ZSTD_insertBtAndFindBestMatch ( const U32 windowLow = zc->lowLimit; U32* smallerPtr = bt + 2*(current&btMask); U32* largerPtr = bt + 2*(current&btMask) + 1; - U32 matchEndIdx = current+8; + U32 matchEndIdx = current+8+1; U32 dummy32; /* to be nullified at the end */ size_t bestLength = 0; @@ -158,8 +195,7 @@ static size_t ZSTD_insertBtAndFindBestMatch ( if ((!extDict) || (matchIndex+matchLength >= dictLimit)) { match = base + matchIndex; - if (match[matchLength] == ip[matchLength]) - matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1; + matchLength += ZSTD_count(ip+matchLength, match+matchLength, iend); } else { match = dictBase + matchIndex; matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart); @@ -172,8 +208,9 @@ static size_t ZSTD_insertBtAndFindBestMatch ( matchEndIdx = matchIndex + (U32)matchLength; if ( (4*(int)(matchLength-bestLength)) > (int)(ZSTD_highbit32(current-matchIndex+1) - ZSTD_highbit32((U32)offsetPtr[0]+1)) ) bestLength = matchLength, *offsetPtr = ZSTD_REP_MOVE + current - matchIndex; - if (ip+matchLength == iend) /* equal : no way to know if inf or sup */ + if (ip+matchLength == iend) { /* equal : no way to know if inf or sup */ break; /* drop, to guarantee consistency (miss a little bit of compression) */ + } } if (match[matchLength] < ip[matchLength]) { @@ -194,21 +231,12 @@ static size_t ZSTD_insertBtAndFindBestMatch ( *smallerPtr = *largerPtr = 0; - zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1; + assert(matchEndIdx > current+8); + zc->nextToUpdate = matchEndIdx - 8; /* skip repetitive patterns */ return bestLength; } -void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls) -{ - const BYTE* const base = zc->base; - const U32 target = (U32)(ip - base); - U32 idx = zc->nextToUpdate; - - while(idx < target) - idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 0); -} - /** ZSTD_BtFindBestMatch() : Tree updater, providing best match */ static size_t ZSTD_BtFindBestMatch ( ZSTD_CCtx* zc, @@ -239,16 +267,6 @@ static size_t ZSTD_BtFindBestMatch_selectMLS ( } -void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls) -{ - const BYTE* const base = zc->base; - const U32 target = (U32)(ip - base); - U32 idx = zc->nextToUpdate; - - while (idx < target) idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 1); -} - - /** Tree updater, providing best match */ static size_t ZSTD_BtFindBestMatch_extDict ( ZSTD_CCtx* zc, @@ -335,14 +353,14 @@ size_t ZSTD_HcFindBestMatch_generic ( U32 matchIndex = ZSTD_insertAndFindFirstIndex (zc, ip, mls); for ( ; (matchIndex>lowLimit) & (nbAttempts>0) ; nbAttempts--) { - const BYTE* match; size_t currentMl=0; if ((!extDict) || matchIndex >= dictLimit) { - match = base + matchIndex; + const BYTE* const match = base + matchIndex; if (match[ml] == ip[ml]) /* potentially better */ currentMl = ZSTD_count(ip, match, iLimit); } else { - match = dictBase + matchIndex; + const BYTE* const match = dictBase + matchIndex; + assert(match+4 <= dictEnd); if (MEM_read32(match) == MEM_read32(ip)) /* assumption : matchIndex <= dictLimit-4 (by table construction) */ currentMl = ZSTD_count_2segments(ip+4, match+4, iLimit, dictEnd, prefixStart) + 4; } @@ -380,10 +398,10 @@ FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_selectMLS ( FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_extDict_selectMLS ( - ZSTD_CCtx* zc, + ZSTD_CCtx* const zc, const BYTE* ip, const BYTE* const iLimit, - size_t* offsetPtr, - const U32 maxNbAttempts, const U32 matchLengthSearch) + size_t* const offsetPtr, + U32 const maxNbAttempts, U32 const matchLengthSearch) { switch(matchLengthSearch) { @@ -502,9 +520,8 @@ size_t ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx, */ /* catch up */ if (offset) { - while ( (start > anchor) - && (start > base+offset-ZSTD_REP_MOVE) - && (start[-1] == (start-offset+ZSTD_REP_MOVE)[-1]) ) /* only search for offset within prefix */ + while ( ((start > anchor) & (start - (offset-ZSTD_REP_MOVE) > base)) + && (start[-1] == (start-(offset-ZSTD_REP_MOVE))[-1]) ) /* only search for offset within prefix */ { start--; matchLength++; } offset_2 = offset_1; offset_1 = (U32)(offset - ZSTD_REP_MOVE); } @@ -516,9 +533,8 @@ _storeSequence: } /* check immediate repcode */ - while ( (ip <= ilimit) - && ((offset_2>0) - & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) { + while ( ((ip <= ilimit) & (offset_2>0)) + && (MEM_read32(ip) == MEM_read32(ip - offset_2)) ) { /* store sequence */ matchLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4; offset = offset_2; offset_2 = offset_1; offset_1 = (U32)offset; /* swap repcodes */ diff --git a/thirdparty/zstd/compress/zstd_lazy.h b/thirdparty/zstd/compress/zstd_lazy.h index a9c4daed25..74e1fd6970 100644 --- a/thirdparty/zstd/compress/zstd_lazy.h +++ b/thirdparty/zstd/compress/zstd_lazy.h @@ -11,12 +11,13 @@ #ifndef ZSTD_LAZY_H #define ZSTD_LAZY_H -#include "zstd_compress.h" - #if defined (__cplusplus) extern "C" { #endif +#include "mem.h" /* U32 */ +#include "zstd.h" /* ZSTD_CCtx, size_t */ + U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls); void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls); void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls); diff --git a/thirdparty/zstd/compress/zstd_ldm.h b/thirdparty/zstd/compress/zstd_ldm.h index d6d3d42c33..8f12c677aa 100644 --- a/thirdparty/zstd/compress/zstd_ldm.h +++ b/thirdparty/zstd/compress/zstd_ldm.h @@ -10,12 +10,13 @@ #ifndef ZSTD_LDM_H #define ZSTD_LDM_H -#include "zstd_compress.h" - #if defined (__cplusplus) extern "C" { #endif +#include "zstd_compress_internal.h" /* ldmParams_t, U32 */ +#include "zstd.h" /* ZSTD_CCtx, size_t */ + /*-************************************* * Long distance matching ***************************************/ diff --git a/thirdparty/zstd/compress/zstd_opt.c b/thirdparty/zstd/compress/zstd_opt.c index c47ce23ad5..7171ff5373 100644 --- a/thirdparty/zstd/compress/zstd_opt.c +++ b/thirdparty/zstd/compress/zstd_opt.c @@ -8,36 +8,35 @@ * You may select, at your option, one of the above-listed licenses. */ +#include "zstd_compress_internal.h" #include "zstd_opt.h" -#include "zstd_lazy.h" +#include "zstd_lazy.h" /* ZSTD_updateTree, ZSTD_updateTree_extDict */ -#define ZSTD_LITFREQ_ADD 2 -#define ZSTD_FREQ_DIV 4 -#define ZSTD_MAX_PRICE (1<<30) +#define ZSTD_LITFREQ_ADD 2 /* scaling factor for litFreq, so that frequencies adapt faster to new stats. Also used for matchSum (?) */ +#define ZSTD_FREQ_DIV 4 /* log factor when using previous stats to init next stats */ +#define ZSTD_MAX_PRICE (1<<30) + /*-************************************* * Price functions for optimal parser ***************************************/ static void ZSTD_setLog2Prices(optState_t* optPtr) { - optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1); - optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1); optPtr->log2litSum = ZSTD_highbit32(optPtr->litSum+1); + optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1); + optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1); optPtr->log2offCodeSum = ZSTD_highbit32(optPtr->offCodeSum+1); - optPtr->factor = 1 + ((optPtr->litSum>>5) / optPtr->litLengthSum) + ((optPtr->litSum<<1) / (optPtr->litSum + optPtr->matchSum)); } -static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSize) +static void ZSTD_rescaleFreqs(optState_t* const optPtr, + const BYTE* const src, size_t const srcSize) { - unsigned u; - - optPtr->cachedLiterals = NULL; - optPtr->cachedPrice = optPtr->cachedLitLength = 0; optPtr->staticPrices = 0; - if (optPtr->litLengthSum == 0) { + if (optPtr->litLengthSum == 0) { /* first init */ + unsigned u; if (srcSize <= 1024) optPtr->staticPrices = 1; assert(optPtr->litFreq!=NULL); @@ -45,44 +44,41 @@ static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSiz optPtr->litFreq[u] = 0; for (u=0; u<srcSize; u++) optPtr->litFreq[src[u]]++; - optPtr->litSum = 0; - optPtr->litLengthSum = MaxLL+1; - optPtr->matchLengthSum = MaxML+1; - optPtr->offCodeSum = (MaxOff+1); - optPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits); - for (u=0; u<=MaxLit; u++) { - optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>ZSTD_FREQ_DIV); + optPtr->litFreq[u] = 1 + (optPtr->litFreq[u] >> ZSTD_FREQ_DIV); optPtr->litSum += optPtr->litFreq[u]; } + for (u=0; u<=MaxLL; u++) optPtr->litLengthFreq[u] = 1; + optPtr->litLengthSum = MaxLL+1; for (u=0; u<=MaxML; u++) optPtr->matchLengthFreq[u] = 1; + optPtr->matchLengthSum = MaxML+1; for (u=0; u<=MaxOff; u++) optPtr->offCodeFreq[u] = 1; + optPtr->offCodeSum = (MaxOff+1); + } else { - optPtr->matchLengthSum = 0; - optPtr->litLengthSum = 0; - optPtr->offCodeSum = 0; - optPtr->matchSum = 0; - optPtr->litSum = 0; + unsigned u; + optPtr->litSum = 0; for (u=0; u<=MaxLit; u++) { - optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1)); + optPtr->litFreq[u] = 1 + (optPtr->litFreq[u] >> (ZSTD_FREQ_DIV+1)); optPtr->litSum += optPtr->litFreq[u]; } + optPtr->litLengthSum = 0; for (u=0; u<=MaxLL; u++) { optPtr->litLengthFreq[u] = 1 + (optPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1)); optPtr->litLengthSum += optPtr->litLengthFreq[u]; } + optPtr->matchLengthSum = 0; for (u=0; u<=MaxML; u++) { optPtr->matchLengthFreq[u] = 1 + (optPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV); optPtr->matchLengthSum += optPtr->matchLengthFreq[u]; - optPtr->matchSum += optPtr->matchLengthFreq[u] * (u + 3); } - optPtr->matchSum *= ZSTD_LITFREQ_ADD; + optPtr->offCodeSum = 0; for (u=0; u<=MaxOff; u++) { optPtr->offCodeFreq[u] = 1 + (optPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV); optPtr->offCodeSum += optPtr->offCodeFreq[u]; @@ -93,114 +89,146 @@ static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSiz } -static U32 ZSTD_getLiteralPrice(optState_t* optPtr, U32 litLength, const BYTE* literals) +/* ZSTD_rawLiteralsCost() : + * cost of literals (only) in given segment (which length can be null) + * does not include cost of literalLength symbol */ +static U32 ZSTD_rawLiteralsCost(const BYTE* const literals, U32 const litLength, + const optState_t* const optPtr) { - U32 price, u; - - if (optPtr->staticPrices) - return ZSTD_highbit32((U32)litLength+1) + (litLength*6); - - if (litLength == 0) - return optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[0]+1); + if (optPtr->staticPrices) return (litLength*6); /* 6 bit per literal - no statistic used */ + if (litLength == 0) return 0; /* literals */ - if (optPtr->cachedLiterals == literals) { - U32 const additional = litLength - optPtr->cachedLitLength; - const BYTE* literals2 = optPtr->cachedLiterals + optPtr->cachedLitLength; - price = optPtr->cachedPrice + additional * optPtr->log2litSum; - for (u=0; u < additional; u++) - price -= ZSTD_highbit32(optPtr->litFreq[literals2[u]]+1); - optPtr->cachedPrice = price; - optPtr->cachedLitLength = litLength; - } else { - price = litLength * optPtr->log2litSum; + { U32 u; + U32 cost = litLength * optPtr->log2litSum; for (u=0; u < litLength; u++) - price -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1); - - if (litLength >= 12) { - optPtr->cachedLiterals = literals; - optPtr->cachedPrice = price; - optPtr->cachedLitLength = litLength; - } + cost -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1); + return cost; } +} + +/* ZSTD_litLengthPrice() : + * cost of literalLength symbol */ +static U32 ZSTD_litLengthPrice(U32 const litLength, const optState_t* const optPtr) +{ + if (optPtr->staticPrices) return ZSTD_highbit32((U32)litLength+1); /* literal Length */ - { const BYTE LL_deltaCode = 19; - const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength]; - price += LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1); + { U32 const llCode = ZSTD_LLcode(litLength); + U32 const price = LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1); + return price; } +} - return price; +/* ZSTD_litLengthPrice() : + * cost of the literal part of a sequence, + * including literals themselves, and literalLength symbol */ +static U32 ZSTD_fullLiteralsCost(const BYTE* const literals, U32 const litLength, + const optState_t* const optPtr) +{ + return ZSTD_rawLiteralsCost(literals, litLength, optPtr) + + ZSTD_litLengthPrice(litLength, optPtr); +} + +/* ZSTD_litLengthContribution() : + * @return ( cost(litlength) - cost(0) ) + * this value can then be added to rawLiteralsCost() + * to provide a cost which is directly comparable to a match ending at same position */ +static int ZSTD_litLengthContribution(U32 const litLength, const optState_t* const optPtr) +{ + if (optPtr->staticPrices) return ZSTD_highbit32(litLength+1); + + /* literal Length */ + { U32 const llCode = ZSTD_LLcode(litLength); + int const contribution = LL_bits[llCode] + + ZSTD_highbit32(optPtr->litLengthFreq[0]+1) + - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1); +#if 1 + return contribution; +#else + return MAX(0, contribution); /* sometimes better, sometimes not ... */ +#endif + } } +/* ZSTD_literalsContribution() : + * creates a fake cost for the literals part of a sequence + * which can be compared to the ending cost of a match + * should a new match start at this position */ +static int ZSTD_literalsContribution(const BYTE* const literals, U32 const litLength, + const optState_t* const optPtr) +{ + int const contribution = ZSTD_rawLiteralsCost(literals, litLength, optPtr) + + ZSTD_litLengthContribution(litLength, optPtr); + return contribution; +} -FORCE_INLINE_TEMPLATE U32 ZSTD_getPrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra) +/* ZSTD_getMatchPrice() : + * Provides the cost of the match part (offset + matchLength) of a sequence + * Must be combined with ZSTD_fullLiteralsCost() to get the full cost of a sequence. + * optLevel: when <2, favors small offset for decompression speed (improved cache efficiency) */ +FORCE_INLINE_TEMPLATE U32 ZSTD_getMatchPrice( + U32 const offset, U32 const matchLength, + const optState_t* const optPtr, + int const optLevel) { - /* offset */ U32 price; - BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1); + U32 const offCode = ZSTD_highbit32(offset+1); + U32 const mlBase = matchLength - MINMATCH; + assert(matchLength >= MINMATCH); - if (optPtr->staticPrices) - return ZSTD_getLiteralPrice(optPtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode; + if (optPtr->staticPrices) /* fixed scheme, do not use statistics */ + return ZSTD_highbit32((U32)mlBase+1) + 16 + offCode; price = offCode + optPtr->log2offCodeSum - ZSTD_highbit32(optPtr->offCodeFreq[offCode]+1); - if (!ultra && offCode >= 20) price += (offCode-19)*2; + if ((optLevel<2) /*static*/ && offCode >= 20) price += (offCode-19)*2; /* handicap for long distance offsets, favor decompression speed */ /* match Length */ - { const BYTE ML_deltaCode = 36; - const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength]; + { U32 const mlCode = ZSTD_MLcode(mlBase); price += ML_bits[mlCode] + optPtr->log2matchLengthSum - ZSTD_highbit32(optPtr->matchLengthFreq[mlCode]+1); } - return price + ZSTD_getLiteralPrice(optPtr, litLength, literals) + optPtr->factor; + DEBUGLOG(8, "ZSTD_getMatchPrice(ml:%u) = %u", matchLength, price); + return price; } - -static void ZSTD_updatePrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength) +static void ZSTD_updateStats(optState_t* const optPtr, + U32 litLength, const BYTE* literals, + U32 offsetCode, U32 matchLength) { - U32 u; - /* literals */ - optPtr->litSum += litLength*ZSTD_LITFREQ_ADD; - for (u=0; u < litLength; u++) - optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD; + { U32 u; + for (u=0; u < litLength; u++) + optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD; + optPtr->litSum += litLength*ZSTD_LITFREQ_ADD; + } /* literal Length */ - { const BYTE LL_deltaCode = 19; - const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength]; + { U32 const llCode = ZSTD_LLcode(litLength); optPtr->litLengthFreq[llCode]++; optPtr->litLengthSum++; } - /* match offset */ - { BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1); - optPtr->offCodeSum++; + /* match offset code (0-2=>repCode; 3+=>offset+2) */ + { U32 const offCode = ZSTD_highbit32(offsetCode+1); + assert(offCode <= MaxOff); optPtr->offCodeFreq[offCode]++; + optPtr->offCodeSum++; } /* match Length */ - { const BYTE ML_deltaCode = 36; - const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength]; + { U32 const mlBase = matchLength - MINMATCH; + U32 const mlCode = ZSTD_MLcode(mlBase); optPtr->matchLengthFreq[mlCode]++; optPtr->matchLengthSum++; } - - ZSTD_setLog2Prices(optPtr); } -#define SET_PRICE(pos, mlen_, offset_, litlen_, price_) \ - { \ - while (last_pos < pos) { opt[last_pos+1].price = ZSTD_MAX_PRICE; last_pos++; } \ - opt[pos].mlen = mlen_; \ - opt[pos].off = offset_; \ - opt[pos].litlen = litlen_; \ - opt[pos].price = price_; \ - } - - -/* function safe only for comparisons */ -static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length) +/* ZSTD_readMINMATCH() : + * function safe only for comparisons + * assumption : memPtr must be at least 4 bytes before end of buffer */ +MEM_STATIC U32 ZSTD_readMINMATCH(const void* memPtr, U32 length) { switch (length) { @@ -216,15 +244,14 @@ static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length) /* Update hashTable3 up to ip (excluded) Assumption : always within prefix (i.e. not within extDict) */ -static -U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip) +static U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* const cctx, const BYTE* const ip) { - U32* const hashTable3 = zc->hashTable3; - U32 const hashLog3 = zc->hashLog3; - const BYTE* const base = zc->base; - U32 idx = zc->nextToUpdate3; - const U32 target = zc->nextToUpdate3 = (U32)(ip - base); - const size_t hash3 = ZSTD_hash3Ptr(ip, hashLog3); + U32* const hashTable3 = cctx->hashTable3; + U32 const hashLog3 = cctx->hashLog3; + const BYTE* const base = cctx->base; + U32 idx = cctx->nextToUpdate3; + U32 const target = cctx->nextToUpdate3 = (U32)(ip - base); + size_t const hash3 = ZSTD_hash3Ptr(ip, hashLog3); while(idx < target) { hashTable3[ZSTD_hash3Ptr(base+idx, hashLog3)] = idx; @@ -238,102 +265,147 @@ U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip) /*-************************************* * Binary Tree search ***************************************/ -static U32 ZSTD_insertBtAndGetAllMatches ( - ZSTD_CCtx* zc, - const BYTE* const ip, const BYTE* const iLimit, - U32 nbCompares, const U32 mls, - U32 extDict, ZSTD_match_t* matches, const U32 minMatchLen) +FORCE_INLINE_TEMPLATE +U32 ZSTD_insertBtAndGetAllMatches ( + ZSTD_CCtx* zc, + const BYTE* const ip, const BYTE* const iLimit, int const extDict, + U32 nbCompares, U32 const mls, U32 const sufficient_len, + U32 rep[ZSTD_REP_NUM], U32 const ll0, + ZSTD_match_t* matches, const U32 lengthToBeat) { const BYTE* const base = zc->base; - const U32 current = (U32)(ip-base); - const U32 hashLog = zc->appliedParams.cParams.hashLog; - const size_t h = ZSTD_hashPtr(ip, hashLog, mls); + U32 const current = (U32)(ip-base); + U32 const hashLog = zc->appliedParams.cParams.hashLog; + U32 const minMatch = (mls==3) ? 3 : 4; U32* const hashTable = zc->hashTable; + size_t const h = ZSTD_hashPtr(ip, hashLog, mls); U32 matchIndex = hashTable[h]; U32* const bt = zc->chainTable; - const U32 btLog = zc->appliedParams.cParams.chainLog - 1; - const U32 btMask= (1U << btLog) - 1; + U32 const btLog = zc->appliedParams.cParams.chainLog - 1; + U32 const btMask= (1U << btLog) - 1; size_t commonLengthSmaller=0, commonLengthLarger=0; const BYTE* const dictBase = zc->dictBase; - const U32 dictLimit = zc->dictLimit; + U32 const dictLimit = zc->dictLimit; const BYTE* const dictEnd = dictBase + dictLimit; const BYTE* const prefixStart = base + dictLimit; - const U32 btLow = btMask >= current ? 0 : current - btMask; - const U32 windowLow = zc->lowLimit; + U32 const btLow = btMask >= current ? 0 : current - btMask; + U32 const windowLow = zc->lowLimit; U32* smallerPtr = bt + 2*(current&btMask); U32* largerPtr = bt + 2*(current&btMask) + 1; - U32 matchEndIdx = current+8; + U32 matchEndIdx = current+8+1; /* farthest referenced position of any match => detects repetitive patterns */ U32 dummy32; /* to be nullified at the end */ U32 mnum = 0; - const U32 minMatch = (mls == 3) ? 3 : 4; - size_t bestLength = minMatchLen-1; + size_t bestLength = lengthToBeat-1; + DEBUGLOG(7, "ZSTD_insertBtAndGetAllMatches"); + + /* check repCode */ + { U32 const lastR = ZSTD_REP_NUM + ll0; + U32 repCode; + for (repCode = ll0; repCode < lastR; repCode++) { + U32 const repOffset = (repCode==ZSTD_REP_NUM) ? (rep[0] - 1) : rep[repCode]; + U32 const repIndex = current - repOffset; + U32 repLen = 0; + assert(current >= dictLimit); + if (repOffset-1 /* intentional overflow, discards 0 and -1 */ < current-dictLimit) { /* equivalent to `current > repIndex >= dictLimit` */ + if (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(ip - repOffset, minMatch)) { + repLen = (U32)ZSTD_count(ip+minMatch, ip+minMatch-repOffset, iLimit) + minMatch; + } + } else { /* repIndex < dictLimit || repIndex >= current */ + const BYTE* const repMatch = dictBase + repIndex; + assert(current >= windowLow); + if ( extDict /* this case only valid in extDict mode */ + && ( ((repOffset-1) /*intentional overflow*/ < current - windowLow) /* equivalent to `current > repIndex >= windowLow` */ + & (((U32)((dictLimit-1) - repIndex) >= 3) ) /* intentional overflow : do not test positions overlapping 2 memory segments */) + && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) { + repLen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iLimit, dictEnd, prefixStart) + minMatch; + } } + /* save longer solution */ + if (repLen > bestLength) { + DEBUGLOG(8, "found rep-match %u of length %u", + repCode - ll0, (U32)repLen); + bestLength = repLen; + matches[mnum].off = repCode - ll0; + matches[mnum].len = (U32)repLen; + mnum++; + if ( (repLen > sufficient_len) + | (ip+repLen == iLimit) ) { /* best possible */ + return mnum; + } } } } - if (minMatch == 3) { /* HC3 match finder */ + /* HC3 match finder */ + if ((mls == 3) /*static*/ && (bestLength < mls)) { U32 const matchIndex3 = ZSTD_insertAndFindFirstIndexHash3 (zc, ip); - if (matchIndex3>windowLow && (current - matchIndex3 < (1<<18))) { - const BYTE* match; - size_t currentMl=0; - if ((!extDict) || matchIndex3 >= dictLimit) { - match = base + matchIndex3; - if (match[bestLength] == ip[bestLength]) currentMl = ZSTD_count(ip, match, iLimit); + if ((matchIndex3 > windowLow) + & (current - matchIndex3 < (1<<18)) /*heuristic : longer distance likely too expensive*/ ) { + size_t mlen; + if ((!extDict) /*static*/ || (matchIndex3 >= dictLimit)) { + const BYTE* const match = base + matchIndex3; + mlen = ZSTD_count(ip, match, iLimit); } else { - match = dictBase + matchIndex3; - if (ZSTD_readMINMATCH(match, MINMATCH) == ZSTD_readMINMATCH(ip, MINMATCH)) /* assumption : matchIndex3 <= dictLimit-4 (by table construction) */ - currentMl = ZSTD_count_2segments(ip+MINMATCH, match+MINMATCH, iLimit, dictEnd, prefixStart) + MINMATCH; + const BYTE* const match = dictBase + matchIndex3; + mlen = ZSTD_count_2segments(ip, match, iLimit, dictEnd, prefixStart); } /* save best solution */ - if (currentMl > bestLength) { - bestLength = currentMl; - matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex3; - matches[mnum].len = (U32)currentMl; - mnum++; - if (currentMl > ZSTD_OPT_NUM) goto update; - if (ip+currentMl == iLimit) goto update; /* best possible, and avoid read overflow*/ - } - } - } + if (mlen >= mls /* == 3 > bestLength */) { + DEBUGLOG(8, "found small match with hlog3, of length %u", + (U32)mlen); + bestLength = mlen; + assert(current > matchIndex3); + assert(mnum==0); /* no prior solution */ + matches[0].off = (current - matchIndex3) + ZSTD_REP_MOVE; + matches[0].len = (U32)mlen; + mnum = 1; + if ( (mlen > sufficient_len) | + (ip+mlen == iLimit) ) { /* best possible length */ + zc->nextToUpdate = current+1; /* skip insertion */ + return 1; + } } } } hashTable[h] = current; /* Update Hash Table */ while (nbCompares-- && (matchIndex > windowLow)) { - U32* nextPtr = bt + 2*(matchIndex & btMask); + U32* const nextPtr = bt + 2*(matchIndex & btMask); size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */ const BYTE* match; + assert(current > matchIndex); if ((!extDict) || (matchIndex+matchLength >= dictLimit)) { + assert(matchIndex+matchLength >= dictLimit); /* ensure the condition is correct when !extDict */ match = base + matchIndex; - if (match[matchLength] == ip[matchLength]) { - matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iLimit) +1; - } + matchLength += ZSTD_count(ip+matchLength, match+matchLength, iLimit); } else { match = dictBase + matchIndex; matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iLimit, dictEnd, prefixStart); if (matchIndex+matchLength >= dictLimit) - match = base + matchIndex; /* to prepare for next usage of match[matchLength] */ + match = base + matchIndex; /* prepare for match[matchLength] */ } if (matchLength > bestLength) { - if (matchLength > matchEndIdx - matchIndex) matchEndIdx = matchIndex + (U32)matchLength; + DEBUGLOG(8, "found match of length %u at distance %u", + (U32)matchLength, current - matchIndex); + assert(matchEndIdx > matchIndex); + if (matchLength > matchEndIdx - matchIndex) + matchEndIdx = matchIndex + (U32)matchLength; bestLength = matchLength; - matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex; + matches[mnum].off = (current - matchIndex) + ZSTD_REP_MOVE; matches[mnum].len = (U32)matchLength; mnum++; if (matchLength > ZSTD_OPT_NUM) break; - if (ip+matchLength == iLimit) /* equal : no way to know if inf or sup */ - break; /* drop, to guarantee consistency (miss a little bit of compression) */ + if (ip+matchLength == iLimit) { /* equal : no way to know if inf or sup */ + break; /* drop, to preserve bt consistency (miss a little bit of compression) */ + } } if (match[matchLength] < ip[matchLength]) { - /* match is smaller than current */ + /* match smaller than current */ *smallerPtr = matchIndex; /* update smaller idx */ commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */ if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */ - smallerPtr = nextPtr+1; /* new "smaller" => larger of match */ - matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */ + smallerPtr = nextPtr+1; /* new candidate => larger than match, which was smaller than current */ + matchIndex = nextPtr[1]; /* new matchIndex, larger than previous, closer to current */ } else { - /* match is larger than current */ *largerPtr = matchIndex; commonLengthLarger = matchLength; if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */ @@ -343,65 +415,31 @@ static U32 ZSTD_insertBtAndGetAllMatches ( *smallerPtr = *largerPtr = 0; -update: - zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1; + assert(matchEndIdx > current+8); + zc->nextToUpdate = matchEndIdx - 8; /* skip repetitive patterns */ return mnum; } -/** Tree updater, providing best match */ -static U32 ZSTD_BtGetAllMatches ( - ZSTD_CCtx* zc, - const BYTE* const ip, const BYTE* const iLimit, - const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen) -{ - if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */ - ZSTD_updateTree(zc, ip, iLimit, maxNbAttempts, mls); - return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 0, matches, minMatchLen); -} - - -static U32 ZSTD_BtGetAllMatches_selectMLS ( +FORCE_INLINE_TEMPLATE U32 ZSTD_BtGetAllMatches ( ZSTD_CCtx* zc, /* Index table will be updated */ - const BYTE* ip, const BYTE* const iHighLimit, - const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen) -{ - switch(matchLengthSearch) - { - case 3 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen); - default : - case 4 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen); - case 5 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen); - case 7 : - case 6 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen); - } -} - -/** Tree updater, providing best match */ -static U32 ZSTD_BtGetAllMatches_extDict ( - ZSTD_CCtx* zc, - const BYTE* const ip, const BYTE* const iLimit, - const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen) + const BYTE* ip, const BYTE* const iHighLimit, int const extDict, + U32 const maxNbAttempts, U32 const matchLengthSearch, U32 const sufficient_len, + U32 rep[ZSTD_REP_NUM], U32 const ll0, + ZSTD_match_t* matches, U32 const lengthToBeat) { + DEBUGLOG(7, "ZSTD_BtGetAllMatches"); if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */ - ZSTD_updateTree_extDict(zc, ip, iLimit, maxNbAttempts, mls); - return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 1, matches, minMatchLen); -} - - -static U32 ZSTD_BtGetAllMatches_selectMLS_extDict ( - ZSTD_CCtx* zc, /* Index table will be updated */ - const BYTE* ip, const BYTE* const iHighLimit, - const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen) -{ + if (extDict) ZSTD_updateTree_extDict(zc, ip, iHighLimit, maxNbAttempts, matchLengthSearch); + else ZSTD_updateTree(zc, ip, iHighLimit, maxNbAttempts, matchLengthSearch); switch(matchLengthSearch) { - case 3 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen); + case 3 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 3, sufficient_len, rep, ll0, matches, lengthToBeat); default : - case 4 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen); - case 5 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen); + case 4 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 4, sufficient_len, rep, ll0, matches, lengthToBeat); + case 5 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 5, sufficient_len, rep, ll0, matches, lengthToBeat); case 7 : - case 6 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen); + case 6 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 6, sufficient_len, rep, ll0, matches, lengthToBeat); } } @@ -409,534 +447,313 @@ static U32 ZSTD_BtGetAllMatches_selectMLS_extDict ( /*-******************************* * Optimal parser *********************************/ -FORCE_INLINE_TEMPLATE -size_t ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx, - const void* src, size_t srcSize, const int ultra) -{ - seqStore_t* seqStorePtr = &(ctx->seqStore); - optState_t* optStatePtr = &(ctx->optState); - const BYTE* const istart = (const BYTE*)src; - const BYTE* ip = istart; - const BYTE* anchor = istart; - const BYTE* const iend = istart + srcSize; - const BYTE* const ilimit = iend - 8; - const BYTE* const base = ctx->base; - const BYTE* const prefixStart = base + ctx->dictLimit; - - const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog; - const U32 sufficient_len = ctx->appliedParams.cParams.targetLength; - const U32 mls = ctx->appliedParams.cParams.searchLength; - const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4; - - ZSTD_optimal_t* opt = optStatePtr->priceTable; - ZSTD_match_t* matches = optStatePtr->matchTable; - const BYTE* inr; - U32 offset, rep[ZSTD_REP_NUM]; - - /* init */ - ctx->nextToUpdate3 = ctx->nextToUpdate; - ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize); - ip += (ip==prefixStart); - { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; } - - /* Match Loop */ - while (ip < ilimit) { - U32 cur, match_num, last_pos, litlen, price; - U32 u, mlen, best_mlen, best_off, litLength; - memset(opt, 0, sizeof(ZSTD_optimal_t)); - last_pos = 0; - litlen = (U32)(ip - anchor); - - /* check repCode */ - { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor); - for (i=(ip == anchor); i<last_i; i++) { - const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i]; - if ( (repCur > 0) && (repCur < (S32)(ip-prefixStart)) - && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(ip - repCur, minMatch))) { - mlen = (U32)ZSTD_count(ip+minMatch, ip+minMatch-repCur, iend) + minMatch; - if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) { - best_mlen = mlen; best_off = i; cur = 0; last_pos = 1; - goto _storeSequence; - } - best_off = i - (ip == anchor); - do { - price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra); - if (mlen > last_pos || price < opt[mlen].price) - SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */ - mlen--; - } while (mlen >= minMatch); - } } } - - match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, ip, iend, maxSearches, mls, matches, minMatch); - - if (!last_pos && !match_num) { ip++; continue; } - - if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) { - best_mlen = matches[match_num-1].len; - best_off = matches[match_num-1].off; - cur = 0; - last_pos = 1; - goto _storeSequence; - } - - /* set prices using matches at position = 0 */ - best_mlen = (last_pos) ? last_pos : minMatch; - for (u = 0; u < match_num; u++) { - mlen = (u>0) ? matches[u-1].len+1 : best_mlen; - best_mlen = matches[u].len; - while (mlen <= best_mlen) { - price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra); - if (mlen > last_pos || price < opt[mlen].price) - SET_PRICE(mlen, mlen, matches[u].off, litlen, price); /* note : macro modifies last_pos */ - mlen++; - } } - - if (last_pos < minMatch) { ip++; continue; } - - /* initialize opt[0] */ - { U32 i ; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; } - opt[0].mlen = 1; - opt[0].litlen = litlen; - - /* check further positions */ - for (cur = 1; cur <= last_pos; cur++) { - inr = ip + cur; - - if (opt[cur-1].mlen == 1) { - litlen = opt[cur-1].litlen + 1; - if (cur > litlen) { - price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen); - } else - price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor); - } else { - litlen = 1; - price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1); - } - - if (cur > last_pos || price <= opt[cur].price) - SET_PRICE(cur, 1, 0, litlen, price); - - if (cur == last_pos) break; - - if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */ - continue; - - mlen = opt[cur].mlen; - if (opt[cur].off > ZSTD_REP_MOVE_OPT) { - opt[cur].rep[2] = opt[cur-mlen].rep[1]; - opt[cur].rep[1] = opt[cur-mlen].rep[0]; - opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT; - } else { - opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2]; - opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1]; - /* If opt[cur].off == ZSTD_REP_MOVE_OPT, then mlen != 1. - * offset ZSTD_REP_MOVE_OPT is used for the special case - * litLength == 0, where offset 0 means something special. - * mlen == 1 means the previous byte was stored as a literal, - * so they are mutually exclusive. - */ - assert(!(opt[cur].off == ZSTD_REP_MOVE_OPT && mlen == 1)); - opt[cur].rep[0] = (opt[cur].off == ZSTD_REP_MOVE_OPT) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]); - } - - best_mlen = minMatch; - { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1); - for (i=(opt[cur].mlen != 1); i<last_i; i++) { /* check rep */ - const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i]; - if ( (repCur > 0) && (repCur < (S32)(inr-prefixStart)) - && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(inr - repCur, minMatch))) { - mlen = (U32)ZSTD_count(inr+minMatch, inr+minMatch - repCur, iend) + minMatch; - - if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) { - best_mlen = mlen; best_off = i; last_pos = cur + 1; - goto _storeSequence; - } - - best_off = i - (opt[cur].mlen != 1); - if (mlen > best_mlen) best_mlen = mlen; - - do { - if (opt[cur].mlen == 1) { - litlen = opt[cur].litlen; - if (cur > litlen) { - price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra); - } else - price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra); - } else { - litlen = 0; - price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra); - } - - if (cur + mlen > last_pos || price <= opt[cur + mlen].price) - SET_PRICE(cur + mlen, mlen, i, litlen, price); - mlen--; - } while (mlen >= minMatch); - } } } - - match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, inr, iend, maxSearches, mls, matches, best_mlen); - - if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) { - best_mlen = matches[match_num-1].len; - best_off = matches[match_num-1].off; - last_pos = cur + 1; - goto _storeSequence; - } - - /* set prices using matches at position = cur */ - for (u = 0; u < match_num; u++) { - mlen = (u>0) ? matches[u-1].len+1 : best_mlen; - best_mlen = matches[u].len; - - while (mlen <= best_mlen) { - if (opt[cur].mlen == 1) { - litlen = opt[cur].litlen; - if (cur > litlen) - price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra); - else - price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra); - } else { - litlen = 0; - price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra); - } - - if (cur + mlen > last_pos || (price < opt[cur + mlen].price)) - SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price); +typedef struct repcodes_s { + U32 rep[3]; +} repcodes_t; - mlen++; - } } } - - best_mlen = opt[last_pos].mlen; - best_off = opt[last_pos].off; - cur = last_pos - best_mlen; - - /* store sequence */ -_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */ - opt[0].mlen = 1; - - while (1) { - mlen = opt[cur].mlen; - offset = opt[cur].off; - opt[cur].mlen = best_mlen; - opt[cur].off = best_off; - best_mlen = mlen; - best_off = offset; - if (mlen > cur) break; - cur -= mlen; - } - - for (u = 0; u <= last_pos;) { - u += opt[u].mlen; +repcodes_t ZSTD_updateRep(U32 const rep[3], U32 const offset, U32 const ll0) +{ + repcodes_t newReps; + if (offset >= ZSTD_REP_NUM) { /* full offset */ + newReps.rep[2] = rep[1]; + newReps.rep[1] = rep[0]; + newReps.rep[0] = offset - ZSTD_REP_MOVE; + } else { /* repcode */ + U32 const repCode = offset + ll0; + if (repCode > 0) { /* note : if repCode==0, no change */ + U32 const currentOffset = (repCode==ZSTD_REP_NUM) ? (rep[0] - 1) : rep[repCode]; + newReps.rep[2] = (repCode >= 2) ? rep[1] : rep[2]; + newReps.rep[1] = rep[0]; + newReps.rep[0] = currentOffset; + } else { /* repCode == 0 */ + memcpy(&newReps, rep, sizeof(newReps)); } + } + return newReps; +} - for (cur=0; cur < last_pos; ) { - mlen = opt[cur].mlen; - if (mlen == 1) { ip++; cur++; continue; } - offset = opt[cur].off; - cur += mlen; - litLength = (U32)(ip - anchor); - - if (offset > ZSTD_REP_MOVE_OPT) { - rep[2] = rep[1]; - rep[1] = rep[0]; - rep[0] = offset - ZSTD_REP_MOVE_OPT; - offset--; - } else { - if (offset != 0) { - best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]); - if (offset != 1) rep[2] = rep[1]; - rep[1] = rep[0]; - rep[0] = best_off; - } - if (litLength==0) offset--; - } - ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH); - ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH); - anchor = ip = ip + mlen; - } } /* for (cur=0; cur < last_pos; ) */ +typedef struct { + const BYTE* anchor; + U32 litlen; + U32 rawLitCost; +} cachedLiteralPrice_t; - /* Save reps for next block */ - { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; } +static U32 ZSTD_rawLiteralsCost_cached( + cachedLiteralPrice_t* const cachedLitPrice, + const BYTE* const anchor, U32 const litlen, + const optState_t* const optStatePtr) +{ + U32 startCost; + U32 remainingLength; + const BYTE* startPosition; + + if (anchor == cachedLitPrice->anchor) { + startCost = cachedLitPrice->rawLitCost; + startPosition = anchor + cachedLitPrice->litlen; + assert(litlen >= cachedLitPrice->litlen); + remainingLength = litlen - cachedLitPrice->litlen; + } else { + startCost = 0; + startPosition = anchor; + remainingLength = litlen; + } - /* Return the last literals size */ - return iend - anchor; + { U32 const rawLitCost = startCost + ZSTD_rawLiteralsCost(startPosition, remainingLength, optStatePtr); + cachedLitPrice->anchor = anchor; + cachedLitPrice->litlen = litlen; + cachedLitPrice->rawLitCost = rawLitCost; + return rawLitCost; + } } - -size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize) +static U32 ZSTD_fullLiteralsCost_cached( + cachedLiteralPrice_t* const cachedLitPrice, + const BYTE* const anchor, U32 const litlen, + const optState_t* const optStatePtr) { - return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0); + return ZSTD_rawLiteralsCost_cached(cachedLitPrice, anchor, litlen, optStatePtr) + + ZSTD_litLengthPrice(litlen, optStatePtr); } -size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize) +static int ZSTD_literalsContribution_cached( + cachedLiteralPrice_t* const cachedLitPrice, + const BYTE* const anchor, U32 const litlen, + const optState_t* const optStatePtr) { - return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 1); + int const contribution = ZSTD_rawLiteralsCost_cached(cachedLitPrice, anchor, litlen, optStatePtr) + + ZSTD_litLengthContribution(litlen, optStatePtr); + return contribution; } - FORCE_INLINE_TEMPLATE -size_t ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx, - const void* src, size_t srcSize, const int ultra) +size_t ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx, + const void* src, size_t srcSize, + const int optLevel, const int extDict) { - seqStore_t* seqStorePtr = &(ctx->seqStore); - optState_t* optStatePtr = &(ctx->optState); + seqStore_t* const seqStorePtr = &(ctx->seqStore); + optState_t* const optStatePtr = &(ctx->optState); const BYTE* const istart = (const BYTE*)src; const BYTE* ip = istart; const BYTE* anchor = istart; const BYTE* const iend = istart + srcSize; const BYTE* const ilimit = iend - 8; const BYTE* const base = ctx->base; - const U32 lowestIndex = ctx->lowLimit; - const U32 dictLimit = ctx->dictLimit; - const BYTE* const prefixStart = base + dictLimit; - const BYTE* const dictBase = ctx->dictBase; - const BYTE* const dictEnd = dictBase + dictLimit; + const BYTE* const prefixStart = base + ctx->dictLimit; - const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog; - const U32 sufficient_len = ctx->appliedParams.cParams.targetLength; - const U32 mls = ctx->appliedParams.cParams.searchLength; - const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4; + U32 const maxSearches = 1U << ctx->appliedParams.cParams.searchLog; + U32 const sufficient_len = MIN(ctx->appliedParams.cParams.targetLength, ZSTD_OPT_NUM -1); + U32 const mls = ctx->appliedParams.cParams.searchLength; + U32 const minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4; - ZSTD_optimal_t* opt = optStatePtr->priceTable; - ZSTD_match_t* matches = optStatePtr->matchTable; - const BYTE* inr; + ZSTD_optimal_t* const opt = optStatePtr->priceTable; + ZSTD_match_t* const matches = optStatePtr->matchTable; + cachedLiteralPrice_t cachedLitPrice; + U32 rep[ZSTD_REP_NUM]; /* init */ - U32 offset, rep[ZSTD_REP_NUM]; - { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; } - + DEBUGLOG(5, "ZSTD_compressBlock_opt_generic"); ctx->nextToUpdate3 = ctx->nextToUpdate; ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize); ip += (ip==prefixStart); + { int i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; } + memset(&cachedLitPrice, 0, sizeof(cachedLitPrice)); /* Match Loop */ while (ip < ilimit) { - U32 cur, match_num, last_pos, litlen, price; - U32 u, mlen, best_mlen, best_off, litLength; - U32 current = (U32)(ip-base); - memset(opt, 0, sizeof(ZSTD_optimal_t)); - last_pos = 0; - opt[0].litlen = (U32)(ip - anchor); - - /* check repCode */ - { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor); - for (i = (ip==anchor); i<last_i; i++) { - const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i]; - const U32 repIndex = (U32)(current - repCur); - const BYTE* const repBase = repIndex < dictLimit ? dictBase : base; - const BYTE* const repMatch = repBase + repIndex; - if ( (repCur > 0 && repCur <= (S32)current) - && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */ - && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) { - /* repcode detected we should take it */ - const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend; - mlen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch; - - if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) { - best_mlen = mlen; best_off = i; cur = 0; last_pos = 1; - goto _storeSequence; - } - - best_off = i - (ip==anchor); - litlen = opt[0].litlen; - do { - price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra); - if (mlen > last_pos || price < opt[mlen].price) - SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */ - mlen--; - } while (mlen >= minMatch); - } } } - - match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, ip, iend, maxSearches, mls, matches, minMatch); /* first search (depth 0) */ - - if (!last_pos && !match_num) { ip++; continue; } - - { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; } - opt[0].mlen = 1; - - if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) { - best_mlen = matches[match_num-1].len; - best_off = matches[match_num-1].off; - cur = 0; - last_pos = 1; - goto _storeSequence; - } - - best_mlen = (last_pos) ? last_pos : minMatch; - - /* set prices using matches at position = 0 */ - for (u = 0; u < match_num; u++) { - mlen = (u>0) ? matches[u-1].len+1 : best_mlen; - best_mlen = matches[u].len; - litlen = opt[0].litlen; - while (mlen <= best_mlen) { - price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra); - if (mlen > last_pos || price < opt[mlen].price) - SET_PRICE(mlen, mlen, matches[u].off, litlen, price); - mlen++; - } } - - if (last_pos < minMatch) { - ip++; continue; + U32 cur, last_pos = 0; + U32 best_mlen, best_off; + + /* find first match */ + { U32 const litlen = (U32)(ip - anchor); + U32 const ll0 = !litlen; + U32 const nbMatches = ZSTD_BtGetAllMatches(ctx, ip, iend, extDict, maxSearches, mls, sufficient_len, rep, ll0, matches, minMatch); + if (!nbMatches) { ip++; continue; } + + /* initialize opt[0] */ + { U32 i ; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; } + opt[0].mlen = 1; + opt[0].litlen = litlen; + + /* large match -> immediate encoding */ + { U32 const maxML = matches[nbMatches-1].len; + DEBUGLOG(7, "found %u matches of maxLength=%u and offset=%u at cPos=%u => start new serie", + nbMatches, maxML, matches[nbMatches-1].off, (U32)(ip-prefixStart)); + + if (maxML > sufficient_len) { + best_mlen = maxML; + best_off = matches[nbMatches-1].off; + DEBUGLOG(7, "large match (%u>%u), immediate encoding", + best_mlen, sufficient_len); + cur = 0; + last_pos = 1; + goto _shortestPath; + } } + + /* set prices for first matches starting position == 0 */ + { U32 const literalsPrice = ZSTD_fullLiteralsCost_cached(&cachedLitPrice, anchor, litlen, optStatePtr); + U32 pos; + U32 matchNb; + for (pos = 0; pos < minMatch; pos++) { + opt[pos].mlen = 1; + opt[pos].price = ZSTD_MAX_PRICE; + } + for (matchNb = 0; matchNb < nbMatches; matchNb++) { + U32 const offset = matches[matchNb].off; + U32 const end = matches[matchNb].len; + repcodes_t const repHistory = ZSTD_updateRep(rep, offset, ll0); + for ( ; pos <= end ; pos++ ) { + U32 const matchPrice = literalsPrice + ZSTD_getMatchPrice(offset, pos, optStatePtr, optLevel); + DEBUGLOG(7, "rPos:%u => set initial price : %u", + pos, matchPrice); + opt[pos].mlen = pos; + opt[pos].off = offset; + opt[pos].litlen = litlen; + opt[pos].price = matchPrice; + memcpy(opt[pos].rep, &repHistory, sizeof(repHistory)); + } } + last_pos = pos-1; + } } /* check further positions */ for (cur = 1; cur <= last_pos; cur++) { - inr = ip + cur; + const BYTE* const inr = ip + cur; + assert(cur < ZSTD_OPT_NUM); - if (opt[cur-1].mlen == 1) { - litlen = opt[cur-1].litlen + 1; + /* Fix current position with one literal if cheaper */ + { U32 const litlen = (opt[cur-1].mlen == 1) ? opt[cur-1].litlen + 1 : 1; + int price; /* note : contribution can be negative */ if (cur > litlen) { - price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen); - } else - price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor); - } else { - litlen = 1; - price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1); - } - - if (cur > last_pos || price <= opt[cur].price) - SET_PRICE(cur, 1, 0, litlen, price); + price = opt[cur - litlen].price + ZSTD_literalsContribution(inr-litlen, litlen, optStatePtr); + } else { + price = ZSTD_literalsContribution_cached(&cachedLitPrice, anchor, litlen, optStatePtr); + } + assert(price < 1000000000); /* overflow check */ + if (price <= opt[cur].price) { + DEBUGLOG(7, "rPos:%u : better price (%u<%u) using literal", + cur, price, opt[cur].price); + opt[cur].mlen = 1; + opt[cur].off = 0; + opt[cur].litlen = litlen; + opt[cur].price = price; + memcpy(opt[cur].rep, opt[cur-1].rep, sizeof(opt[cur].rep)); + } } + + /* last match must start at a minimum distance of 8 from oend */ + if (inr > ilimit) continue; if (cur == last_pos) break; - if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */ - continue; - - mlen = opt[cur].mlen; - if (opt[cur].off > ZSTD_REP_MOVE_OPT) { - opt[cur].rep[2] = opt[cur-mlen].rep[1]; - opt[cur].rep[1] = opt[cur-mlen].rep[0]; - opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT; - } else { - opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2]; - opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1]; - assert(!(opt[cur].off == ZSTD_REP_MOVE_OPT && mlen == 1)); - opt[cur].rep[0] = (opt[cur].off == ZSTD_REP_MOVE_OPT) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]); - } + if ( (optLevel==0) /*static*/ + && (opt[cur+1].price <= opt[cur].price) ) + continue; /* skip unpromising positions; about ~+6% speed, -0.01 ratio */ + + { U32 const ll0 = (opt[cur].mlen != 1); + U32 const litlen = (opt[cur].mlen == 1) ? opt[cur].litlen : 0; + U32 const previousPrice = (cur > litlen) ? opt[cur-litlen].price : 0; + U32 const basePrice = previousPrice + ZSTD_fullLiteralsCost(inr-litlen, litlen, optStatePtr); + U32 const nbMatches = ZSTD_BtGetAllMatches(ctx, inr, iend, extDict, maxSearches, mls, sufficient_len, opt[cur].rep, ll0, matches, minMatch); + U32 matchNb; + if (!nbMatches) continue; + + { U32 const maxML = matches[nbMatches-1].len; + DEBUGLOG(7, "rPos:%u, found %u matches, of maxLength=%u", + cur, nbMatches, maxML); + + if ( (maxML > sufficient_len) + | (cur + maxML >= ZSTD_OPT_NUM) ) { + best_mlen = maxML; + best_off = matches[nbMatches-1].off; + last_pos = cur + 1; + goto _shortestPath; + } + } - best_mlen = minMatch; - { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1); - for (i = (mlen != 1); i<last_i; i++) { - const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i]; - const U32 repIndex = (U32)(current+cur - repCur); - const BYTE* const repBase = repIndex < dictLimit ? dictBase : base; - const BYTE* const repMatch = repBase + repIndex; - if ( (repCur > 0 && repCur <= (S32)(current+cur)) - && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */ - && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) { - /* repcode detected */ - const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend; - mlen = (U32)ZSTD_count_2segments(inr+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch; - - if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) { - best_mlen = mlen; best_off = i; last_pos = cur + 1; - goto _storeSequence; + /* set prices using matches found at position == cur */ + for (matchNb = 0; matchNb < nbMatches; matchNb++) { + U32 const offset = matches[matchNb].off; + repcodes_t const repHistory = ZSTD_updateRep(opt[cur].rep, offset, ll0); + U32 const lastML = matches[matchNb].len; + U32 const startML = (matchNb>0) ? matches[matchNb-1].len+1 : minMatch; + U32 mlen; + + DEBUGLOG(7, "testing match %u => offCode=%u, mlen=%u, llen=%u", + matchNb, matches[matchNb].off, lastML, litlen); + + for (mlen = lastML; mlen >= startML; mlen--) { + U32 const pos = cur + mlen; + int const price = basePrice + ZSTD_getMatchPrice(offset, mlen, optStatePtr, optLevel); + + if ((pos > last_pos) || (price < opt[pos].price)) { + DEBUGLOG(7, "rPos:%u => new better price (%u<%u)", + pos, price, opt[pos].price); + while (last_pos < pos) { opt[last_pos+1].price = ZSTD_MAX_PRICE; last_pos++; } + opt[pos].mlen = mlen; + opt[pos].off = offset; + opt[pos].litlen = litlen; + opt[pos].price = price; + memcpy(opt[pos].rep, &repHistory, sizeof(repHistory)); + } else { + if (optLevel==0) break; /* gets ~+10% speed for about -0.01 ratio loss */ } - - best_off = i - (opt[cur].mlen != 1); - if (mlen > best_mlen) best_mlen = mlen; - - do { - if (opt[cur].mlen == 1) { - litlen = opt[cur].litlen; - if (cur > litlen) { - price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra); - } else - price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra); - } else { - litlen = 0; - price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra); - } - - if (cur + mlen > last_pos || price <= opt[cur + mlen].price) - SET_PRICE(cur + mlen, mlen, i, litlen, price); - mlen--; - } while (mlen >= minMatch); } } } - - match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, inr, iend, maxSearches, mls, matches, minMatch); - - if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) { - best_mlen = matches[match_num-1].len; - best_off = matches[match_num-1].off; - last_pos = cur + 1; - goto _storeSequence; - } - - /* set prices using matches at position = cur */ - for (u = 0; u < match_num; u++) { - mlen = (u>0) ? matches[u-1].len+1 : best_mlen; - best_mlen = matches[u].len; - - while (mlen <= best_mlen) { - if (opt[cur].mlen == 1) { - litlen = opt[cur].litlen; - if (cur > litlen) - price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra); - else - price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra); - } else { - litlen = 0; - price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra); - } - - if (cur + mlen > last_pos || (price < opt[cur + mlen].price)) - SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price); - - mlen++; - } } } /* for (cur = 1; cur <= last_pos; cur++) */ + } /* for (cur = 1; cur <= last_pos; cur++) */ best_mlen = opt[last_pos].mlen; best_off = opt[last_pos].off; cur = last_pos - best_mlen; - /* store sequence */ -_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */ - opt[0].mlen = 1; - - while (1) { - mlen = opt[cur].mlen; - offset = opt[cur].off; - opt[cur].mlen = best_mlen; - opt[cur].off = best_off; - best_mlen = mlen; - best_off = offset; - if (mlen > cur) break; - cur -= mlen; - } - - for (u = 0; u <= last_pos; ) { - u += opt[u].mlen; - } +_shortestPath: /* cur, last_pos, best_mlen, best_off have to be set */ + assert(opt[0].mlen == 1); + + /* reverse traversal */ + DEBUGLOG(7, "start reverse traversal (last_pos:%u, cur:%u)", + last_pos, cur); + { U32 selectedMatchLength = best_mlen; + U32 selectedOffset = best_off; + U32 pos = cur; + while (1) { + U32 const mlen = opt[pos].mlen; + U32 const off = opt[pos].off; + opt[pos].mlen = selectedMatchLength; + opt[pos].off = selectedOffset; + selectedMatchLength = mlen; + selectedOffset = off; + if (mlen > pos) break; + pos -= mlen; + } } - for (cur=0; cur < last_pos; ) { - mlen = opt[cur].mlen; - if (mlen == 1) { ip++; cur++; continue; } - offset = opt[cur].off; - cur += mlen; - litLength = (U32)(ip - anchor); - - if (offset > ZSTD_REP_MOVE_OPT) { - rep[2] = rep[1]; - rep[1] = rep[0]; - rep[0] = offset - ZSTD_REP_MOVE_OPT; - offset--; - } else { - if (offset != 0) { - best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]); - if (offset != 1) rep[2] = rep[1]; + /* save sequences */ + { U32 pos; + for (pos=0; pos < last_pos; ) { + U32 const llen = (U32)(ip - anchor); + U32 const mlen = opt[pos].mlen; + U32 const offset = opt[pos].off; + if (mlen == 1) { ip++; pos++; continue; } /* literal position => move on */ + pos += mlen; ip += mlen; + + /* repcodes update : like ZSTD_updateRep(), but update in place */ + if (offset >= ZSTD_REP_NUM) { /* full offset */ + rep[2] = rep[1]; rep[1] = rep[0]; - rep[0] = best_off; + rep[0] = offset - ZSTD_REP_MOVE; + } else { /* repcode */ + U32 const repCode = offset + (llen==0); + if (repCode) { /* note : if repCode==0, no change */ + U32 const currentOffset = (repCode==ZSTD_REP_NUM) ? (rep[0] - 1) : rep[repCode]; + if (repCode >= 2) rep[2] = rep[1]; + rep[1] = rep[0]; + rep[0] = currentOffset; + } } - if (litLength==0) offset--; - } - - ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH); - ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH); - anchor = ip = ip + mlen; - } } /* for (cur=0; cur < last_pos; ) */ + ZSTD_updateStats(optStatePtr, llen, anchor, offset, mlen); + ZSTD_storeSeq(seqStorePtr, llen, anchor, offset, mlen-MINMATCH); + anchor = ip; + } } + ZSTD_setLog2Prices(optStatePtr); + } /* while (ip < ilimit) */ /* Save reps for next block */ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; } @@ -946,12 +763,23 @@ _storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */ } +size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize) +{ + DEBUGLOG(5, "ZSTD_compressBlock_btopt"); + return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0 /*optLevel*/, 0 /*extDict*/); +} + +size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize) +{ + return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 2 /*optLevel*/, 0 /*extDict*/); +} + size_t ZSTD_compressBlock_btopt_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize) { - return ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 0); + return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0 /*optLevel*/, 1 /*extDict*/); } size_t ZSTD_compressBlock_btultra_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize) { - return ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 1); + return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 2 /*optLevel*/, 1 /*extDict*/); } diff --git a/thirdparty/zstd/compress/zstd_opt.h b/thirdparty/zstd/compress/zstd_opt.h index 816a1fabbf..82e810c293 100644 --- a/thirdparty/zstd/compress/zstd_opt.h +++ b/thirdparty/zstd/compress/zstd_opt.h @@ -11,12 +11,12 @@ #ifndef ZSTD_OPT_H #define ZSTD_OPT_H -#include "zstd_compress.h" - #if defined (__cplusplus) extern "C" { #endif +#include "zstd.h" /* ZSTD_CCtx, size_t */ + size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize); size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize); diff --git a/thirdparty/zstd/compress/zstdmt_compress.c b/thirdparty/zstd/compress/zstdmt_compress.c index 7831cd3bd8..e51edf124f 100644 --- a/thirdparty/zstd/compress/zstdmt_compress.c +++ b/thirdparty/zstd/compress/zstdmt_compress.c @@ -24,7 +24,7 @@ #include <string.h> /* memcpy, memset */ #include "pool.h" /* threadpool */ #include "threading.h" /* mutex */ -#include "zstd_internal.h" /* MIN, ERROR, ZSTD_*, ZSTD_highbit32 */ +#include "zstd_compress_internal.h" /* MIN, ERROR, ZSTD_*, ZSTD_highbit32 */ #include "zstdmt_compress.h" @@ -140,9 +140,12 @@ static size_t ZSTDMT_sizeof_bufferPool(ZSTDMT_bufferPool* bufPool) return poolSize + totalBufferSize; } -static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* bufPool, size_t bSize) +static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* const bufPool, size_t const bSize) { + ZSTD_pthread_mutex_lock(&bufPool->poolMutex); + DEBUGLOG(4, "ZSTDMT_setBufferSize: bSize = %u", (U32)bSize); bufPool->bufferSize = bSize; + ZSTD_pthread_mutex_unlock(&bufPool->poolMutex); } /** ZSTDMT_getBuffer() : @@ -150,28 +153,31 @@ static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* bufPool, size_t bSize) static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* bufPool) { size_t const bSize = bufPool->bufferSize; - DEBUGLOG(5, "ZSTDMT_getBuffer"); + DEBUGLOG(5, "ZSTDMT_getBuffer: bSize = %u", (U32)bufPool->bufferSize); ZSTD_pthread_mutex_lock(&bufPool->poolMutex); if (bufPool->nbBuffers) { /* try to use an existing buffer */ buffer_t const buf = bufPool->bTable[--(bufPool->nbBuffers)]; size_t const availBufferSize = buf.size; bufPool->bTable[bufPool->nbBuffers] = g_nullBuffer; - if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize)) { + if ((availBufferSize >= bSize) & ((availBufferSize>>3) <= bSize)) { /* large enough, but not too much */ + DEBUGLOG(5, "ZSTDMT_getBuffer: provide buffer %u of size %u", + bufPool->nbBuffers, (U32)buf.size); ZSTD_pthread_mutex_unlock(&bufPool->poolMutex); return buf; } /* size conditions not respected : scratch this buffer, create new one */ - DEBUGLOG(5, "existing buffer does not meet size conditions => freeing"); + DEBUGLOG(5, "ZSTDMT_getBuffer: existing buffer does not meet size conditions => freeing"); ZSTD_free(buf.start, bufPool->cMem); } ZSTD_pthread_mutex_unlock(&bufPool->poolMutex); /* create new buffer */ - DEBUGLOG(5, "create a new buffer"); + DEBUGLOG(5, "ZSTDMT_getBuffer: create a new buffer"); { buffer_t buffer; void* const start = ZSTD_malloc(bSize, bufPool->cMem); buffer.start = start; /* note : start can be NULL if malloc fails ! */ buffer.size = (start==NULL) ? 0 : bSize; + DEBUGLOG(5, "ZSTDMT_getBuffer: created buffer of size %u", (U32)bSize); return buffer; } } @@ -184,12 +190,14 @@ static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* bufPool, buffer_t buf) ZSTD_pthread_mutex_lock(&bufPool->poolMutex); if (bufPool->nbBuffers < bufPool->totalBuffers) { bufPool->bTable[bufPool->nbBuffers++] = buf; /* stored for later use */ + DEBUGLOG(5, "ZSTDMT_releaseBuffer: stored buffer of size %u in slot %u", + (U32)buf.size, (U32)(bufPool->nbBuffers-1)); ZSTD_pthread_mutex_unlock(&bufPool->poolMutex); return; } ZSTD_pthread_mutex_unlock(&bufPool->poolMutex); /* Reached bufferPool capacity (should not happen) */ - DEBUGLOG(5, "buffer pool capacity reached => freeing "); + DEBUGLOG(5, "ZSTDMT_releaseBuffer: pool capacity reached => freeing "); ZSTD_free(buf.start, bufPool->cMem); } @@ -302,7 +310,7 @@ static void ZSTDMT_releaseCCtx(ZSTDMT_CCtxPool* pool, ZSTD_CCtx* cctx) typedef struct { buffer_t src; const void* srcStart; - size_t dictSize; + size_t prefixSize; size_t srcSize; buffer_t dstBuff; size_t cSize; @@ -324,11 +332,11 @@ typedef struct { void ZSTDMT_compressChunk(void* jobDescription) { ZSTDMT_jobDescription* const job = (ZSTDMT_jobDescription*)jobDescription; - ZSTD_CCtx* cctx = ZSTDMT_getCCtx(job->cctxPool); - const void* const src = (const char*)job->srcStart + job->dictSize; + ZSTD_CCtx* const cctx = ZSTDMT_getCCtx(job->cctxPool); + const void* const src = (const char*)job->srcStart + job->prefixSize; buffer_t dstBuff = job->dstBuff; - DEBUGLOG(5, "job (first:%u) (last:%u) : dictSize %u, srcSize %u", - job->firstChunk, job->lastChunk, (U32)job->dictSize, (U32)job->srcSize); + DEBUGLOG(5, "ZSTDMT_compressChunk: job (first:%u) (last:%u) : prefixSize %u, srcSize %u ", + job->firstChunk, job->lastChunk, (U32)job->prefixSize, (U32)job->srcSize); if (cctx==NULL) { job->cSize = ERROR(memory_allocation); @@ -342,38 +350,48 @@ void ZSTDMT_compressChunk(void* jobDescription) goto _endJob; } job->dstBuff = dstBuff; + DEBUGLOG(5, "ZSTDMT_compressChunk: received dstBuff of size %u", (U32)dstBuff.size); } - if (job->cdict) { /* should only happen for first segment */ - size_t const initError = ZSTD_compressBegin_usingCDict_advanced(cctx, job->cdict, job->params.fParams, job->fullFrameSize); - DEBUGLOG(5, "using CDict"); + if (job->cdict) { + size_t const initError = ZSTD_compressBegin_advanced_internal(cctx, NULL, 0, ZSTD_dm_auto, job->cdict, job->params, job->fullFrameSize); + DEBUGLOG(4, "ZSTDMT_compressChunk: init using CDict (windowLog=%u)", job->params.cParams.windowLog); + assert(job->firstChunk); /* only allowed for first job */ if (ZSTD_isError(initError)) { job->cSize = initError; goto _endJob; } } else { /* srcStart points at reloaded section */ - if (!job->firstChunk) job->params.fParams.contentSizeFlag = 0; /* ensure no srcSize control */ - { ZSTD_CCtx_params jobParams = job->params; - size_t const forceWindowError = - ZSTD_CCtxParam_setParameter(&jobParams, ZSTD_p_forceMaxWindow, !job->firstChunk); - /* Force loading dictionary in "content-only" mode (no header analysis) */ - size_t const initError = ZSTD_compressBegin_advanced_internal(cctx, job->srcStart, job->dictSize, ZSTD_dm_rawContent, jobParams, job->fullFrameSize); - if (ZSTD_isError(initError) || ZSTD_isError(forceWindowError)) { + U64 const pledgedSrcSize = job->firstChunk ? job->fullFrameSize : ZSTD_CONTENTSIZE_UNKNOWN; + ZSTD_CCtx_params jobParams = job->params; /* do not modify job->params ! copy it, modify the copy */ + size_t const forceWindowError = ZSTD_CCtxParam_setParameter(&jobParams, ZSTD_p_forceMaxWindow, !job->firstChunk); + if (ZSTD_isError(forceWindowError)) { + DEBUGLOG(5, "ZSTD_CCtxParam_setParameter error : %s ", ZSTD_getErrorName(forceWindowError)); + job->cSize = forceWindowError; + goto _endJob; + } + DEBUGLOG(5, "ZSTDMT_compressChunk: invoking ZSTD_compressBegin_advanced_internal with windowLog = %u ", jobParams.cParams.windowLog); + { size_t const initError = ZSTD_compressBegin_advanced_internal(cctx, + job->srcStart, job->prefixSize, ZSTD_dm_rawContent, /* load dictionary in "content-only" mode (no header analysis) */ + NULL, + jobParams, pledgedSrcSize); + if (ZSTD_isError(initError)) { + DEBUGLOG(5, "ZSTD_compressBegin_advanced_internal error : %s ", ZSTD_getErrorName(initError)); job->cSize = initError; goto _endJob; - } - } } - if (!job->firstChunk) { /* flush and overwrite frame header when it's not first segment */ + } } + } + if (!job->firstChunk) { /* flush and overwrite frame header when it's not first job */ size_t const hSize = ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, 0); - if (ZSTD_isError(hSize)) { job->cSize = hSize; goto _endJob; } + if (ZSTD_isError(hSize)) { job->cSize = hSize; /* save error code */ goto _endJob; } ZSTD_invalidateRepCodes(cctx); } - DEBUGLOG(5, "Compressing : "); - DEBUG_PRINTHEX(4, job->srcStart, 12); + DEBUGLOG(5, "Compressing into dstBuff of size %u", (U32)dstBuff.size); + DEBUG_PRINTHEX(6, job->srcStart, 12); job->cSize = (job->lastChunk) ? ZSTD_compressEnd (cctx, dstBuff.start, dstBuff.size, src, job->srcSize) : ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, job->srcSize); - DEBUGLOG(5, "compressed %u bytes into %u bytes (first:%u) (last:%u)", + DEBUGLOG(5, "compressed %u bytes into %u bytes (first:%u) (last:%u) ", (unsigned)job->srcSize, (unsigned)job->cSize, job->firstChunk, job->lastChunk); - DEBUGLOG(5, "dstBuff.size : %u ; => %s", (U32)dstBuff.size, ZSTD_getErrorName(job->cSize)); + DEBUGLOG(5, "dstBuff.size : %u ; => %s ", (U32)dstBuff.size, ZSTD_getErrorName(job->cSize)); _endJob: ZSTDMT_releaseCCtx(job->cctxPool, cctx); @@ -403,13 +421,14 @@ struct ZSTDMT_CCtx_s { ZSTDMT_CCtxPool* cctxPool; ZSTD_pthread_mutex_t jobCompleted_mutex; ZSTD_pthread_cond_t jobCompleted_cond; + ZSTD_CCtx_params params; size_t targetSectionSize; size_t inBuffSize; size_t dictSize; size_t targetDictSize; inBuff_t inBuff; - ZSTD_CCtx_params params; XXH64_state_t xxhState; + unsigned singleThreaded; unsigned jobIDMask; unsigned doneJobID; unsigned nextJobID; @@ -430,20 +449,32 @@ static ZSTDMT_jobDescription* ZSTDMT_allocJobsTable(U32* nbJobsPtr, ZSTD_customM nbJobs * sizeof(ZSTDMT_jobDescription), cMem); } -/* Internal only */ -size_t ZSTDMT_initializeCCtxParameters(ZSTD_CCtx_params* params, unsigned nbThreads) +/* ZSTDMT_CCtxParam_setNbThreads(): + * Internal use only */ +size_t ZSTDMT_CCtxParam_setNbThreads(ZSTD_CCtx_params* params, unsigned nbThreads) { + if (nbThreads > ZSTDMT_NBTHREADS_MAX) nbThreads = ZSTDMT_NBTHREADS_MAX; + if (nbThreads < 1) nbThreads = 1; params->nbThreads = nbThreads; params->overlapSizeLog = ZSTDMT_OVERLAPLOG_DEFAULT; params->jobSize = 0; - return 0; + return nbThreads; +} + +/* ZSTDMT_getNbThreads(): + * @return nb threads currently active in mtctx. + * mtctx must be valid */ +size_t ZSTDMT_getNbThreads(const ZSTDMT_CCtx* mtctx) +{ + assert(mtctx != NULL); + return mtctx->params.nbThreads; } ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem) { ZSTDMT_CCtx* mtctx; U32 nbJobs = nbThreads + 2; - DEBUGLOG(3, "ZSTDMT_createCCtx_advanced"); + DEBUGLOG(3, "ZSTDMT_createCCtx_advanced (nbThreads = %u)", nbThreads); if (nbThreads < 1) return NULL; nbThreads = MIN(nbThreads , ZSTDMT_NBTHREADS_MAX); @@ -453,7 +484,7 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem) mtctx = (ZSTDMT_CCtx*) ZSTD_calloc(sizeof(ZSTDMT_CCtx), cMem); if (!mtctx) return NULL; - ZSTDMT_initializeCCtxParameters(&mtctx->params, nbThreads); + ZSTDMT_CCtxParam_setNbThreads(&mtctx->params, nbThreads); mtctx->cMem = cMem; mtctx->allJobsCompleted = 1; mtctx->factory = POOL_create_advanced(nbThreads, 0, cMem); @@ -545,17 +576,23 @@ size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx) } /* Internal only */ -size_t ZSTDMT_CCtxParam_setMTCtxParameter( - ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, unsigned value) { +size_t ZSTDMT_CCtxParam_setMTCtxParameter(ZSTD_CCtx_params* params, + ZSTDMT_parameter parameter, unsigned value) { + DEBUGLOG(4, "ZSTDMT_CCtxParam_setMTCtxParameter"); switch(parameter) { - case ZSTDMT_p_sectionSize : + case ZSTDMT_p_jobSize : + DEBUGLOG(4, "ZSTDMT_CCtxParam_setMTCtxParameter : set jobSize to %u", value); + if ( (value > 0) /* value==0 => automatic job size */ + & (value < ZSTDMT_JOBSIZE_MIN) ) + value = ZSTDMT_JOBSIZE_MIN; params->jobSize = value; - return 0; + return value; case ZSTDMT_p_overlapSectionLog : + if (value > 9) value = 9; DEBUGLOG(4, "ZSTDMT_p_overlapSectionLog : %u", value); params->overlapSizeLog = (value >= 9) ? 9 : value; - return 0; + return value; default : return ERROR(parameter_unsupported); } @@ -563,9 +600,10 @@ size_t ZSTDMT_CCtxParam_setMTCtxParameter( size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, unsigned value) { + DEBUGLOG(4, "ZSTDMT_setMTCtxParameter"); switch(parameter) { - case ZSTDMT_p_sectionSize : + case ZSTDMT_p_jobSize : return ZSTDMT_CCtxParam_setMTCtxParameter(&mtctx->params, parameter, value); case ZSTDMT_p_overlapSectionLog : return ZSTDMT_CCtxParam_setMTCtxParameter(&mtctx->params, parameter, value); @@ -601,7 +639,7 @@ static size_t ZSTDMT_compress_advanced_internal( size_t const overlapSize = (overlapRLog>=9) ? 0 : (size_t)1 << (params.cParams.windowLog - overlapRLog); unsigned nbChunks = computeNbChunks(srcSize, params.cParams.windowLog, params.nbThreads); size_t const proposedChunkSize = (srcSize + (nbChunks-1)) / nbChunks; - size_t const avgChunkSize = ((proposedChunkSize & 0x1FFFF) < 0x7FFF) ? proposedChunkSize + 0xFFFF : proposedChunkSize; /* avoid too small last block */ + size_t const avgChunkSize = (((proposedChunkSize-1) & 0x1FFFF) < 0x7FFF) ? proposedChunkSize + 0xFFFF : proposedChunkSize; /* avoid too small last block */ const char* const srcStart = (const char*)src; size_t remainingSrcSize = srcSize; unsigned const compressWithinDst = (dstCapacity >= ZSTD_compressBound(srcSize)) ? nbChunks : (unsigned)(dstCapacity / ZSTD_compressBound(avgChunkSize)); /* presumes avgChunkSize >= 256 KB, which should be the case */ @@ -610,7 +648,8 @@ static size_t ZSTDMT_compress_advanced_internal( assert(jobParams.nbThreads == 0); assert(mtctx->cctxPool->totalCCtx == params.nbThreads); - DEBUGLOG(4, "nbChunks : %2u (chunkSize : %u bytes) ", nbChunks, (U32)avgChunkSize); + DEBUGLOG(4, "ZSTDMT_compress_advanced_internal: nbChunks=%2u (rawSize=%u bytes; fixedSize=%u) ", + nbChunks, (U32)proposedChunkSize, (U32)avgChunkSize); if (nbChunks==1) { /* fallback to single-thread mode */ ZSTD_CCtx* const cctx = mtctx->cctxPool->cctx[0]; if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, jobParams.fParams); @@ -639,9 +678,9 @@ static size_t ZSTDMT_compress_advanced_internal( mtctx->jobs[u].src = g_nullBuffer; mtctx->jobs[u].srcStart = srcStart + frameStartPos - dictSize; - mtctx->jobs[u].dictSize = dictSize; + mtctx->jobs[u].prefixSize = dictSize; mtctx->jobs[u].srcSize = chunkSize; - mtctx->jobs[u].cdict = mtctx->nextJobID==0 ? cdict : NULL; + mtctx->jobs[u].cdict = (u==0) ? cdict : NULL; mtctx->jobs[u].fullFrameSize = srcSize; mtctx->jobs[u].params = jobParams; /* do not calculate checksum within sections, but write it in header for first section */ @@ -659,7 +698,7 @@ static size_t ZSTDMT_compress_advanced_internal( XXH64_update(&xxh64, srcStart + frameStartPos, chunkSize); } - DEBUGLOG(5, "posting job %u (%u bytes)", u, (U32)chunkSize); + DEBUGLOG(5, "ZSTDMT_compress_advanced_internal: posting job %u (%u bytes)", u, (U32)chunkSize); DEBUG_PRINTHEX(6, mtctx->jobs[u].srcStart, 12); POOL_add(mtctx->factory, ZSTDMT_compressChunk, &mtctx->jobs[u]); @@ -753,13 +792,14 @@ size_t ZSTDMT_initCStream_internal( const ZSTD_CDict* cdict, ZSTD_CCtx_params params, unsigned long long pledgedSrcSize) { - DEBUGLOG(4, "ZSTDMT_initCStream_internal"); + DEBUGLOG(4, "ZSTDMT_initCStream_internal (pledgedSrcSize=%u)", (U32)pledgedSrcSize); /* params are supposed to be fully validated at this point */ assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams))); assert(!((dict) && (cdict))); /* either dict or cdict, not both */ assert(zcs->cctxPool->totalCCtx == params.nbThreads); + zcs->singleThreaded = (params.nbThreads==1) | (pledgedSrcSize <= ZSTDMT_JOBSIZE_MIN); /* do not trigger multi-threading when srcSize is too small */ - if (params.nbThreads==1) { + if (zcs->singleThreaded) { ZSTD_CCtx_params const singleThreadParams = ZSTDMT_makeJobCCtxParams(params); DEBUGLOG(4, "single thread mode"); assert(singleThreadParams.nbThreads == 0); @@ -767,6 +807,7 @@ size_t ZSTDMT_initCStream_internal( dict, dictSize, cdict, singleThreadParams, pledgedSrcSize); } + DEBUGLOG(4, "multi-threading mode (%u threads)", params.nbThreads); if (zcs->allJobsCompleted == 0) { /* previous compression not correctly finished */ ZSTDMT_waitForAllJobsCompleted(zcs); @@ -777,7 +818,6 @@ size_t ZSTDMT_initCStream_internal( zcs->params = params; zcs->frameContentSize = pledgedSrcSize; if (dict) { - DEBUGLOG(4,"cdictLocal: %08X", (U32)(size_t)zcs->cdictLocal); ZSTD_freeCDict(zcs->cdictLocal); zcs->cdictLocal = ZSTD_createCDict_advanced(dict, dictSize, ZSTD_dlm_byCopy, dictMode, /* note : a loadPrefix becomes an internal CDict */ @@ -785,20 +825,20 @@ size_t ZSTDMT_initCStream_internal( zcs->cdict = zcs->cdictLocal; if (zcs->cdictLocal == NULL) return ERROR(memory_allocation); } else { - DEBUGLOG(4,"cdictLocal: %08X", (U32)(size_t)zcs->cdictLocal); ZSTD_freeCDict(zcs->cdictLocal); zcs->cdictLocal = NULL; zcs->cdict = cdict; } + assert(params.overlapSizeLog <= 9); zcs->targetDictSize = (params.overlapSizeLog==0) ? 0 : (size_t)1 << (params.cParams.windowLog - (9 - params.overlapSizeLog)); - DEBUGLOG(4, "overlapLog : %u ", params.overlapSizeLog); - DEBUGLOG(4, "overlap Size : %u KB", (U32)(zcs->targetDictSize>>10)); + DEBUGLOG(4, "overlapLog=%u => %u KB", params.overlapSizeLog, (U32)(zcs->targetDictSize>>10)); zcs->targetSectionSize = params.jobSize ? params.jobSize : (size_t)1 << (params.cParams.windowLog + 2); - zcs->targetSectionSize = MAX(ZSTDMT_SECTION_SIZE_MIN, zcs->targetSectionSize); - zcs->targetSectionSize = MAX(zcs->targetDictSize, zcs->targetSectionSize); - DEBUGLOG(4, "Section Size : %u KB", (U32)(zcs->targetSectionSize>>10)); + if (zcs->targetSectionSize < ZSTDMT_JOBSIZE_MIN) zcs->targetSectionSize = ZSTDMT_JOBSIZE_MIN; + if (zcs->targetSectionSize < zcs->targetDictSize) zcs->targetSectionSize = zcs->targetDictSize; /* job size must be >= overlap size */ + DEBUGLOG(4, "Job Size : %u KB (note : set to %u)", (U32)(zcs->targetSectionSize>>10), params.jobSize); zcs->inBuffSize = zcs->targetDictSize + zcs->targetSectionSize; + DEBUGLOG(4, "inBuff Size : %u KB", (U32)(zcs->inBuffSize>>10)); ZSTDMT_setBufferSize(zcs->bufPool, MAX(zcs->inBuffSize, ZSTD_compressBound(zcs->targetSectionSize)) ); zcs->inBuff.buffer = g_nullBuffer; zcs->dictSize = 0; @@ -816,7 +856,7 @@ size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize) { ZSTD_CCtx_params cctxParams = mtctx->params; - DEBUGLOG(5, "ZSTDMT_initCStream_advanced"); + DEBUGLOG(5, "ZSTDMT_initCStream_advanced (pledgedSrcSize=%u)", (U32)pledgedSrcSize); cctxParams.cParams = params.cParams; cctxParams.fParams = params.fParams; return ZSTDMT_initCStream_internal(mtctx, dict, dictSize, ZSTD_dm_auto, NULL, @@ -838,9 +878,12 @@ size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx, /* ZSTDMT_resetCStream() : - * pledgedSrcSize is optional and can be zero == unknown */ + * pledgedSrcSize can be zero == unknown (for the time being) + * prefer using ZSTD_CONTENTSIZE_UNKNOWN, + * as `0` might mean "empty" in the future */ size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* zcs, unsigned long long pledgedSrcSize) { + if (!pledgedSrcSize) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN; if (zcs->params.nbThreads==1) return ZSTD_resetCStream(zcs->cctxPool->cctx[0], pledgedSrcSize); return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, 0, zcs->params, @@ -852,7 +895,7 @@ size_t ZSTDMT_initCStream(ZSTDMT_CCtx* zcs, int compressionLevel) { ZSTD_CCtx_params cctxParams = zcs->params; cctxParams.cParams = params.cParams; cctxParams.fParams = params.fParams; - return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, NULL, cctxParams, 0); + return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, NULL, cctxParams, ZSTD_CONTENTSIZE_UNKNOWN); } @@ -860,12 +903,12 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi { unsigned const jobID = zcs->nextJobID & zcs->jobIDMask; - DEBUGLOG(4, "preparing job %u to compress %u bytes with %u preload ", + DEBUGLOG(5, "ZSTDMT_createCompressionJob: preparing job %u to compress %u bytes with %u preload ", zcs->nextJobID, (U32)srcSize, (U32)zcs->dictSize); zcs->jobs[jobID].src = zcs->inBuff.buffer; zcs->jobs[jobID].srcStart = zcs->inBuff.buffer.start; zcs->jobs[jobID].srcSize = srcSize; - zcs->jobs[jobID].dictSize = zcs->dictSize; + zcs->jobs[jobID].prefixSize = zcs->dictSize; assert(zcs->inBuff.filled >= srcSize + zcs->dictSize); zcs->jobs[jobID].params = zcs->params; /* do not calculate checksum within sections, but write it in header for first section */ @@ -911,7 +954,7 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi zcs->params.fParams.checksumFlag = 0; } } - DEBUGLOG(4, "posting job %u : %u bytes (end:%u) (note : doneJob = %u=>%u)", + DEBUGLOG(5, "ZSTDMT_createCompressionJob: posting job %u : %u bytes (end:%u) (note : doneJob = %u=>%u)", zcs->nextJobID, (U32)zcs->jobs[jobID].srcSize, zcs->jobs[jobID].lastChunk, @@ -930,6 +973,7 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsigned blockToFlush) { unsigned const wJobID = zcs->doneJobID & zcs->jobIDMask; + DEBUGLOG(5, "ZSTDMT_flushNextJob"); if (zcs->doneJobID == zcs->nextJobID) return 0; /* all flushed ! */ ZSTD_PTHREAD_MUTEX_LOCK(&zcs->jobCompleted_mutex); while (zcs->jobs[wJobID].jobCompleted==0) { @@ -942,7 +986,8 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi { ZSTDMT_jobDescription job = zcs->jobs[wJobID]; if (!job.jobScanned) { if (ZSTD_isError(job.cSize)) { - DEBUGLOG(5, "compression error detected "); + DEBUGLOG(5, "job %u : compression error detected : %s", + zcs->doneJobID, ZSTD_getErrorName(job.cSize)); ZSTDMT_waitForAllJobsCompleted(zcs); ZSTDMT_releaseAllJobResources(zcs); return job.cSize; @@ -991,15 +1036,18 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx, { size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize; unsigned forwardInputProgress = 0; + DEBUGLOG(5, "ZSTDMT_compressStream_generic "); assert(output->pos <= output->size); assert(input->pos <= input->size); + + if (mtctx->singleThreaded) { /* delegate to single-thread (synchronous) */ + return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp); + } + if ((mtctx->frameEnded) && (endOp==ZSTD_e_continue)) { /* current frame being ended. Only flush/end are allowed */ return ERROR(stage_wrong); } - if (mtctx->params.nbThreads==1) { /* delegate to single-thread (synchronous) */ - return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp); - } /* single-pass shortcut (note : synchronous-mode) */ if ( (mtctx->nextJobID == 0) /* just started */ @@ -1068,32 +1116,34 @@ size_t ZSTDMT_compressStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, ZSTD_inBu } -static size_t ZSTDMT_flushStream_internal(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsigned endFrame) +static size_t ZSTDMT_flushStream_internal(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, unsigned endFrame) { - size_t const srcSize = zcs->inBuff.filled - zcs->dictSize; + size_t const srcSize = mtctx->inBuff.filled - mtctx->dictSize; + DEBUGLOG(5, "ZSTDMT_flushStream_internal"); - if ( ((srcSize > 0) || (endFrame && !zcs->frameEnded)) - && (zcs->nextJobID <= zcs->doneJobID + zcs->jobIDMask) ) { - CHECK_F( ZSTDMT_createCompressionJob(zcs, srcSize, endFrame) ); + if ( ((srcSize > 0) || (endFrame && !mtctx->frameEnded)) + && (mtctx->nextJobID <= mtctx->doneJobID + mtctx->jobIDMask) ) { + DEBUGLOG(5, "ZSTDMT_flushStream_internal : create a new job"); + CHECK_F( ZSTDMT_createCompressionJob(mtctx, srcSize, endFrame) ); } /* check if there is any data available to flush */ - return ZSTDMT_flushNextJob(zcs, output, 1 /* blockToFlush */); + return ZSTDMT_flushNextJob(mtctx, output, 1 /* blockToFlush */); } -size_t ZSTDMT_flushStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output) +size_t ZSTDMT_flushStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output) { DEBUGLOG(5, "ZSTDMT_flushStream"); - if (zcs->params.nbThreads==1) - return ZSTD_flushStream(zcs->cctxPool->cctx[0], output); - return ZSTDMT_flushStream_internal(zcs, output, 0 /* endFrame */); + if (mtctx->singleThreaded) + return ZSTD_flushStream(mtctx->cctxPool->cctx[0], output); + return ZSTDMT_flushStream_internal(mtctx, output, 0 /* endFrame */); } -size_t ZSTDMT_endStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output) +size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output) { DEBUGLOG(4, "ZSTDMT_endStream"); - if (zcs->params.nbThreads==1) - return ZSTD_endStream(zcs->cctxPool->cctx[0], output); - return ZSTDMT_flushStream_internal(zcs, output, 1 /* endFrame */); + if (mtctx->singleThreaded) + return ZSTD_endStream(mtctx->cctxPool->cctx[0], output); + return ZSTDMT_flushStream_internal(mtctx, output, 1 /* endFrame */); } diff --git a/thirdparty/zstd/compress/zstdmt_compress.h b/thirdparty/zstd/compress/zstdmt_compress.h index 8c59c684f1..d12f0adb8d 100644 --- a/thirdparty/zstd/compress/zstdmt_compress.h +++ b/thirdparty/zstd/compress/zstdmt_compress.h @@ -50,7 +50,7 @@ ZSTDLIB_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx, /* === Streaming functions === */ ZSTDLIB_API size_t ZSTDMT_initCStream(ZSTDMT_CCtx* mtctx, int compressionLevel); -ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be zero == unknown */ +ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< if srcSize is not known at reset time, use ZSTD_CONTENTSIZE_UNKNOWN. Note: for compatibility with older programs, 0 means the same as ZSTD_CONTENTSIZE_UNKNOWN, but it may change in the future, to mean "empty" */ ZSTDLIB_API size_t ZSTDMT_compressStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input); @@ -60,8 +60,8 @@ ZSTDLIB_API size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output); /* === Advanced functions and parameters === */ -#ifndef ZSTDMT_SECTION_SIZE_MIN -# define ZSTDMT_SECTION_SIZE_MIN (1U << 20) /* 1 MB - Minimum size of each compression job */ +#ifndef ZSTDMT_JOBSIZE_MIN +# define ZSTDMT_JOBSIZE_MIN (1U << 20) /* 1 MB - Minimum size of each compression job */ #endif ZSTDLIB_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx, @@ -84,13 +84,13 @@ ZSTDLIB_API size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx, /* ZSTDMT_parameter : * List of parameters that can be set using ZSTDMT_setMTCtxParameter() */ typedef enum { - ZSTDMT_p_sectionSize, /* size of input "section". Each section is compressed in parallel. 0 means default, which is dynamically determined within compression functions */ - ZSTDMT_p_overlapSectionLog /* Log of overlapped section; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */ + ZSTDMT_p_jobSize, /* Each job is compressed in parallel. By default, this value is dynamically determined depending on compression parameters. Can be set explicitly here. */ + ZSTDMT_p_overlapSectionLog /* Each job may reload a part of previous job to enhance compressionr ratio; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */ } ZSTDMT_parameter; /* ZSTDMT_setMTCtxParameter() : * allow setting individual parameters, one at a time, among a list of enums defined in ZSTDMT_parameter. - * The function must be called typically after ZSTD_createCCtx(). + * The function must be called typically after ZSTD_createCCtx() but __before ZSTDMT_init*() !__ * Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions. * @return : 0, or an error code (which can be tested using ZSTD_isError()) */ ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, unsigned value); @@ -112,7 +112,15 @@ ZSTDLIB_API size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx, size_t ZSTDMT_CCtxParam_setMTCtxParameter(ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, unsigned value); -size_t ZSTDMT_initializeCCtxParameters(ZSTD_CCtx_params* params, unsigned nbThreads); +/* ZSTDMT_CCtxParam_setNbThreads() + * Set nbThreads, and clamp it correctly, + * also reset jobSize and overlapLog */ +size_t ZSTDMT_CCtxParam_setNbThreads(ZSTD_CCtx_params* params, unsigned nbThreads); + +/* ZSTDMT_getNbThreads(): + * @return nb threads currently active in mtctx. + * mtctx must be valid */ +size_t ZSTDMT_getNbThreads(const ZSTDMT_CCtx* mtctx); /*! ZSTDMT_initCStream_internal() : * Private use only. Init streaming operation. diff --git a/thirdparty/zstd/decompress/zstd_decompress.c b/thirdparty/zstd/decompress/zstd_decompress.c index 96fc609089..a59d944112 100644 --- a/thirdparty/zstd/decompress/zstd_decompress.c +++ b/thirdparty/zstd/decompress/zstd_decompress.c @@ -827,9 +827,9 @@ typedef struct { FSE_DState_t stateOffb; FSE_DState_t stateML; size_t prevOffset[ZSTD_REP_NUM]; - const BYTE* base; + const BYTE* prefixStart; + const BYTE* dictEnd; size_t pos; - uPtrDiff gotoDict; } seqState_t; @@ -1224,8 +1224,9 @@ seq_t ZSTD_decodeSequenceLong(seqState_t* seqState, ZSTD_longOffset_e const long BIT_reloadDStream(&seqState->DStream); { size_t const pos = seqState->pos + seq.litLength; - seq.match = seqState->base + pos - seq.offset; /* single memory segment */ - if (seq.offset > pos) seq.match += seqState->gotoDict; /* separate memory segment */ + const BYTE* const matchBase = (seq.offset > pos) ? seqState->dictEnd : seqState->prefixStart; + seq.match = matchBase + pos - seq.offset; /* note : this operation can overflow when seq.offset is really too large, which can only happen when input is corrupted. + * No consequence though : no memory access will occur, overly large offset will be detected in ZSTD_execSequenceLong() */ seqState->pos = pos + seq.matchLength; } @@ -1243,7 +1244,7 @@ HINT_INLINE size_t ZSTD_execSequenceLong(BYTE* op, BYTE* const oend, seq_t sequence, const BYTE** litPtr, const BYTE* const litLimit, - const BYTE* const base, const BYTE* const vBase, const BYTE* const dictEnd) + const BYTE* const prefixStart, const BYTE* const dictStart, const BYTE* const dictEnd) { BYTE* const oLitEnd = op + sequence.litLength; size_t const sequenceLength = sequence.litLength + sequence.matchLength; @@ -1253,21 +1254,21 @@ size_t ZSTD_execSequenceLong(BYTE* op, const BYTE* match = sequence.match; /* check */ - if (oMatchEnd>oend) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of WILDCOPY_OVERLENGTH from oend */ + if (oMatchEnd > oend) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of WILDCOPY_OVERLENGTH from oend */ if (iLitEnd > litLimit) return ERROR(corruption_detected); /* over-read beyond lit buffer */ - if (oLitEnd>oend_w) return ZSTD_execSequenceLast7(op, oend, sequence, litPtr, litLimit, base, vBase, dictEnd); + if (oLitEnd > oend_w) return ZSTD_execSequenceLast7(op, oend, sequence, litPtr, litLimit, prefixStart, dictStart, dictEnd); /* copy Literals */ - ZSTD_copy8(op, *litPtr); + ZSTD_copy8(op, *litPtr); /* note : op <= oLitEnd <= oend_w == oend - 8 */ if (sequence.litLength > 8) ZSTD_wildcopy(op+8, (*litPtr)+8, sequence.litLength - 8); /* note : since oLitEnd <= oend-WILDCOPY_OVERLENGTH, no risk of overwrite beyond oend */ op = oLitEnd; *litPtr = iLitEnd; /* update for next sequence */ /* copy Match */ - if (sequence.offset > (size_t)(oLitEnd - base)) { + if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { /* offset beyond prefix */ - if (sequence.offset > (size_t)(oLitEnd - vBase)) return ERROR(corruption_detected); + if (sequence.offset > (size_t)(oLitEnd - dictStart)) return ERROR(corruption_detected); if (match + sequence.matchLength <= dictEnd) { memmove(oLitEnd, match, sequence.matchLength); return sequenceLength; @@ -1277,7 +1278,7 @@ size_t ZSTD_execSequenceLong(BYTE* op, memmove(oLitEnd, match, length1); op = oLitEnd + length1; sequence.matchLength -= length1; - match = base; + match = prefixStart; if (op > oend_w || sequence.matchLength < MINMATCH) { U32 i; for (i = 0; i < sequence.matchLength; ++i) op[i] = match[i]; @@ -1331,8 +1332,8 @@ static size_t ZSTD_decompressSequencesLong( BYTE* op = ostart; const BYTE* litPtr = dctx->litPtr; const BYTE* const litEnd = litPtr + dctx->litSize; - const BYTE* const base = (const BYTE*) (dctx->base); - const BYTE* const vBase = (const BYTE*) (dctx->vBase); + const BYTE* const prefixStart = (const BYTE*) (dctx->base); + const BYTE* const dictStart = (const BYTE*) (dctx->vBase); const BYTE* const dictEnd = (const BYTE*) (dctx->dictEnd); int nbSeq; @@ -1353,9 +1354,9 @@ static size_t ZSTD_decompressSequencesLong( int seqNb; dctx->fseEntropy = 1; { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) seqState.prevOffset[i] = dctx->entropy.rep[i]; } - seqState.base = base; - seqState.pos = (size_t)(op-base); - seqState.gotoDict = (uPtrDiff)dictEnd - (uPtrDiff)base; /* cast to avoid undefined behaviour */ + seqState.prefixStart = prefixStart; + seqState.pos = (size_t)(op-prefixStart); + seqState.dictEnd = dictEnd; CHECK_E(BIT_initDStream(&seqState.DStream, ip, iend-ip), corruption_detected); FSE_initDState(&seqState.stateLL, &seqState.DStream, dctx->LLTptr); FSE_initDState(&seqState.stateOffb, &seqState.DStream, dctx->OFTptr); @@ -1370,9 +1371,9 @@ static size_t ZSTD_decompressSequencesLong( /* decode and decompress */ for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && seqNb<nbSeq ; seqNb++) { seq_t const sequence = ZSTD_decodeSequenceLong(&seqState, isLongOffset); - size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd); + size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd); if (ZSTD_isError(oneSeqSize)) return oneSeqSize; - PREFETCH(sequence.match); + PREFETCH(sequence.match); /* note : it's safe to invoke PREFETCH() on any memory address, including invalid ones */ sequences[seqNb&STOSEQ_MASK] = sequence; op += oneSeqSize; } @@ -1381,7 +1382,7 @@ static size_t ZSTD_decompressSequencesLong( /* finish queue */ seqNb -= seqAdvance; for ( ; seqNb<nbSeq ; seqNb++) { - size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[seqNb&STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd); + size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[seqNb&STOSEQ_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd); if (ZSTD_isError(oneSeqSize)) return oneSeqSize; op += oneSeqSize; } @@ -2450,14 +2451,16 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB return ZSTD_decompressLegacyStream(zds->legacyContext, legacyVersion, output, input); } #endif - return hSize; /* error */ + return hSize; /* error */ } if (hSize != 0) { /* need more input */ size_t const toLoad = hSize - zds->lhSize; /* if hSize!=0, hSize > zds->lhSize */ - if (toLoad > (size_t)(iend-ip)) { /* not enough input to load full header */ - if (iend-ip > 0) { - memcpy(zds->headerBuffer + zds->lhSize, ip, iend-ip); - zds->lhSize += iend-ip; + size_t const remainingInput = (size_t)(iend-ip); + assert(iend >= ip); + if (toLoad > remainingInput) { /* not enough input to load full header */ + if (remainingInput > 0) { + memcpy(zds->headerBuffer + zds->lhSize, ip, remainingInput); + zds->lhSize += remainingInput; } input->pos = input->size; return (MAX(ZSTD_frameHeaderSize_min, hSize) - zds->lhSize) + ZSTD_blockHeaderSize; /* remaining header bytes + next block header */ @@ -2472,8 +2475,10 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB && (U64)(size_t)(oend-op) >= zds->fParams.frameContentSize) { size_t const cSize = ZSTD_findFrameCompressedSize(istart, iend-istart); if (cSize <= (size_t)(iend-istart)) { + /* shortcut : using single-pass mode */ size_t const decompressedSize = ZSTD_decompress_usingDDict(zds, op, oend-op, istart, cSize, zds->ddict); if (ZSTD_isError(decompressedSize)) return decompressedSize; + DEBUGLOG(4, "shortcut to single-pass ZSTD_decompress_usingDDict()") ip = istart + cSize; op += decompressedSize; zds->expected = 0; @@ -2496,8 +2501,9 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB } /* control buffer memory usage */ - DEBUGLOG(4, "Control max buffer memory usage (max %u KB)", - (U32)(zds->maxWindowSize >> 10)); + DEBUGLOG(4, "Control max memory usage (%u KB <= max %u KB)", + (U32)(zds->fParams.windowSize >>10), + (U32)(zds->maxWindowSize >> 10) ); zds->fParams.windowSize = MAX(zds->fParams.windowSize, 1U << ZSTD_WINDOWLOG_ABSOLUTEMIN); if (zds->fParams.windowSize > zds->maxWindowSize) return ERROR(frameParameter_windowTooLarge); @@ -2555,17 +2561,21 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB /* fall-through */ case zdss_load: { size_t const neededInSize = ZSTD_nextSrcSizeToDecompress(zds); - size_t const toLoad = neededInSize - zds->inPos; /* should always be <= remaining space within inBuff */ + size_t const toLoad = neededInSize - zds->inPos; + int const isSkipFrame = ZSTD_isSkipFrame(zds); size_t loadedSize; - if (toLoad > zds->inBuffSize - zds->inPos) return ERROR(corruption_detected); /* should never happen */ - loadedSize = ZSTD_limitCopy(zds->inBuff + zds->inPos, toLoad, ip, iend-ip); + if (isSkipFrame) { + loadedSize = MIN(toLoad, (size_t)(iend-ip)); + } else { + if (toLoad > zds->inBuffSize - zds->inPos) return ERROR(corruption_detected); /* should never happen */ + loadedSize = ZSTD_limitCopy(zds->inBuff + zds->inPos, toLoad, ip, iend-ip); + } ip += loadedSize; zds->inPos += loadedSize; if (loadedSize < toLoad) { someMoreWork = 0; break; } /* not enough input, wait for more */ /* decode loaded input */ - { const int isSkipFrame = ZSTD_isSkipFrame(zds); - size_t const decodedSize = ZSTD_decompressContinue(zds, + { size_t const decodedSize = ZSTD_decompressContinue(zds, zds->outBuff + zds->outStart, zds->outBuffSize - zds->outStart, zds->inBuff, neededInSize); if (ZSTD_isError(decodedSize)) return decodedSize; diff --git a/thirdparty/zstd/zstd.h b/thirdparty/zstd/zstd.h index 2194a3b23d..9ac0a73dce 100644 --- a/thirdparty/zstd/zstd.h +++ b/thirdparty/zstd/zstd.h @@ -59,7 +59,7 @@ extern "C" { /*------ Version ------*/ #define ZSTD_VERSION_MAJOR 1 #define ZSTD_VERSION_MINOR 3 -#define ZSTD_VERSION_RELEASE 2 +#define ZSTD_VERSION_RELEASE 3 #define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE) ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< useful to check dll version */ @@ -131,7 +131,7 @@ ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void* src, size_t /*====== Helper functions ======*/ -#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < 128 KB) ? ((128 KB - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */ +#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < (128<<10)) ? (((128<<10) - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */ ZSTDLIB_API size_t ZSTD_compressBound(size_t srcSize); /*!< maximum compressed size in worst case scenario */ ZSTDLIB_API unsigned ZSTD_isError(size_t code); /*!< tells if a `size_t` function result is an error code */ ZSTDLIB_API const char* ZSTD_getErrorName(size_t code); /*!< provides readable string from an error code */ @@ -432,12 +432,12 @@ typedef struct { typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params; -/*= Custom memory allocation functions */ +/*--- Custom memory allocation functions ---*/ typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size); typedef void (*ZSTD_freeFunction) (void* opaque, void* address); typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree; void* opaque; } ZSTD_customMem; /* use this constant to defer to stdlib's functions */ -static const ZSTD_customMem ZSTD_defaultCMem = { NULL, NULL, NULL }; +static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /*************************************** @@ -446,7 +446,7 @@ static const ZSTD_customMem ZSTD_defaultCMem = { NULL, NULL, NULL }; /*! ZSTD_findFrameCompressedSize() : * `src` should point to the start of a ZSTD encoded frame or skippable frame - * `srcSize` must be at least as large as the frame + * `srcSize` must be >= first frame size * @return : the compressed size of the first frame starting at `src`, * suitable to pass to `ZSTD_decompress` or similar, * or an error code if input is invalid */ @@ -557,7 +557,8 @@ ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem); * It must outlive context usage. * workspaceSize: Use ZSTD_estimateCCtxSize() or ZSTD_estimateCStreamSize() * to determine how large workspace must be to support scenario. - * @return : pointer to ZSTD_CCtx*, or NULL if error (size too small) + * @return : pointer to ZSTD_CCtx* (same address as workspace, but different type), + * or NULL if error (typically size too small) * Note : zstd will never resize nor malloc() when using a static cctx. * If it needs more memory than available, it will simply error out. * Note 2 : there is no corresponding "free" function. @@ -587,7 +588,7 @@ ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictS ZSTD_compressionParameters cParams, ZSTD_customMem customMem); -/*! ZSTD_initStaticCDict_advanced() : +/*! ZSTD_initStaticCDict() : * Generate a digested dictionary in provided memory area. * workspace: The memory area to emplace the dictionary into. * Provided pointer must 8-bytes aligned. @@ -596,7 +597,8 @@ ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictS * to determine how large workspace must be. * cParams : use ZSTD_getCParams() to transform a compression level * into its relevants cParams. - * @return : pointer to ZSTD_CDict*, or NULL if error (size too small) + * @return : pointer to ZSTD_CDict* (same address as workspace, but different type), + * or NULL if error (typically, size too small). * Note : there is no corresponding "free" function. * Since workspace was allocated externally, it must be freed externally. */ @@ -613,7 +615,7 @@ ZSTDLIB_API ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, uns /*! ZSTD_getParams() : * same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. -* All fields of `ZSTD_frameParameters` are set to default (0) */ +* All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 */ ZSTDLIB_API ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); /*! ZSTD_checkCParams() : @@ -660,7 +662,8 @@ ZSTDLIB_API ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem); * It must outlive context usage. * workspaceSize: Use ZSTD_estimateDCtxSize() or ZSTD_estimateDStreamSize() * to determine how large workspace must be to support scenario. - * @return : pointer to ZSTD_DCtx*, or NULL if error (size too small) + * @return : pointer to ZSTD_DCtx* (same address as workspace, but different type), + * or NULL if error (typically size too small) * Note : zstd will never resize nor malloc() when using a static dctx. * If it needs more memory than available, it will simply error out. * Note 2 : static dctx is incompatible with legacy support @@ -731,20 +734,22 @@ ZSTDLIB_API unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); /*===== Advanced Streaming compression functions =====*/ ZSTDLIB_API ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem); ZSTDLIB_API ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticCCtx() */ -ZSTDLIB_API size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct, a size of 0 means unknown. for a frame size of 0 use initCStream_advanced */ +ZSTDLIB_API size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct. If it is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN. Note that, for compatibility with older programs, "0" also disables frame content size field. It may be enabled in the future. */ ZSTDLIB_API size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel); /**< creates of an internal CDict (incompatible with static CCtx), except if dict == NULL or dictSize < 8, in which case no dict is used. Note: dict is loaded with ZSTD_dm_auto (treated as a full zstd dictionary if it begins with ZSTD_MAGIC_DICTIONARY, else as raw content) and ZSTD_dlm_byCopy.*/ ZSTDLIB_API size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, const void* dict, size_t dictSize, - ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be 0 (meaning unknown). note: if the contentSizeFlag is set, pledgedSrcSize == 0 means the source size is actually 0. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */ + ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct. If srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */ ZSTDLIB_API size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict); /**< note : cdict will just be referenced, and must outlive compression session */ -ZSTDLIB_API size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize); /**< same as ZSTD_initCStream_usingCDict(), with control over frame parameters */ +ZSTDLIB_API size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize); /**< same as ZSTD_initCStream_usingCDict(), with control over frame parameters. pledgedSrcSize must be correct. If srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. */ /*! ZSTD_resetCStream() : * start a new compression job, using same parameters from previous job. * This is typically useful to skip dictionary loading stage, since it will re-use it in-place.. * Note that zcs must be init at least once before using ZSTD_resetCStream(). - * pledgedSrcSize==0 means "srcSize unknown". + * If pledgedSrcSize is not known at reset time, use macro ZSTD_CONTENTSIZE_UNKNOWN. * If pledgedSrcSize > 0, its value must be correct, as it will be written in header, and controlled at the end. - * @return : 0, or an error code (which can be tested using ZSTD_isError()) */ + * For the time being, pledgedSrcSize==0 is interpreted as "srcSize unknown" for compatibility with older programs, + * but it may change to mean "empty" in some future version, so prefer using macro ZSTD_CONTENTSIZE_UNKNOWN. + * @return : 0, or an error code (which can be tested using ZSTD_isError()) */ ZSTDLIB_API size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize); @@ -800,10 +805,10 @@ ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); /**< re-use decompress /*===== Buffer-less streaming compression functions =====*/ ZSTDLIB_API size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel); ZSTDLIB_API size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel); -ZSTDLIB_API size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be 0 (meaning unknown). note: if the contentSizeFlag is set, pledgedSrcSize == 0 means the source size is actually 0 */ +ZSTDLIB_API size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize : If srcSize is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN */ ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); /**< note: fails if cdict==NULL */ -ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize); /* compression parameters are already set within cdict. pledgedSrcSize=0 means null-size */ -ZSTDLIB_API size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned long long pledgedSrcSize); /**< note: if pledgedSrcSize can be 0, indicating unknown size. if it is non-zero, it must be accurate. for 0 size frames, use compressBegin_advanced */ +ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize); /* compression parameters are already set within cdict. pledgedSrcSize must be correct. If srcSize is not known, use macro ZSTD_CONTENTSIZE_UNKNOWN */ +ZSTDLIB_API size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned long long pledgedSrcSize); /**< note: if pledgedSrcSize is not known, use ZSTD_CONTENTSIZE_UNKNOWN */ ZSTDLIB_API size_t ZSTD_compressContinue(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); @@ -1000,18 +1005,19 @@ typedef enum { * Special: value 0 means "do not change strategy". */ /* frame parameters */ - ZSTD_p_contentSizeFlag=200, /* Content size is written into frame header _whenever known_ (default:1) - * note that content size must be known at the beginning, - * it is sent using ZSTD_CCtx_setPledgedSrcSize() */ + ZSTD_p_contentSizeFlag=200, /* Content size will be written into frame header _whenever known_ (default:1) + * Content size must be known at the beginning of compression, + * it is provided using ZSTD_CCtx_setPledgedSrcSize() */ ZSTD_p_checksumFlag, /* A 32-bits checksum of content is written at end of frame (default:0) */ - ZSTD_p_dictIDFlag, /* When applicable, dictID of dictionary is provided in frame header (default:1) */ + ZSTD_p_dictIDFlag, /* When applicable, dictionary's ID is written into frame header (default:1) */ /* multi-threading parameters */ ZSTD_p_nbThreads=400, /* Select how many threads a compression job can spawn (default:1) * More threads improve speed, but also increase memory usage. * Can only receive a value > 1 if ZSTD_MULTITHREAD is enabled. * Special: value 0 means "do not change nbThreads" */ - ZSTD_p_jobSize, /* Size of a compression job. Each compression job is completed in parallel. + ZSTD_p_jobSize, /* Size of a compression job. This value is only enforced in streaming (non-blocking) mode. + * Each compression job is completed in parallel, so indirectly controls the nb of active threads. * 0 means default, which is dynamically determined based on compression parameters. * Job size must be a minimum of overlapSize, or 1 KB, whichever is largest * The minimum size is automatically and transparently enforced */ @@ -1057,7 +1063,8 @@ typedef enum { /*! ZSTD_CCtx_setParameter() : * Set one compression parameter, selected by enum ZSTD_cParameter. * Note : when `value` is an enum, cast it to unsigned for proper type checking. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). */ + * @result : informational value (typically, the one being set, possibly corrected), + * or an error code (which can be tested with ZSTD_isError()). */ ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value); /*! ZSTD_CCtx_setPledgedSrcSize() : @@ -1066,7 +1073,7 @@ ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param * @result : 0, or an error code (which can be tested with ZSTD_isError()). * Note 1 : 0 means zero, empty. * In order to mean "unknown content size", pass constant ZSTD_CONTENTSIZE_UNKNOWN. - * Note that ZSTD_CONTENTSIZE_UNKNOWN is default value for new compression jobs. + * ZSTD_CONTENTSIZE_UNKNOWN is default value for any new compression job. * Note 2 : If all data is provided and consumed in a single round, * this value is overriden by srcSize instead. */ ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); @@ -1138,13 +1145,19 @@ typedef enum { * - Compression parameters cannot be changed once compression is started. * - outpot->pos must be <= dstCapacity, input->pos must be <= srcSize * - outpot->pos and input->pos will be updated. They are guaranteed to remain below their respective limit. - * - @return provides the minimum amount of data still to flush from internal buffers + * - In single-thread mode (default), function is blocking : it completed its job before returning to caller. + * - In multi-thread mode, function is non-blocking : it just acquires a copy of input, and distribute job to internal worker threads, + * and then immediately returns, just indicating that there is some data remaining to be flushed. + * The function nonetheless guarantees forward progress : it will return only after it reads or write at least 1+ byte. + * - Exception : in multi-threading mode, if the first call requests a ZSTD_e_end directive, it is blocking : it will complete compression before giving back control to caller. + * - @return provides the minimum amount of data remaining to be flushed from internal buffers * or an error code, which can be tested using ZSTD_isError(). - * if @return != 0, flush is not fully completed, there is some data left within internal buffers. - * - after a ZSTD_e_end directive, if internal buffer is not fully flushed, + * if @return != 0, flush is not fully completed, there is still some data left within internal buffers. + * This is useful to determine if a ZSTD_e_flush or ZSTD_e_end directive is completed. + * - after a ZSTD_e_end directive, if internal buffer is not fully flushed (@return != 0), * only ZSTD_e_end or ZSTD_e_flush operations are allowed. - * It is necessary to fully flush internal buffers - * before starting a new compression job, or changing compression parameters. + * Before starting a new compression job, or changing compression parameters, + * it is required to fully flush internal buffers. */ ZSTDLIB_API size_t ZSTD_compress_generic (ZSTD_CCtx* cctx, ZSTD_outBuffer* output, diff --git a/version.py b/version.py index cce155c9af..0eff47acdc 100644 --- a/version.py +++ b/version.py @@ -1,6 +1,6 @@ short_name = "godot" name = "Godot Engine" major = 3 -minor = 0 -status = "beta" +minor = 1 +status = "dev" module_config = "" |